Add flags to find libatomic in build-tree testing, fixing a catastrophic 
libgomp testsuite failure with targets such as `riscv-linux-gnu' that 
imply `-latomic' with the `-pthread' GCC option, implied in turn by the 
offload options, removing failures like:

.../bin/riscv64-linux-gnu-ld: cannot find -latomic
collect2: error: ld returned 1 exit status
compiler exited with status 1
FAIL: libgomp.c/../libgomp.c-c++-common/atomic-18.c (test for excess errors)
Excess errors:
.../bin/riscv64-linux-gnu-ld: cannot find -latomic

UNRESOLVED: libgomp.c/../libgomp.c-c++-common/atomic-18.c compilation failed to 
produce executable

and bringing overall test results for the said target (here with the 
`x86_64-linux-gnu' host and RISC-V QEMU in the Linux user emulation mode 
as the target board) from:

                === libgomp Summary ===

# of expected passes            90
# of unexpected failures        3267
# of expected failures          2
# of unresolved testcases       3247
# of unsupported tests          548

to:

                === libgomp Summary ===

# of expected passes            6834
# of unexpected failures        4
# of expected failures          4
# of unsupported tests          518

        libgomp/
        * testsuite/lib/libgomp.exp (libgomp_init): Add flags to find 
        libatomic in build-tree testing.
---
 libgomp/testsuite/lib/libgomp.exp |   10 ++++++++++
 1 file changed, 10 insertions(+)

gcc-test-libgomp-atomic-lib-path.diff
Index: gcc/libgomp/testsuite/lib/libgomp.exp
===================================================================
--- gcc.orig/libgomp/testsuite/lib/libgomp.exp
+++ gcc/libgomp/testsuite/lib/libgomp.exp
@@ -174,6 +174,16 @@ proc libgomp_init { args } {
     # For build-tree testing, also consider the library paths used for builing.
     # For installed testing, we assume all that to be provided in the sysroot.
     if { $blddir != "" } {
+       # Offload options imply `-pthread', and that implies `-latomic'
+       # on some targets, so wire in libatomic build directories.
+       set shlib_ext [get_shlib_extension]
+       set atomic_library_path "${blddir}/../libatomic/.libs"
+       if { [file exists "${atomic_library_path}/libatomic.a"]
+            || [file exists \
+                "${atomic_library_path}/libatomic.${shlib_ext}"] } {
+           lappend ALWAYS_CFLAGS "additional_flags=-L${atomic_library_path}"
+           append always_ld_library_path ":${atomic_library_path}"
+       }
        global cuda_driver_include
        global cuda_driver_lib
        if { $cuda_driver_include != "" } {

Reply via email to