testuite: fix libtdc++ libatomic flags
Some ports require libatomic for atomic operations, at least for some
data types and widths. The libstdc++ testsuite previously was updated
to link against libatomic, but the search path was hard-coded to
something that is not always correct, and the shared library search
path was not set.
The search path was hard-coded to the expected location of the
libatomic build directory relative to the libstdc++ testsuite
directory, but if one uses parallelism when invoking the libstdc++
testsuite, the tests are run in the "normalXX" sub-directories, for
which the hard-coded search path is incorrect. The path also is
incorrect for alternative multilib and tool options.
This patch adopts the logic from gcc/testsuite/lib/atomic-dg.exp to
search for the library and adds the logic to the libstdc++ testsuite
libatomic seatch path code. Previously the libstdc++ testsuite atomic
tests failed depending on the build configuration and if a build of
libatomic was installed in the default search path.
Bootstrapped on powerpc-ibm-aix7.2.3.0.
libstdc++-v3/ChangeLog:
* testsuite/lib/dg-options.exp (atomic_link_flags): New.
(add_options_for_libatomic): Use atomic_link_flags.
(cherry picked from commit fb6b24c66e
)
This commit is contained in:
parent
0be51abf08
commit
15c41a11ee
@ -260,13 +260,58 @@ proc add_options_for_net_ts { flags } {
|
||||
# Add to FLAGS all the target-specific flags to link to libatomic,
|
||||
# if required for atomics on pointers and 64-bit types.
|
||||
|
||||
proc atomic_link_flags { paths } {
|
||||
global srcdir
|
||||
global ld_library_path
|
||||
global shlib_ext
|
||||
|
||||
set gccpath ${paths}
|
||||
set flags ""
|
||||
|
||||
set shlib_ext [get_shlib_extension]
|
||||
|
||||
if { $gccpath != "" } {
|
||||
if { [file exists "${gccpath}/libatomic/.libs/libatomic.a"]
|
||||
|| [file exists "${gccpath}/libatomic/.libs/libatomic.${shlib_ext}"] } {
|
||||
append flags " -B${gccpath}/libatomic/ "
|
||||
append flags " -L${gccpath}/libatomic/.libs"
|
||||
append ld_library_path ":${gccpath}/libatomic/.libs"
|
||||
}
|
||||
} else {
|
||||
global tool_root_dir
|
||||
|
||||
set libatomic [lookfor_file ${tool_root_dir} libatomic]
|
||||
if { $libatomic != "" } {
|
||||
append flags "-L${libatomic} "
|
||||
append ld_library_path ":${libatomic}"
|
||||
}
|
||||
}
|
||||
|
||||
set_ld_library_path_env_vars
|
||||
|
||||
return "$flags"
|
||||
}
|
||||
|
||||
proc add_options_for_libatomic { flags } {
|
||||
if { [istarget hppa*-*-hpux*]
|
||||
|| ([istarget powerpc*-*-*] && [check_effective_target_ilp32])
|
||||
|| [istarget riscv*-*-*]
|
||||
|| ([istarget sparc*-*-linux-gnu] && [check_effective_target_ilp32])
|
||||
} {
|
||||
return "$flags -L../../libatomic/.libs -latomic"
|
||||
global TOOL_OPTIONS
|
||||
|
||||
set link_flags ""
|
||||
if ![is_remote host] {
|
||||
if [info exists TOOL_OPTIONS] {
|
||||
set link_flags "[atomic_link_flags [get_multilibs ${TOOL_OPTIONS}]]"
|
||||
} else {
|
||||
set link_flags "[atomic_link_flags [get_multilibs]]"
|
||||
}
|
||||
}
|
||||
|
||||
append link_flags " -latomic "
|
||||
|
||||
return "$flags $link_flags"
|
||||
}
|
||||
return $flags
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user