]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
asan: Do not call asan_function_start () without the current function [PR113251]
authorIlya Leoshkevich <iii@linux.ibm.com>
Mon, 8 Jan 2024 09:11:59 +0000 (10:11 +0100)
committerIlya Leoshkevich <iii@linux.ibm.com>
Mon, 8 Jan 2024 18:36:27 +0000 (19:36 +0100)
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.

gcc/varasm.cc

index 25c1e05628d9108b221a41d27a03505a08e7e87d..1a869ae458a65bb28b067d871325cc5c705efee3 100644 (file)
@@ -1845,7 +1845,9 @@ assemble_function_label_raw (FILE *file, const char *name)
   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 ();
 }