diff options
author | Ilya Leoshkevich <iii@linux.ibm.com> | 2024-01-08 10:11:59 +0100 |
---|---|---|
committer | Ilya Leoshkevich <iii@linux.ibm.com> | 2024-01-08 19:36:27 +0100 |
commit | ba4cfef0a45dd50e16ca7bee158bc630fa646ee7 (patch) | |
tree | 2c595933e3ab6fcdfb9b79e193ef18fe9b099e08 | |
parent | dfc88fb51c1f9c26215adf6a308c18e23992cdd9 (diff) | |
download | gcc-ba4cfef0a45dd50e16ca7bee158bc630fa646ee7.zip gcc-ba4cfef0a45dd50e16ca7bee158bc630fa646ee7.tar.gz gcc-ba4cfef0a45dd50e16ca7bee158bc630fa646ee7.tar.bz2 |
asan: Do not call asan_function_start () without the current function [PR113251]
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.
-rw-r--r-- | gcc/varasm.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/varasm.cc b/gcc/varasm.cc index 25c1e05..1a869ae 100644 --- a/gcc/varasm.cc +++ b/gcc/varasm.cc @@ -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 (); } |