diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch b/meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch deleted file mode 100644 index 9809a6a222..0000000000 --- a/meta/recipes-devtools/gcc/gcc-4.9/0072-support-ffile-prefix-map.patch +++ /dev/null @@ -1,284 +0,0 @@ -From e863be798ed13312a0faf0b961275f211a8123ab Mon Sep 17 00:00:00 2001 -From: Hongxu Jia <hongxu.jia@windriver.com> -Date: Thu, 17 Mar 2016 00:32:17 -0400 -Subject: [PATCH] gcc/libcpp: support -ffile-prefix-map=<old>=<new> - -Similar -fdebug-prefix-map, add option -ffile-prefix-map to map one -directory name (old) to another (new) in __FILE__, __BASE_FILE__ and -__builtin_FILE (). - -https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70268 - -Upstream-Status: Submitted [gcc-patches@gcc.gnu.org] -Signed-off-by: Hongxu Jia <hongxu.jia@windriver.com> ---- - gcc/c-family/c-opts.c | 6 ++++ - gcc/c-family/c.opt | 4 +++ - gcc/dwarf2out.c | 1 + - gcc/gimplify.c | 2 ++ - libcpp/Makefile.in | 10 +++--- - libcpp/file-map.c | 92 +++++++++++++++++++++++++++++++++++++++++++++++ - libcpp/include/file-map.h | 30 ++++++++++++++++ - libcpp/macro.c | 2 ++ - 8 files changed, 142 insertions(+), 5 deletions(-) - create mode 100644 libcpp/file-map.c - create mode 100644 libcpp/include/file-map.h - -diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c -index dd5fd23..9c004a1 100644 ---- a/gcc/c-family/c-opts.c -+++ b/gcc/c-family/c-opts.c -@@ -36,6 +36,7 @@ along with GCC; see the file COPYING3. If not see - #include "options.h" - #include "plugin.h" /* For PLUGIN_INCLUDE_FILE event. */ - #include "mkdeps.h" -+#include "file-map.h" - #include "c-target.h" - #include "tm.h" /* For BYTES_BIG_ENDIAN, - DOLLARS_IN_IDENTIFIERS, -@@ -553,6 +554,11 @@ c_common_handle_option (size_t scode, const char *arg, int value, - cpp_opts->narrow_charset = arg; - break; - -+ case OPT_ffile_prefix_map_: -+ if (add_file_prefix_map (arg) < 0) -+ error ("invalid argument %qs to -ffile-prefix-map", arg); -+ break; -+ - case OPT_fwide_exec_charset_: - cpp_opts->wide_charset = arg; - break; -diff --git a/gcc/c-family/c.opt b/gcc/c-family/c.opt -index f295805..3a99662 100644 ---- a/gcc/c-family/c.opt -+++ b/gcc/c-family/c.opt -@@ -928,6 +928,10 @@ fexec-charset= - C ObjC C++ ObjC++ Joined RejectNegative - -fexec-charset=<cset> Convert all strings and character constants to character set <cset> - -+ffile-prefix-map= -+C ObjC C++ ObjC++ Joined RejectNegative -+-ffile-prefix-map=<old=new> Map one directory name to another in __FILE__, __BASE_FILE__ and __builtin_FILE () -+ - fextended-identifiers - C ObjC C++ ObjC++ - Permit universal character names (\\u and \\U) in identifiers -diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c -index 99bf6e2..3e58cfd 100644 ---- a/gcc/dwarf2out.c -+++ b/gcc/dwarf2out.c -@@ -19199,6 +19199,7 @@ gen_producer_string (void) - case OPT_fltrans_output_list_: - case OPT_fresolution_: - case OPT_fdebug_prefix_map_: -+ case OPT_ffile_prefix_map_: - /* Ignore these. */ - continue; - default: -diff --git a/gcc/gimplify.c b/gcc/gimplify.c -index 89e7334..a7a97c0 100644 ---- a/gcc/gimplify.c -+++ b/gcc/gimplify.c -@@ -59,6 +59,7 @@ along with GCC; see the file COPYING3. If not see - #include "omp-low.h" - #include "gimple-low.h" - #include "cilk.h" -+#include "file-map.h" - - #include "langhooks-def.h" /* FIXME: for lhd_set_decl_assembler_name */ - #include "tree-pass.h" /* FIXME: only for PROP_gimple_any */ -@@ -2288,6 +2289,7 @@ gimplify_call_expr (tree *expr_p, gimple_seq *pre_p, bool want_value) - case BUILT_IN_FILE: - { - expanded_location loc = expand_location (EXPR_LOCATION (*expr_p)); -+ loc.file = remap_file_filename (loc.file); - *expr_p = build_string_literal (strlen (loc.file) + 1, loc.file); - return GS_OK; - } -diff --git a/libcpp/Makefile.in b/libcpp/Makefile.in -index 5561c97..5017256 100644 ---- a/libcpp/Makefile.in -+++ b/libcpp/Makefile.in -@@ -84,12 +84,12 @@ DEPMODE = $(CXXDEPMODE) - - - libcpp_a_OBJS = charset.o directives.o directives-only.o errors.o \ -- expr.o files.o identifiers.o init.o lex.o line-map.o macro.o \ -- mkdeps.o pch.o symtab.o traditional.o -+ expr.o file-map.o files.o identifiers.o init.o lex.o line-map.o \ -+ macro.o mkdeps.o pch.o symtab.o traditional.o - - libcpp_a_SOURCES = charset.c directives.c directives-only.c errors.c \ -- expr.c files.c identifiers.c init.c lex.c line-map.c macro.c \ -- mkdeps.c pch.c symtab.c traditional.c -+ expr.c file-map.c files.c identifiers.c init.c lex.c line-map.c \ -+ macro.c mkdeps.c pch.c symtab.c traditional.c - - all: libcpp.a $(USED_CATALOGS) - -@@ -263,7 +263,7 @@ po/$(PACKAGE).pot: $(libcpp_a_SOURCES) - - TAGS_SOURCES = $(libcpp_a_SOURCES) internal.h ucnid.h \ - include/line-map.h include/symtab.h include/cpp-id-data.h \ -- include/cpplib.h include/mkdeps.h system.h -+ include/cpplib.h include/mkdeps.h system.h include/file-map.h - - TAGS: $(TAGS_SOURCES) - cd $(srcdir) && etags $(TAGS_SOURCES) -diff --git a/libcpp/file-map.c b/libcpp/file-map.c -new file mode 100644 -index 0000000..04e851b ---- /dev/null -+++ b/libcpp/file-map.c -@@ -0,0 +1,92 @@ -+/* Map one directory name to another in __FILE__, __BASE_FILE__ -+ and __builtin_FILE (). -+ Copyright (C) 2001-2016 Free Software Foundation, Inc. -+ -+This program is free software; you can redistribute it and/or modify it -+under the terms of the GNU General Public License as published by the -+Free Software Foundation; either version 3, or (at your option) any -+later version. -+ -+This program is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; see the file COPYING3. If not see -+<http://www.gnu.org/licenses/>. -+ -+ In other words, you are welcome to use, share and improve this program. -+ You are forbidden to forbid anyone else to use, share and improve -+ what you give them. Help stamp out software-hoarding! */ -+ -+#include "config.h" -+#include "system.h" -+#include "file-map.h" -+ -+/* Structure recording the mapping from source file and directory -+ names at compile time to __FILE__ */ -+typedef struct file_prefix_map -+{ -+ const char *old_prefix; -+ const char *new_prefix; -+ size_t old_len; -+ size_t new_len; -+ struct file_prefix_map *next; -+} file_prefix_map; -+ -+/* Linked list of such structures. */ -+static file_prefix_map *file_prefix_maps; -+ -+/* Record prefix mapping of __FILE__. ARG is the argument to -+ -ffile-prefix-map and must be of the form OLD=NEW. */ -+int -+add_file_prefix_map (const char *arg) -+{ -+ file_prefix_map *map; -+ const char *p; -+ -+ p = strchr (arg, '='); -+ if (!p) -+ { -+ fprintf(stderr, "invalid argument %qs to -ffile-prefix-map", arg); -+ return -1; -+ } -+ map = XNEW (file_prefix_map); -+ map->old_prefix = xstrndup (arg, p - arg); -+ map->old_len = p - arg; -+ p++; -+ map->new_prefix = xstrdup (p); -+ map->new_len = strlen (p); -+ map->next = file_prefix_maps; -+ file_prefix_maps = map; -+ -+ return 0; -+} -+ -+/* Perform user-specified mapping of __FILE__ prefixes. Return -+ the new name corresponding to filename. */ -+ -+const char * -+remap_file_filename (const char *filename) -+{ -+ file_prefix_map *map; -+ char *s; -+ const char *name; -+ size_t name_len; -+ -+ for (map = file_prefix_maps; map; map = map->next) -+ if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0) -+ break; -+ if (!map) -+ return filename; -+ name = filename + map->old_len; -+ name_len = strlen (name) + 1; -+ s = (char *) alloca (name_len + map->new_len); -+ memcpy (s, map->new_prefix, map->new_len); -+ memcpy (s + map->new_len, name, name_len); -+ -+ return xstrdup (s); -+} -+ -+ -diff --git a/libcpp/include/file-map.h b/libcpp/include/file-map.h -new file mode 100644 -index 0000000..e6f8cbf ---- /dev/null -+++ b/libcpp/include/file-map.h -@@ -0,0 +1,30 @@ -+/* Map one directory name to another in __FILE__, __BASE_FILE__ -+ and __builtin_FILE (). -+ Copyright (C) 2001-2016 Free Software Foundation, Inc. -+ -+This program is free software; you can redistribute it and/or modify it -+under the terms of the GNU General Public License as published by the -+Free Software Foundation; either version 3, or (at your option) any -+later version. -+ -+This program is distributed in the hope that it will be useful, -+but WITHOUT ANY WARRANTY; without even the implied warranty of -+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+GNU General Public License for more details. -+ -+You should have received a copy of the GNU General Public License -+along with this program; see the file COPYING3. If not see -+<http://www.gnu.org/licenses/>. -+ -+ In other words, you are welcome to use, share and improve this program. -+ You are forbidden to forbid anyone else to use, share and improve -+ what you give them. Help stamp out software-hoarding! */ -+ -+#ifndef LIBCPP_FILE_MAP_H -+#define LIBCPP_FILE_MAP_H -+ -+const char * remap_file_filename (const char *filename); -+ -+int add_file_prefix_map (const char *arg); -+ -+#endif /* !LIBCPP_FILE_MAP_H */ -diff --git a/libcpp/macro.c b/libcpp/macro.c -index 11e50f4..5c6f90e 100644 ---- a/libcpp/macro.c -+++ b/libcpp/macro.c -@@ -26,6 +26,7 @@ along with this program; see the file COPYING3. If not see - #include "system.h" - #include "cpplib.h" - #include "internal.h" -+#include "file-map.h" - - typedef struct macro_arg macro_arg; - /* This structure represents the tokens of a macro argument. These -@@ -288,6 +289,7 @@ _cpp_builtin_macro_text (cpp_reader *pfile, cpp_hashnode *node) - if (!name) - abort (); - } -+ name = remap_file_filename (name); - len = strlen (name); - buf = _cpp_unaligned_alloc (pfile, len * 2 + 3); - result = buf; --- -1.9.1 - |