On Wed, 26 Feb 2020, Jason Merrill wrote:
> On 2/21/20 5:02 AM, Richard Biener wrote:
> > This applies file mapping when emitting the directory table
> > directly instead of using the assemblers .file directive where
> > we already correctly apply the map. Notably the non-assembler
> > path is used for the early debug emission for LTO.
> >
> > Bootstrapped and tested on x86_64-unknown-linux-gnu.
> >
> > OK for trunk?
>
> OK.
I've pushed this variant which makes sure to apply -fdebug-prefix-map
and friends consistently for LTO in locations as well.
Bootstrapped / tested on x86_64-unknown-linux-gnu.
Richard.
2020-02-26 Mark Williams
* dwarf2out.c (file_name_acquire): Call remap_debug_filename.
* lto-opts.c (lto_write_options): Drop -fdebug-prefix-map,
-ffile-prefix-map and -fmacro-prefix-map.
* lto-streamer-out.c: Include file-prefix-map.h.
(lto_output_location): Remap the file part of locations.
diff --git a/gcc/dwarf2out.c b/gcc/dwarf2out.c
index 8da1ad053f6..38b16add568 100644
--- a/gcc/dwarf2out.c
+++ b/gcc/dwarf2out.c
@@ -12205,8 +12205,9 @@ file_name_acquire (dwarf_file_data **slot,
file_name_acquire_data *fnad)
fi = fnad->files + fnad->used_files++;
+ f = remap_debug_filename (d->filename);
+
/* Skip all leading "./". */
- f = d->filename;
while (f[0] == '.' && IS_DIR_SEPARATOR (f[1]))
f += 2;
diff --git a/gcc/lto-opts.c b/gcc/lto-opts.c
index 87e916a2741..2512560cc6d 100644
--- a/gcc/lto-opts.c
+++ b/gcc/lto-opts.c
@@ -131,6 +131,9 @@ lto_write_options (void)
case OPT_SPECIAL_input_file:
case OPT_dumpdir:
case OPT_fresolution_:
+ case OPT_fdebug_prefix_map_:
+ case OPT_ffile_prefix_map_:
+ case OPT_fmacro_prefix_map_:
continue;
default:
diff --git a/gcc/lto-streamer-out.c b/gcc/lto-streamer-out.c
index 1faf31c0551..cea5e71cffb 100644
--- a/gcc/lto-streamer-out.c
+++ b/gcc/lto-streamer-out.c
@@ -44,6 +44,7 @@ along with GCC; see the file COPYING3. If not see
#include "omp-offload.h"
#include "print-tree.h"
#include "tree-dfa.h"
+#include "file-prefix-map.h" /* remap_debug_filename() */
static void lto_write_tree (struct output_block*, tree, bool);
@@ -200,7 +201,7 @@ lto_output_location (struct output_block *ob, struct
bitpack_d *bp,
if (ob->current_file != xloc.file)
{
- bp_pack_string (ob, bp, xloc.file, true);
+ bp_pack_string (ob, bp, remap_debug_filename (xloc.file), true);
bp_pack_value (bp, xloc.sysp, 1);
}
ob->current_file = xloc.file;