https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117696
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Macro info is supposed to be emitted into the early debug, and I can clearly
see .debug_macro in a -g3 -flto built test program.
The issue seems to be that the consumer (gdb) doesn't pick up that macro info.
#define FOO 1
int main() {}
produces the abstract unit with macro info:
<0><31d>: Abbrev Number: 1 (DW_TAG_compile_unit)
<31e> DW_AT_producer : (indirect string, offset: 0x18d5): GNU C23
15.0.0 20241120 (experimental) -mtune=generic -march=x86-64 -g3 -flto
<322> DW_AT_language : 29 (C11)
<323> DW_AT_name : (indirect line string, offset: 0x2b): t.c
<327> DW_AT_comp_dir : (indirect line string, offset: 0):
/home/rguenther/obj-gcc-g/gcc
<32b> DW_AT_stmt_list : 0x221
<32f> DW_AT_macros : 0
<1><333>: Abbrev Number: 2 (DW_TAG_subprogram)
<334> DW_AT_external : 1
<334> DW_AT_name : (indirect string, offset: 0x2a7f): main
<338> DW_AT_decl_file : 1
<339> DW_AT_decl_line : 2
<33a> DW_AT_decl_column : 5
<33b> DW_AT_prototyped : 1
<33b> DW_AT_type : <0x33f>
<1><33f>: Abbrev Number: 3 (DW_TAG_base_type)
<340> DW_AT_byte_size : 4
<341> DW_AT_encoding : 5 (signed)
<342> DW_AT_name : int
and the concrete instance unit
<0><2d7>: Abbrev Number: 1 (DW_TAG_compile_unit)
<2d8> DW_AT_producer : (indirect string, offset: 0x417): GNU GIMPLE
15.
0.0 20241120 (experimental) -mtune=generic -march=x86-64 -g -g3 -fno-openmp
-fno
-openacc -fno-pie -fcf-protection=none -fltrans
<2dc> DW_AT_language : 29 (C11)
<2dd> DW_AT_name : (indirect line string, offset: 0x1e):
<artificia
l>
<2e1> DW_AT_comp_dir : (indirect line string, offset: 0):
/home/rguenth
er/obj-gcc-g/gcc
<2e5> DW_AT_low_pc : 0x400526
<2ed> DW_AT_high_pc : 0xb
<2f5> DW_AT_stmt_list : 0x1d5
<1><2f9>: Abbrev Number: 2 (DW_TAG_subprogram)
<2fa> DW_AT_abstract_origin: <0x333>
<2fe> DW_AT_low_pc : 0x400526
<306> DW_AT_high_pc : 0xb
<30e> DW_AT_frame_base : 1 byte block: 9c (DW_OP_call_frame_cfa)
<310> DW_AT_call_all_calls: 1
but when in context main() in gdb, gdb doesn't look up the macro info
associated with the containing CU.
So the info is there, it's just not picked up ...