···
-
From b10785c1be469319a09b10bc69db21159b0599ee Mon Sep 17 00:00:00 2001
From: Sergei Trofimovich <siarheit@google.com>
Date: Fri, 22 Sep 2023 22:41:49 +0100
Subject: [PATCH] gcc/file-prefix-map.cc: always mangle __FILE__ into invalid
···
For this reason we want to remove the occurrences of hashes in the
expansion of `__FILE__`. `nuke-references` does it by replacing hashes
-
by `eeeeee...` but those paths are also used for debug symbols. It is
-
handy to be able to invert the transformation to go back to the original
-
store path for debuginfod servers. The chosen solution is to make the
- it does not trigger runtime references (except for all digit hashes,
which are unlikely enough)
···
--- a/gcc/file-prefix-map.cc
+++ b/gcc/file-prefix-map.cc
-
@@ -60,6 +60,9 @@ add_prefix_map (file_prefix_map *&maps, const char *arg, const char *opt)
-
+/* Forward declaration for a $NIX_STORE remap hack below. */
-
+static file_prefix_map *macro_prefix_maps; /* -fmacro-prefix-map */
-
/* Perform user-specified mapping of filename prefixes. Return the
-
GC-allocated new name corresponding to FILENAME or FILENAME if no
remapping was performed. */
-
@@ -76,7 +79,31 @@ remap_filename (file_prefix_map *maps, const char *filename)
if (filename_ncmp (filename, map->old_prefix, map->old_len) == 0)
-
+ if (maps == macro_prefix_maps)
+ /* Remap the 32 characters after $NIX_STORE/ to uppercase
···
+ s = (char *) ggc_alloc_atomic (name_len + 1);
+ memcpy(s, name, name_len + 1);
-
+ for (int i = nix_store_len + 1; i < nix_store_len + 1 + 32; i++) {
···
name = filename + map->old_len;
name_len = strlen (name) + 1;
-
@@ -90,7 +117,6 @@ remap_filename (file_prefix_map *maps, const char *filename)
-
ignore it in DW_AT_producer (dwarf2out.cc). */
-
/* Linked lists of file_prefix_map structures. */
-
-static file_prefix_map *macro_prefix_maps; /* -fmacro-prefix-map */
-
static file_prefix_map *debug_prefix_maps; /* -fdebug-prefix-map */
-
static file_prefix_map *profile_prefix_maps; /* -fprofile-prefix-map */