Using ASAN on i686-linux with -fPIC causes an ICE, because when
pc_thunks are generated, there is no current function anymore, but
asan_function_start () expects one.
Fix by not calling asan_function_start () without one.
A narrower fix would be to temporarily disable ASAN around pc_thunk
generation. However, the issue looks generic enough, and may affect
less often tested configurations, so go for a broader fix.
Fixes: e66dc37b299c ("asan: Align .LASANPC on function boundary")
Suggested-by: Jakub Jelinek <jakub@redhat.com>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
gcc/ChangeLog:
PR sanitizer/113251
* varasm.cc (assemble_function_label_raw): Do not call
asan_function_start () without the current function.
ASM_OUTPUT_LABEL (file, name);
if ((flag_sanitize & SANITIZE_ADDRESS)
/* Notify ASAN only about the first function label. */
- && (in_cold_section_p == first_function_block_is_cold))
+ && (in_cold_section_p == first_function_block_is_cold)
+ /* Do not notify ASAN when called from, e.g., code_end (). */
+ && cfun)
asan_function_start ();
}