From 4eadc99bdd0974761bf48f0fd32994dd9a3ffcfe Mon Sep 17 00:00:00 2001
From: Hongxu Jia <hongxu.jia@windriver.com>
Date: Wed, 16 Mar 2016 02:27:43 -0400
Subject: [PATCH 41/47] 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     | 13 +++++++
 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, 149 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 ea0e01b101c..a741c75a78f 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -39,6 +39,14 @@ along with GCC; see the file COPYING3.  If not see
 #include "opts.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,
+				   STDC_0_IN_SYSTEM_HEADERS,
+				   TARGET_FLT_EVAL_METHOD_NON_DEFAULT and
+				   TARGET_OPTF.  */
+#include "tm_p.h"		/* For C_COMMON_OVERRIDE_OPTIONS.  */
 #include "dumpfile.h"
 
 #ifndef DOLLARS_IN_IDENTIFIERS
@@ -517,6 +525,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 c4ef7796282..73333dfd57c 100644
--- a/gcc/c-family/c.opt
+++ b/gcc/c-family/c.opt
@@ -1372,6 +1372,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 98c51576ec2..762f69ae88e 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -23421,6 +23421,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 fd27eb1523f..5542b379f28 100644
--- a/gcc/gimplify.c
+++ b/gcc/gimplify.c
@@ -58,6 +58,8 @@ along with GCC; see the file COPYING3.  If not see
 #include "gomp-constants.h"
 #include "tree-dump.h"
 #include "gimple-walk.h"
+#include "file-map.h"
+
 #include "langhooks-def.h"	/* FIXME: for lhd_set_decl_assembler_name */
 #include "builtins.h"
 #include "asan.h"
diff --git a/libcpp/Makefile.in b/libcpp/Makefile.in
index 0bd3787c25e..d3b52956b52 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 00000000000..18035ef6a72
--- /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 00000000000..87503152d27
--- /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 de18c2210cf..2748c70d520 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
@@ -301,6 +302,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;
-- 
2.12.2

