https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82501

--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> ---
I started working on this, but it's not easy to register dummy global
variables. If I see correctly, global vars are emitted into assembly here:

#0  assemble_variable (decl=<var_decl 0x7ffff7feeab0 global3>, top_level=0,
at_end=1, dont_output_data=0) at /home/marxin/Programming/gcc/gcc/varasm.c:2271
#1  0x0000000000fe1502 in varpool_node::assemble_decl (this=<varpool_node *
const 0x7ffff6b0b000 "global3"/0>) at
/home/marxin/Programming/gcc/gcc/varpool.c:586
#2  0x000000000090d12d in output_in_order () at
/home/marxin/Programming/gcc/gcc/cgraphunit.c:2369
#3  symbol_table::compile (this=0x7ffff6990100) at
/home/marxin/Programming/gcc/gcc/cgraphunit.c:2609
#4  0x000000000090f54d in symbol_table::compile (this=0x7ffff6990100) at
/home/marxin/Programming/gcc/gcc/cgraphunit.c:2788
#5  symbol_table::finalize_compilation_unit (this=0x7ffff6990100) at
/home/marxin/Programming/gcc/gcc/cgraphunit.c:2788
#6  0x0000000000cf4164 in compile_file () at
/home/marxin/Programming/gcc/gcc/toplev.c:480
#7  0x0000000000798e80 in do_compile () at
/home/marxin/Programming/gcc/gcc/toplev.c:2170
#8  toplev::main (this=0x7fffffffd90e, argc=<optimized out>, argv=<optimized
out>) at /home/marxin/Programming/gcc/gcc/toplev.c:2305
#9  0x00000000015db48d in main (argc=20, argv=0x7fffffffda08) at
/home/marxin/Programming/gcc/gcc/main.c:39

Will it be needed to check that a variable is asan_protect_global (decl) and if
it's first variable in a section then emit a dummy global variable here? It's
crucial to put the dummy variable at the very beginning of each section.

Reply via email to