Module Name:    src
Committed By:   mrg
Date:           Tue Oct  1 21:17:28 UTC 2019

Modified Files:
        src/external/gpl3/gcc/dist/gcc: Makefile.in file-prefix-map.c final.c
        src/external/gpl3/gcc/dist/gcc/c-family: c-opts.c

Log Message:
merge debug/file prefix/merge stuff with upstream, which has gained
a lot of the same features.  builds, but may not actually run right.
adjust for add_path()'s SYSTEM -> INC_SYSTEM.


To generate a diff of this commit:
cvs rdiff -u -r1.18 -r1.19 src/external/gpl3/gcc/dist/gcc/Makefile.in
cvs rdiff -u -r1.1.1.1 -r1.2 src/external/gpl3/gcc/dist/gcc/file-prefix-map.c
cvs rdiff -u -r1.10 -r1.11 src/external/gpl3/gcc/dist/gcc/final.c
cvs rdiff -u -r1.8 -r1.9 src/external/gpl3/gcc/dist/gcc/c-family/c-opts.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/external/gpl3/gcc/dist/gcc/Makefile.in
diff -u src/external/gpl3/gcc/dist/gcc/Makefile.in:1.18 src/external/gpl3/gcc/dist/gcc/Makefile.in:1.19
--- src/external/gpl3/gcc/dist/gcc/Makefile.in:1.18	Tue Oct  1 10:38:16 2019
+++ src/external/gpl3/gcc/dist/gcc/Makefile.in	Tue Oct  1 21:17:27 2019
@@ -1955,6 +1955,7 @@ CPP_SELFTEST_DEPS = cc1plus$(exeext) $(S
 selftest: s-selftest-c
 
 # C selftests
+C_SELFTEST_DEPS = 
 s-selftest-c: $(C_SELFTEST_DEPS)
 	@echo "NOT REBUILDING $@"
 NetBSD_DISABLED_s-selftest:

Index: src/external/gpl3/gcc/dist/gcc/file-prefix-map.c
diff -u src/external/gpl3/gcc/dist/gcc/file-prefix-map.c:1.1.1.1 src/external/gpl3/gcc/dist/gcc/file-prefix-map.c:1.2
--- src/external/gpl3/gcc/dist/gcc/file-prefix-map.c:1.1.1.1	Tue Oct  1 09:36:24 2019
+++ src/external/gpl3/gcc/dist/gcc/file-prefix-map.c	Tue Oct  1 21:17:28 2019
@@ -123,6 +123,7 @@ remap_macro_filename (const char *filena
   return remap_filename (macro_prefix_maps, filename);
 }
 
+#ifndef __NetBSD__
 /* Remap using -fdebug-prefix-map.  Return the GC-allocated new name
    corresponding to FILENAME or FILENAME if no remapping was performed.  */
 const char *
@@ -130,3 +131,111 @@ remap_debug_filename (const char *filena
 {
   return remap_filename (debug_prefix_maps, filename);
 }
+#else
+
+/* Perform user-specified mapping of debug filename prefixes.  Return
+   the new name corresponding to FILENAME.  */
+
+static const char *
+remap_debug_prefix_filename (const char *filename)
+{
+  file_prefix_map *map;
+  char *s;
+  const char *name;
+  size_t name_len;
+
+  for (map = debug_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 ggc_strdup (s);
+}
+
+#include <regex.h>
+
+typedef struct debug_regex_map
+{
+  regex_t re;
+  const char *sub;
+  struct debug_regex_map *next;
+} debug_regex_map;
+
+/* Linked list of such structures.  */
+debug_regex_map *debug_regex_maps;
+
+
+/* Record a debug file regex mapping.  ARG is the argument to
+   -fdebug-regex-map and must be of the form OLD=NEW.  */
+
+void
+add_debug_regex_map (const char *arg)
+{
+  debug_regex_map *map;
+  const char *p;
+  char *old;
+  char buf[1024];
+  regex_t re;
+  int e;
+
+  p = strchr (arg, '=');
+  if (!p)
+    {
+      error ("invalid argument %qs to -fdebug-regex-map", arg);
+      return;
+    }
+  
+  old = xstrndup (arg, p - arg);
+  if ((e = regcomp(&re, old, REG_EXTENDED)) != 0)
+    {
+      regerror(e, &re, buf, sizeof(buf));
+      warning (0, "regular expression compilation for %qs in argument to "
+	       "-fdebug-regex-map failed: %qs", old, buf);
+      free(old);
+      return;
+    }
+  free(old);
+
+  map = XNEW (debug_regex_map);
+  map->re = re;
+  p++;
+  map->sub = xstrdup (p);
+  map->next = debug_regex_maps;
+  debug_regex_maps = map;
+}
+
+extern "C" ssize_t regasub(char **, const char *,
+  const regmatch_t *rm, const char *);
+
+/* Perform user-specified mapping of debug filename regular expressions.  Return
+   the new name corresponding to FILENAME.  */
+
+static const char *
+remap_debug_regex_filename (const char *filename)
+{
+  debug_regex_map *map;
+  char *s;
+  regmatch_t rm[10];
+
+  for (map = debug_regex_maps; map; map = map->next)
+    if (regexec (&map->re, filename, 10, rm, 0) == 0
+       && regasub (&s, map->sub, rm, filename) >= 0)
+      {
+	 const char *name = ggc_strdup(s);
+	 free(s);
+	 return name;
+      }
+  return filename;
+}
+
+const char *
+remap_debug_filename (const char *filename)
+{
+   return remap_debug_regex_filename (remap_debug_prefix_filename (filename));
+}
+#endif

Index: src/external/gpl3/gcc/dist/gcc/final.c
diff -u src/external/gpl3/gcc/dist/gcc/final.c:1.10 src/external/gpl3/gcc/dist/gcc/final.c:1.11
--- src/external/gpl3/gcc/dist/gcc/final.c:1.10	Tue Oct  1 10:38:16 2019
+++ src/external/gpl3/gcc/dist/gcc/final.c	Tue Oct  1 21:17:28 2019
@@ -1508,177 +1508,6 @@ asm_str_count (const char *templ)
   return count;
 }
 
-/* ??? This is probably the wrong place for these.  */
-/* Structure recording the mapping from source file and directory
-   names at compile time to those to be embedded in debug
-   information.  */
-struct debug_prefix_map
-{
-  const char *old_prefix;
-  const char *new_prefix;
-  size_t old_len;
-  size_t new_len;
-  struct debug_prefix_map *next;
-};
-
-/* Linked list of such structures.  */
-static debug_prefix_map *debug_prefix_maps;
-
-
-/* Record a debug file prefix mapping.  ARG is the argument to
-   -fdebug-prefix-map and must be of the form OLD=NEW.  */
-
-void
-add_debug_prefix_map (const char *arg)
-{
-  debug_prefix_map *map;
-  const char *p;
-  char *env;
-  const char *old;
-  size_t oldlen;
-
-  p = strchr (arg, '=');
-  if (!p)
-    {
-      error ("invalid argument %qs to -fdebug-prefix-map", arg);
-      return;
-    }
-  if (*arg == '$')
-    {
-      env = xstrndup (arg+1, p - (arg+1));
-      old = getenv(env);
-      if (!old)
-	{
-	  warning (0, "environment variable %qs not set in argument to "
-		   "-fdebug-prefix-map", env);
-	  free(env);
-	  return;
-	}
-      oldlen = strlen(old);
-      free(env);
-    }
-  else
-    {
-      old = xstrndup (arg, p - arg);
-      oldlen = p - arg;
-    }
-
-  map = XNEW (debug_prefix_map);
-  map->old_prefix = old;
-  map->old_len = oldlen;
-  p++;
-  map->new_prefix = xstrdup (p);
-  map->new_len = strlen (p);
-  map->next = debug_prefix_maps;
-  debug_prefix_maps = map;
-}
-
-/* Perform user-specified mapping of debug filename prefixes.  Return
-   the new name corresponding to FILENAME.  */
-
-static const char *
-remap_debug_prefix_filename (const char *filename)
-{
-  debug_prefix_map *map;
-  char *s;
-  const char *name;
-  size_t name_len;
-
-  for (map = debug_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 ggc_strdup (s);
-}
-
-#include <regex.h>
-
-typedef struct debug_regex_map
-{
-  regex_t re;
-  const char *sub;
-  struct debug_regex_map *next;
-} debug_regex_map;
-
-/* Linked list of such structures.  */
-debug_regex_map *debug_regex_maps;
-
-
-/* Record a debug file regex mapping.  ARG is the argument to
-   -fdebug-regex-map and must be of the form OLD=NEW.  */
-
-void
-add_debug_regex_map (const char *arg)
-{
-  debug_regex_map *map;
-  const char *p;
-  char *old;
-  char buf[1024];
-  regex_t re;
-  int e;
-
-  p = strchr (arg, '=');
-  if (!p)
-    {
-      error ("invalid argument %qs to -fdebug-regex-map", arg);
-      return;
-    }
-  
-  old = xstrndup (arg, p - arg);
-  if ((e = regcomp(&re, old, REG_EXTENDED)) != 0)
-    {
-      regerror(e, &re, buf, sizeof(buf));
-      warning (0, "regular expression compilation for %qs in argument to "
-	       "-fdebug-regex-map failed: %qs", old, buf);
-      free(old);
-      return;
-    }
-  free(old);
-
-  map = XNEW (debug_regex_map);
-  map->re = re;
-  p++;
-  map->sub = xstrdup (p);
-  map->next = debug_regex_maps;
-  debug_regex_maps = map;
-}
-
-extern "C" ssize_t regasub(char **, const char *,
-  const regmatch_t *rm, const char *);
-
-/* Perform user-specified mapping of debug filename regular expressions.  Return
-   the new name corresponding to FILENAME.  */
-
-static const char *
-remap_debug_regex_filename (const char *filename)
-{
-  debug_regex_map *map;
-  char *s;
-  regmatch_t rm[10];
-
-  for (map = debug_regex_maps; map; map = map->next)
-    if (regexec (&map->re, filename, 10, rm, 0) == 0
-       && regasub (&s, map->sub, rm, filename) >= 0)
-      {
-	 const char *name = ggc_strdup(s);
-	 free(s);
-	 return name;
-      }
-  return filename;
-}
-
-const char *
-remap_debug_filename (const char *filename)
-{
-   return remap_debug_regex_filename (remap_debug_prefix_filename (filename));
-}
-
 /* Return true if DWARF2 debug info can be emitted for DECL.  */
 
 static bool

Index: src/external/gpl3/gcc/dist/gcc/c-family/c-opts.c
diff -u src/external/gpl3/gcc/dist/gcc/c-family/c-opts.c:1.8 src/external/gpl3/gcc/dist/gcc/c-family/c-opts.c:1.9
--- src/external/gpl3/gcc/dist/gcc/c-family/c-opts.c:1.8	Tue Oct  1 10:38:17 2019
+++ src/external/gpl3/gcc/dist/gcc/c-family/c-opts.c	Tue Oct  1 21:17:28 2019
@@ -305,7 +305,7 @@ c_common_handle_option (size_t scode, co
       break;
 
     case OPT_cxx_isystem:
-      add_path (xstrdup (arg), SYSTEM, 1, true);
+      add_path (xstrdup (arg), INC_SYSTEM, 1, true);
       break;
 
     case OPT_D:

Reply via email to