On 2/24/23 10:07, Jakub Jelinek wrote: > On Fri, Feb 24, 2023 at 10:00:01AM +0100, Martin Liška wrote: >> As mentioned in the PR, when we use LTO, we wrongly use ltrans output >> file name as a module name of a global variable. That leads to a >> non-reproducible output. >> >> After the suggested change, we emit context name of normal global >> variables. And for artificial variables (like .Lubsan_data3), we use >> aux_base_name (e.g. "./a.ltrans0.ltrans"). >> >> Patch can bootstrap on x86_64-linux-gnu and survives regression tests. >> >> Ready to be installed? >> Thanks, >> Martin >> >> PR asan/108834 >> >> gcc/ChangeLog: >> >> * asan.cc (asan_add_global): Use proper TU name for normal >> global variables (and aux_base_name for the artificial one). >> >> gcc/testsuite/ChangeLog: >> >> * c-c++-common/asan/global-overflow-1.c: Test line and column >> info for a global variable. >> --- >> gcc/asan.cc | 7 ++++++- >> gcc/testsuite/c-c++-common/asan/global-overflow-1.c | 2 +- >> 2 files changed, 7 insertions(+), 2 deletions(-) >> >> diff --git a/gcc/asan.cc b/gcc/asan.cc >> index f56d084bc7a..245abb14388 100644 >> --- a/gcc/asan.cc >> +++ b/gcc/asan.cc >> @@ -3287,7 +3287,12 @@ asan_add_global (tree decl, tree type, >> vec<constructor_elt, va_gc> *v) >> pp_string (&asan_pp, "<unknown>"); >> str_cst = asan_pp_string (&asan_pp); >> >> - pp_string (&module_name_pp, main_input_filename); >> + const_tree tu = get_ultimate_context ((const_tree)decl); >> + if (tu != NULL_TREE) >> + pp_string (&module_name_pp, IDENTIFIER_POINTER (DECL_NAME (tu))); >> + else >> + pp_string (&module_name_pp, aux_base_name); > > I think for !in_lto_p we don't need to bother with get_ultimate_context > and should just use main_input_filename as before.
All right, pushed with that change. Thanks, Martin > > Otherwise LGTM. > > Jakub >