Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/external/gpl3/gcc/dist/gcc merge debug/file prefix/merge stu...
details: https://anonhg.NetBSD.org/src/rev/bbab541a670f
branches: trunk
changeset: 464295:bbab541a670f
user: mrg <mrg%NetBSD.org@localhost>
date: Tue Oct 01 21:17:27 2019 +0000
description:
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.
diffstat:
external/gpl3/gcc/dist/gcc/Makefile.in | 1 +
external/gpl3/gcc/dist/gcc/c-family/c-opts.c | 2 +-
external/gpl3/gcc/dist/gcc/file-prefix-map.c | 109 +++++++++++++++++
external/gpl3/gcc/dist/gcc/final.c | 171 ---------------------------
4 files changed, 111 insertions(+), 172 deletions(-)
diffs (truncated from 327 to 300 lines):
diff -r 1f772a784380 -r bbab541a670f external/gpl3/gcc/dist/gcc/Makefile.in
--- a/external/gpl3/gcc/dist/gcc/Makefile.in Tue Oct 01 21:13:43 2019 +0000
+++ b/external/gpl3/gcc/dist/gcc/Makefile.in Tue Oct 01 21:17:27 2019 +0000
@@ -1955,6 +1955,7 @@
selftest: s-selftest-c
# C selftests
+C_SELFTEST_DEPS =
s-selftest-c: $(C_SELFTEST_DEPS)
@echo "NOT REBUILDING $@"
NetBSD_DISABLED_s-selftest:
diff -r 1f772a784380 -r bbab541a670f external/gpl3/gcc/dist/gcc/c-family/c-opts.c
--- a/external/gpl3/gcc/dist/gcc/c-family/c-opts.c Tue Oct 01 21:13:43 2019 +0000
+++ b/external/gpl3/gcc/dist/gcc/c-family/c-opts.c Tue Oct 01 21:17:27 2019 +0000
@@ -305,7 +305,7 @@
break;
case OPT_cxx_isystem:
- add_path (xstrdup (arg), SYSTEM, 1, true);
+ add_path (xstrdup (arg), INC_SYSTEM, 1, true);
break;
case OPT_D:
diff -r 1f772a784380 -r bbab541a670f external/gpl3/gcc/dist/gcc/file-prefix-map.c
--- a/external/gpl3/gcc/dist/gcc/file-prefix-map.c Tue Oct 01 21:13:43 2019 +0000
+++ b/external/gpl3/gcc/dist/gcc/file-prefix-map.c Tue Oct 01 21:17:27 2019 +0000
@@ -123,6 +123,7 @@
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 @@
{
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
diff -r 1f772a784380 -r bbab541a670f external/gpl3/gcc/dist/gcc/final.c
--- a/external/gpl3/gcc/dist/gcc/final.c Tue Oct 01 21:13:43 2019 +0000
+++ b/external/gpl3/gcc/dist/gcc/final.c Tue Oct 01 21:17:27 2019 +0000
@@ -1508,177 +1508,6 @@
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. */
-
Home |
Main Index |
Thread Index |
Old Index