From: Alan Modra <amodra@gmail.com>
To: "H.J. Lu" <hjl.tools@gmail.com>
Cc: binutils@sourceware.org
Subject: Re: [PATCH v4 6/7] ld: Add tests for -z nosectionheader and --strip-section-headers
Date: Thu, 6 Jul 2023 10:57:17 +0930 [thread overview]
Message-ID: <ZKYYdZAcGxTwVpJw@squeak.grove.modra.org> (raw)
In-Reply-To: <CAMe9rOp2N9PfkCi32F32Rxf+wO=UdiFqLLjKP4-pUbvDphj6kw@mail.gmail.com>
On Thu, Jun 29, 2023 at 01:56:30PM -0700, H.J. Lu wrote:
> This test failed on PPC where readelf outputs
>
> 7: 0000000000000000 0 FUNC GLOBAL DEFAULT [<localentry>:
> 8] UND puts@GLIBC_2.17 (2)
>
> instead of
>
> 7: 0000000000000000 0 FUNC GLOBAL DEFAULT UND puts@GLIBC_2.17 (2)
>
> Alan, what is the best way to deal with it?
I would replace DEFAULT with DEFAULT.*, but this test has a quite a
few other problems.
We should be using run_host_cmd everywhere we invoke a compiler in the
ld testsuite, if we want to use ld/ld-new just built. run_host_cmd
properly inserts $gcc_B_opt in cases where a user wants to test
binutils with a newly built compiler, ie. when $CC specifies -B itself.
Also, it is not good practice to exclude tests when non-native except
of course those tests that run a target binary. Compiling and linking
often shows up problems, before you get complaints from people running
natively.
The following gives me clean results on the test, except for
mips-linux-gnu +FAIL: Build pr25617-1a-now-no-sec-hdr.so (none)
mips-linux-gnu +FAIL: Build pr25617-1a-now-no-sec-hdr.so (objcopy)
mips-linux-gnu +FAIL: Build pr25617-1a-now-no-sec-hdr.so (strip)
and those are due to the .so being built with --hash-style=gnu which
results in DT_MIPS_XHASH on mips. I'm unsure what the correct fix is
for mips, it might just be a simple readelf change.
* testsuite/ld-elf/no-section-header.exp (binutils_run_test):
Use run_host_cmd to invoke $CC_FOR_TARGET. Run all tests
non-native too, except for attempting to run the binaries.
Run tests for ELF in general, not just linux.
* testsuite/ld-elf/pr25617-1-no-sec-hdr.rd: Allow localentry
symbol decoration, and support either sorting of symbols.
* testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd: Likewise.
* testsuite/ld-elf/pr25617-1a-sec-hdr.rd: Likewise.
* testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd: Accept D function syms.
* testsuite/ld-elf/start-shared-noheader-sysv.rd: Accept
mips-sgi-irix symbol output.
* testsuite/ld-elf/start-shared-noheader.nd: Likewise.
diff --git a/ld/testsuite/ld-elf/no-section-header.exp b/ld/testsuite/ld-elf/no-section-header.exp
index c010e572a32..bd4697ddd4c 100644
--- a/ld/testsuite/ld-elf/no-section-header.exp
+++ b/ld/testsuite/ld-elf/no-section-header.exp
@@ -21,9 +21,7 @@
# Written by H.J. Lu (hongjiu.lu@intel.com)
#
-# Make sure that binutils can correctly handle ld output in ELF.
-
-if { ![istarget *-*-linux*] } {
+if { ![is_elf_format] } {
return
}
@@ -129,14 +127,13 @@ binutils_test strip "--hash-style=gnu -shared" start \
binutils_test strip "--hash-style=sysv -shared" start \
start-shared-noheader-sysv.rd start-shared-noheader.nd
-# Skip non-native targets or -shared is not supported.
-if { ![isnative] || ![check_shared_lib_support] } {
+
+if { ![check_compiler_available] || ![check_shared_lib_support] } {
return
}
proc binutils_run_test { prog } {
- global CC
- global gcc_B_opt
+ global CC_FOR_TARGET
global READELF
global NM
global objcopy
@@ -286,20 +283,22 @@ proc binutils_run_test { prog } {
return
}
- send_log "tmpdir/pr25617-1-no-sec-hdr > tmpdir/pr25617-1.out\n"
- catch "exec tmpdir/pr25617-1-no-sec-hdr > tmpdir/pr25617-1.out" got
- if ![string match "" $got] then {
- send_log "$got\n"
- unresolved "Update pr25617-1a-no-sec-hdr.so ($prog_name)"
- return
- }
-
- send_log "diff tmpdir/pr25617-1.out $srcdir/$subdir/pass.out\n"
- catch "exec diff tmpdir/pr25617-1.out $srcdir/$subdir/pass.out" got
- if ![string match "" $got] then {
- send_log "$got\n"
- fail "Update pr25617-1a-no-sec-hdr.so ($prog_name)"
- return
+ if { [isnative] } {
+ send_log "tmpdir/pr25617-1-no-sec-hdr > tmpdir/pr25617-1.out\n"
+ catch "exec tmpdir/pr25617-1-no-sec-hdr > tmpdir/pr25617-1.out" got
+ if ![string match "" $got] then {
+ send_log "$got\n"
+ unresolved "Update pr25617-1a-no-sec-hdr.so ($prog_name)"
+ return
+ }
+
+ send_log "diff tmpdir/pr25617-1.out $srcdir/$subdir/pass.out\n"
+ catch "exec diff tmpdir/pr25617-1.out $srcdir/$subdir/pass.out" got
+ if ![string match "" $got] then {
+ send_log "$got\n"
+ fail "Update pr25617-1a-no-sec-hdr.so ($prog_name)"
+ return
+ }
}
pass "Update pr25617-1a-no-sec-hdr.so ($prog_name)"
@@ -338,24 +337,25 @@ proc binutils_run_test { prog } {
return
}
- send_log "tmpdir/pr25617-1-pie-no-sec-hdr > tmpdir/pr25617-1-pie.out\n"
- catch "exec tmpdir/pr25617-1-pie-no-sec-hdr > tmpdir/pr25617-1-pie.out" got
- if ![string match "" $got] then {
- send_log "$got\n"
- unresolved "Update pr25617-1a-now-no-sec-hdr.so ($prog_name)"
- return
- }
-
- send_log "diff tmpdir/pr25617-1-pie.out $srcdir/$subdir/pass.out\n"
- catch "exec diff tmpdir/pr25617-1-pie.out $srcdir/$subdir/pass.out" got
- if ![string match "" $got] then {
- send_log "$got\n"
- fail "Update pr25617-1a-now-no-sec-hdr.so ($prog_name)"
- return
+ if { [isnative] } {
+ send_log "tmpdir/pr25617-1-pie-no-sec-hdr > tmpdir/pr25617-1-pie.out\n"
+ catch "exec tmpdir/pr25617-1-pie-no-sec-hdr > tmpdir/pr25617-1-pie.out" got
+ if ![string match "" $got] then {
+ send_log "$got\n"
+ unresolved "Update pr25617-1a-now-no-sec-hdr.so ($prog_name)"
+ return
+ }
+
+ send_log "diff tmpdir/pr25617-1-pie.out $srcdir/$subdir/pass.out\n"
+ catch "exec diff tmpdir/pr25617-1-pie.out $srcdir/$subdir/pass.out" got
+ if ![string match "" $got] then {
+ send_log "$got\n"
+ fail "Update pr25617-1a-now-no-sec-hdr.so ($prog_name)"
+ return
+ }
}
- send_log "$CC $gcc_B_opt -o tmpdir/pr25617-1 tmpdir/pr25617-1b.o tmpdir/pr25617-1a-now-no-sec-hdr.so\n"
- catch "exec $CC $gcc_B_opt -o tmpdir/pr25617-1 tmpdir/pr25617-1b.o tmpdir/pr25617-1a-now-no-sec-hdr.so" got
+ set got [run_host_cmd $CC_FOR_TARGET "-o tmpdir/pr25617-1 tmpdir/pr25617-1b.o tmpdir/pr25617-1a-now-no-sec-hdr.so"]
if ![string match "*pr25617-1a-now-no-sec-hdr.so*file in wrong format*" $got] then {
send_log "$got\n"
fail "Update pr25617-1a-now-no-sec-hdr.so ($prog_name)"
diff --git a/ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.rd b/ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.rd
index be49dea32db..05957dc3e69 100644
--- a/ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.rd
+++ b/ld/testsuite/ld-elf/pr25617-1-no-sec-hdr.rd
@@ -14,7 +14,7 @@ Program Headers:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND +
#...
- +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +__libc_start_main(@.*|)
+.* FUNC +GLOBAL +DEFAULT.* UND +(__libc_start_main(@.*|)|_?test)
#...
- +[0-9]+: +[a-f0-9]+ +0+ +FUNC +GLOBAL +DEFAULT +UND +_?test
+.* FUNC +GLOBAL +DEFAULT.* UND +(__libc_start_main(@.*|)|_?test)
#pass
diff --git a/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd b/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd
index 2813ffc6652..2dc92a2ff50 100644
--- a/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd
+++ b/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.nd
@@ -1,3 +1,3 @@
#...
+ U _?puts(@.*|)
-[0-9a-z]+ T _?test
+[0-9a-z]+ [TD] _?test
diff --git a/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd b/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd
index f7a4eec7362..519ce15453e 100644
--- a/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd
+++ b/ld/testsuite/ld-elf/pr25617-1a-no-sec-hdr.rd
@@ -14,7 +14,7 @@ Program Headers:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND +
#...
- +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +_?puts(@.*|)
+.* FUNC +GLOBAL +DEFAULT.* (UND +_?puts(@.*|)|[0-9]+ +_?test)
#...
- +[0-9]+: +[a-f0-9]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ +_?test
+.* FUNC +GLOBAL +DEFAULT.* (UND +_?puts(@.*|)|[0-9]+ +_?test)
#pass
diff --git a/ld/testsuite/ld-elf/pr25617-1a-sec-hdr.rd b/ld/testsuite/ld-elf/pr25617-1a-sec-hdr.rd
index 9ccf0565af6..0de2915811a 100644
--- a/ld/testsuite/ld-elf/pr25617-1a-sec-hdr.rd
+++ b/ld/testsuite/ld-elf/pr25617-1a-sec-hdr.rd
@@ -13,7 +13,7 @@ Program Headers:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND +
#...
- +[0-9]+: +[a-f0-9]+ +0 +FUNC +GLOBAL +DEFAULT +UND +_?puts(@.*|)
+.* FUNC +GLOBAL +DEFAULT.* (UND +_?puts(@.*|)|[0-9]+ +_?test)
#...
- +[0-9]+: +[a-f0-9]+ +[0-9]+ +FUNC +GLOBAL +DEFAULT +[0-9]+ +_?test
+.* FUNC +GLOBAL +DEFAULT.* (UND +_?puts(@.*|)|[0-9]+ +_?test)
#pass
diff --git a/ld/testsuite/ld-elf/start-shared-noheader-sysv.rd b/ld/testsuite/ld-elf/start-shared-noheader-sysv.rd
index d8f02497e58..d5bbb8bb6d0 100644
--- a/ld/testsuite/ld-elf/start-shared-noheader-sysv.rd
+++ b/ld/testsuite/ld-elf/start-shared-noheader-sysv.rd
@@ -14,13 +14,13 @@ Program Headers:
+Num: +Value +Size Type +Bind +Vis +Ndx Name
+0: 0+ +0 +NOTYPE +LOCAL +DEFAULT +UND +
#...
- +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +__start
+.* GLOBAL +DEFAULT.* __start
#...
- +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +_start
+.* GLOBAL +DEFAULT.* _start
#...
- +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +main
+.* GLOBAL +DEFAULT.* main
#...
- +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +start
+.* GLOBAL +DEFAULT.* start
#...
- +[0-9]+: +[a-f0-9]+ +0 +NOTYPE +GLOBAL +DEFAULT +[0-9]+ +_main
+.* GLOBAL +DEFAULT.* _main
#pass
diff --git a/ld/testsuite/ld-elf/start-shared-noheader.nd b/ld/testsuite/ld-elf/start-shared-noheader.nd
index 6ec6cdf8af9..d1e7dd11fd4 100644
--- a/ld/testsuite/ld-elf/start-shared-noheader.nd
+++ b/ld/testsuite/ld-elf/start-shared-noheader.nd
@@ -1,11 +1,11 @@
#...
-[0-9a-z]+ A __start
+[0-9a-z]+ [AD] __start
#...
-[0-9a-z]+ A _main
+[0-9a-z]+ [AD] _main
#...
-[0-9a-z]+ A _start
+[0-9a-z]+ [AD] _start
#...
-[0-9a-z]+ A main
+[0-9a-z]+ [AD] main
#...
-[0-9a-z]+ A start
+[0-9a-z]+ [AD] start
#pass
--
Alan Modra
Australia Development Lab, IBM
next prev parent reply other threads:[~2023-07-06 1:27 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-06-06 17:58 [PATCH v4 0/7] ELF: Strip section header in ELF objects H.J. Lu
2023-06-06 17:58 ` [PATCH v4 1/7] " H.J. Lu
2023-06-06 17:58 ` [PATCH v4 2/7] ELF: Discard non-alloc sections without section header H.J. Lu
2023-06-06 17:58 ` [PATCH v4 3/7] bfd: Improve nm and objdump " H.J. Lu
2023-07-01 2:12 ` Simon Marchi
2023-07-07 15:26 ` H.J. Lu
2023-07-10 3:30 ` Simon Marchi
2023-07-13 5:02 ` Alan Modra
2023-07-13 5:34 ` Fangrui Song
2023-07-13 21:58 ` Mark Wielaard
2023-07-19 6:21 ` Alan Modra
2023-06-06 17:58 ` [PATCH v4 4/7] ld: Add simple tests for -z nosectionheader H.J. Lu
2023-06-06 17:58 ` [PATCH v4 5/7] binutils: Add a --strip-section-headers test H.J. Lu
2023-06-06 17:58 ` [PATCH v4 6/7] ld: Add tests for -z nosectionheader and --strip-section-headers H.J. Lu
2023-06-29 20:56 ` H.J. Lu
2023-07-06 1:27 ` Alan Modra [this message]
2023-06-06 17:58 ` [PATCH v4 7/7] ld: Add -z nosectionheader test to bootstrap.exp H.J. Lu
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZKYYdZAcGxTwVpJw@squeak.grove.modra.org \
--to=amodra@gmail.com \
--cc=binutils@sourceware.org \
--cc=hjl.tools@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).