mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-05 23:23:09 +00:00
libctf: don't run tests requiring deduplicating linker unless one is in use
Before now, we were relying on gcc -B to repoint GCC at our freshly-built
linker, and assuming we could use this to run tests that do linker dedup.
This is, alas, not reliable (building --with-ld=/an/absolute/path bypasses
-B searches for the linker), and we would like the libctf tests in
particular to not fail if the compiler uses a linker that cannot deduplicate
(simply skipping such tests).
Add a new testsuite function that tries to link one of the lookup tests'
testcases (which is known to produce conflicting types, i.e. a dict with
per-translation-unit children) and then does an objdump and greps it for
signs of the per-translation-unit children. If there are none, the linker
probably just concatenated the sections: i.e., it is not a linker that
can deduplicate CTF.
libctf/
PR libctf/33162
* testsuite/config/default.exp (objdump): Introduce.
(OBJDUMPFLAGS): Likewise.
* testsuite/lib/ctf-lib.exp (check_ctf_linker_dedup): New.
* testsuite/libctf-lookup/lookup.exp: Use it.
* testsuite/libctf-regression/libctf-repeat-cu.exp: Likewise.
* testsuite/libctf-regression/regression.exp: Likewise.
(cherry picked from commit 4983bb052d)
This commit is contained in:
@@ -37,6 +37,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![check_ctf_linker_dedup]} {
|
||||
unsupported "no CTF deduplication support in the linker"
|
||||
return 0
|
||||
}
|
||||
|
||||
if {[info exists env(LC_ALL)]} {
|
||||
set old_lc_all $env(LC_ALL)
|
||||
}
|
||||
|
||||
@@ -23,6 +23,11 @@ if {![check_ctf_available]} {
|
||||
return 0
|
||||
}
|
||||
|
||||
if {![check_ctf_linker_dedup]} {
|
||||
unsupported "no CTF deduplication support in the linker"
|
||||
return 0
|
||||
}
|
||||
|
||||
if ![is_elf_format] {
|
||||
unsupported "CTF needs bfd changes to be emitted on non-ELF"
|
||||
return 0
|
||||
|
||||
Reference in New Issue
Block a user