https://gcc.gnu.org/g:cfb45bb1e58aedb8dc7d787dcdeda17c1e4b5a04

commit r17-5796-gcfb45bb1e58aedb8dc7d787dcdeda17c1e4b5a04
Author: Torbjörn SVENSSON <[email protected]>
Date:   Sun Nov 1 14:38:27 2026 +0100

    testsuite: Use gcc-nm for symbol scans
    
    Find gcc-nm alongside the compiler under test instead of searching
    the build tree for nm. This ensures that liblto_plugin.so is found
    automatically when available, fixing the "plugin needed to handle
    lto object" error for LTO tests like gcc.dg/builtin-pi-linkage.c.
    Allow GCC_NM_UNDER_TEST to override the tool.
    
    This follows the approach used for gcc-ar in r16-7327-gc9addbc79ac0f9.
    
    gcc/testsuite/ChangeLog:
    
            * lib/gcc-dg.exp (scan-symbol-common): Use gcc-nm and honor
            GCC_NM_UNDER_TEST.
    
    Signed-off-by: Torbjörn SVENSSON <[email protected]>

Diff:
---
 gcc/testsuite/lib/gcc-dg.exp | 27 ++++++++++++++++-----------
 1 file changed, 16 insertions(+), 11 deletions(-)

diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp
index 9f1832592574..bdd74d132c13 100644
--- a/gcc/testsuite/lib/gcc-dg.exp
+++ b/gcc/testsuite/lib/gcc-dg.exp
@@ -1394,8 +1394,8 @@ proc gdb-exists { args } {
 # Argument 0 is the regexp to match.
 # Argument 1 handles expected failures and the like
 proc scan-symbol-common { scan_directive args } {
-    global nm
-    global base_dir
+    global GCC_UNDER_TEST
+    global GCC_NM_UNDER_TEST
 
     # Access variable from gcc-dg-test-1 or lto-execute.
     upvar 3 output_file output_file
@@ -1409,15 +1409,20 @@ proc scan-symbol-common { scan_directive args } {
        }
     }
 
-    # Find nm like we find g++ in g++.exp.
-    if ![info exists nm]  {
-       set nm [findfile $base_dir/../../../binutils/nm \
-               $base_dir/../../../binutils/nm \
-               [findfile $base_dir/../../nm $base_dir/../../nm \
-                     [findfile $base_dir/nm $base_dir/nm \
-                      [transform nm]]]]
-       verbose -log "nm is $nm"
+    # For now find gcc-nm in the same directory as $GCC_UNDER_TEST, unless
+    # GCC_NM_UNDER_TEST is defined.
+
+    if ![info exists GCC_NM_UNDER_TEST] {
+       if { ![is_remote host] && [string match "*/*" [lindex $GCC_UNDER_TEST 
0]] } {
+           set nm_cmd [file dirname [lindex $GCC_UNDER_TEST 
0]]/[gcc-transform-out-of-tree gcc-nm]
+       } else {
+           set nm_cmd [gcc-transform-out-of-tree gcc-nm]
+       }
+       set nm_cmd "$nm_cmd [lrange $GCC_UNDER_TEST 1 end]"
+    } else {
+       set nm_cmd $GCC_NM_UNDER_TEST
     }
+    verbose -log "nm is $nm_cmd"
 
     set output_file "[glob -nocomplain $output_file]"
     if { $output_file == "" } {
@@ -1425,7 +1430,7 @@ proc scan-symbol-common { scan_directive args } {
        return
     }
 
-    set fd [open "| $nm $output_file" r]
+    set fd [open "| $nm_cmd $output_file" r]
     set text [read $fd]
     close $fd

Reply via email to