https://gcc.gnu.org/g:8eb03ad712bdbd31f9a1c84b72bcbf0c5ef1b722

commit r16-7588-g8eb03ad712bdbd31f9a1c84b72bcbf0c5ef1b722
Author: Thomas Schwinge <[email protected]>
Date:   Thu Feb 19 11:29:42 2026 +0100

    Further fix up effective-target 'no_fsanitize_address' check
    
    That got added with commit 
r11-4762-g65e82636bcdb72a878c2e53943e71b15dd9fb22d
    "PR target/96307: Fix KASAN option checking", and already fixed up in
    commit r12-3723-g6e6bf4cd21af39a7923bae007517ab43a4c3b36a
    "Fix no_fsanitize_address effective target", but I just realized that on, 
for
    example, standard x86_64-pc-linux-gnu, I'm unexpectedly seeing test cases
    UNSUPPORTED, due to the effective-target 'no_fsanitize_address' check 
failing
    with:
    
        Executing on host: [...]/build-gcc/gcc/xgcc -B[...]/build-gcc/gcc/  
fsanitize_address3454287.c    -fdiagnostics-plain-output  -fsanitize=address 
-Wno-complain-wrong-lang  -lm  -o fsanitize_address3454287.exe    (timeout = 
300)
        spawn [...]
        /usr/bin/ld: cannot find libasan_preinit.o: No such file or directory
        /usr/bin/ld: cannot find -lasan: No such file or directory
        collect2: error: ld returned 1 exit status
        compiler exited with status 1
    
    Notice no setup for paths to build-tree libsanitizer.  Need to use a proper
    'asan.exp' file with 'asan_init'/'asan_finish' calls to set up linker paths,
    etc. -- however, all test cases using effective-target 
'no_fsanitize_address'
    are compilation test cases, so let's just reflect that in the 
effective-target
    'no_fsanitize_address' check.  With that, I then get the desired:
    
        -UNSUPPORTED: gcc.dg/pr91441.c
        +PASS: gcc.dg/pr91441.c (test for excess errors)
    
        -UNSUPPORTED: gcc.dg/pr96260.c
        +PASS: gcc.dg/pr96260.c (test for excess errors)
    
        -UNSUPPORTED: gcc.dg/pr96307.c
        +PASS: gcc.dg/pr96307.c (test for excess errors)
    
        -UNSUPPORTED: gcc.dg/uninit-pr93100.c
        +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 16)
        +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 26)
        +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 38)
        +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 48)
        +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 61)
        +PASS: gcc.dg/uninit-pr93100.c  (test for warnings, line 71)
        +PASS: gcc.dg/uninit-pr93100.c (test for excess errors)
    
        -UNSUPPORTED: g++.dg/warn/uninit-pr93100.C  -std=gnu++20
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, 
line 13)
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, 
line 20)
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, 
line 31)
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, 
line 38)
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, 
line 49)
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20  (test for warnings, 
line 56)
        +PASS: g++.dg/warn/uninit-pr93100.C  -std=gnu++20 (test for excess 
errors)
        [Etc.]
    
        -UNSUPPORTED: g++.dg/warn/uninit-pr95825-1.C  -std=gnu++20
        +PASS: g++.dg/warn/uninit-pr95825-1.C  -std=gnu++20  (test for bogus 
messages, line 17)
        +PASS: g++.dg/warn/uninit-pr95825-1.C  -std=gnu++20 (test for excess 
errors)
        [Etc.]
    
        -UNSUPPORTED: gnat.dg/asan1.adb
        +PASS: gnat.dg/asan1.adb (test for excess errors)
    
    ..., while these remain UNSUPPORTED for targets that don't support
    '-fsanitize=address'.
    
            gcc/testsuite/
            * lib/target-supports.exp
            (check_effective_target_no_fsanitize_address): Check 'assembly'
            instead of 'executable'.

Diff:
---
 gcc/testsuite/lib/target-supports.exp | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/gcc/testsuite/lib/target-supports.exp 
b/gcc/testsuite/lib/target-supports.exp
index ba91c95b348f..855bdbcf55ad 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -14144,10 +14144,13 @@ proc check_effective_target_movdir { } {
     } "-mmovdiri -mmovdir64b" ]
 }
 
-# Return 1 if the target does not support address sanitizer, 0 otherwise
+# Return 1 if the target does not support address sanitizer, 0 otherwise.
+# Note that this is usable only for compilation test cases.  (Otherwise, use a
+# proper 'asan.exp' file with 'asan_init'/'asan_finish' calls to set up linker
+# paths, etc.)
 
 proc check_effective_target_no_fsanitize_address {} {
-    if ![check_no_compiler_messages fsanitize_address executable {
+    if ![check_no_compiler_messages fsanitize_address assembly {
        int main (void) { return 0; }
     } "-fsanitize=address" ] {
        return 1;

Reply via email to