public inbox for dwz@sourceware.org
 help / color / mirror / Atom feed
From: Tom de Vries <tdevries@suse.de>
To: dwz@sourceware.org, jakub@redhat.com, mark@klomp.org
Subject: [PATCH][testsuite] Handle readelf following links by default
Date: Sun, 28 Feb 2021 08:36:49 +0100	[thread overview]
Message-ID: <20210228073647.GA25615@delia> (raw)

Hi,

Since binutils commit c46b706620e "Change the readelf and objdump programs so
that they will automatically follow links to separate debug info files." there
are a few FAILs in the dwz testsuite.

In the case of gnu-debugaltlink-name.sh, I think this is caused by a binutils
bug, filed as PR27478.

In the case of odr-struct-multifile.sh, this is just due to flipping the
default.

Fix/workaround this by testing whether the new -Wn readelf flag is supported,
and if so, adding it to the readelf call.

Any comments?

Thanks,
- Tom

[testsuite] Handle readelf following links by default

2021-02-28  Tom de Vries  <tdevries@suse.de>

	PR dwz/27479
	* testsuite/dwz.tests/odr-struct-multifile.sh: Call readelf with -wN
	if supported.
	* testsuite/scripts/gnu-debugaltlink-name.sh: Same.

---
 testsuite/dwz.tests/odr-struct-multifile.sh | 19 ++++++++++++-------
 testsuite/scripts/gnu-debugaltlink-name.sh  |  8 +++++++-
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git a/testsuite/dwz.tests/odr-struct-multifile.sh b/testsuite/dwz.tests/odr-struct-multifile.sh
index cc462c9..7e9e535 100644
--- a/testsuite/dwz.tests/odr-struct-multifile.sh
+++ b/testsuite/dwz.tests/odr-struct-multifile.sh
@@ -2,16 +2,21 @@ if ! $execs/dwz-for-test --odr -v 2>/dev/null; then
     exit 77
 fi
 
+flags=""
+if readelf -h 2>&1 | grep -q "\-wN,"; then
+    flags=-wN
+fi
+
 cp $execs/odr-struct 1
 cp 1 2
 
 for name in aaa bbb ccc; do
-    cnt=$(readelf -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
+    cnt=$(readelf $flags -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
     [ $cnt -eq 2 ]
 done
 
 for name in member_one member_two member_three member_four; do
-    cnt=$(readelf -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
+    cnt=$(readelf $flags -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
     case $name in
 	member_one|member_two)
 	    [ $cnt -eq 2 ]
@@ -22,7 +27,7 @@ for name in member_one member_two member_three member_four; do
 	esac
 done
 
-decl_cnt=$(readelf -wi 1 | grep -c "DW_AT_declaration" || true)
+decl_cnt=$(readelf $flags -wi 1 | grep -c "DW_AT_declaration" || true)
 
 $execs/dwz-for-test --odr 1 2 -m 3
 
@@ -30,23 +35,23 @@ verify-dwarf.sh 1
 verify-dwarf.sh 3
 
 for name in aaa bbb ccc; do
-    cnt=$(readelf -wi 3 | grep -c "DW_AT_name.*:.*$name" || true)
+    cnt=$(readelf $flags -wi 3 | grep -c "DW_AT_name.*:.*$name" || true)
     [ $cnt -eq 1 ]
 done
 
 for name in member_one member_two member_three member_four; do
-    cnt=$(readelf -wi 3 | grep -c "DW_AT_name.*:.*$name" || true)
+    cnt=$(readelf $flags -wi 3 | grep -c "DW_AT_name.*:.*$name" || true)
     [ $cnt -eq 1 ]
 done
 
 
 for name in aaa bbb ccc; do
-    cnt=$(readelf -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
+    cnt=$(readelf $flags -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
     [ $cnt -eq 0 ]
 done
 
 for name in member_one member_two member_three member_four; do
-    cnt=$(readelf -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
+    cnt=$(readelf $flags -wi 1 | grep -c "DW_AT_name.*:.*$name" || true)
     [ $cnt -eq 0 ]
 done
 
diff --git a/testsuite/scripts/gnu-debugaltlink-name.sh b/testsuite/scripts/gnu-debugaltlink-name.sh
index 667c5fd..c594c9a 100755
--- a/testsuite/scripts/gnu-debugaltlink-name.sh
+++ b/testsuite/scripts/gnu-debugaltlink-name.sh
@@ -1,11 +1,17 @@
 #!/bin/sh
 
-if ! readelf -S $1 | grep -q '\.gnu_debugaltlink'; then
+flags=""
+if readelf -h 2>&1 | grep -q "\-wN,"; then
+    flags=-wN
+fi
+
+if ! readelf $flags -S $1 | grep -q '\.gnu_debugaltlink'; then
     exit
 fi
 
 readelf \
     --string-dump=.gnu_debugaltlink \
+    $flags \
     $1 \
     | grep -a '\[[ 	]*0\]' \
     | sed 's/.*0\]  //'

             reply	other threads:[~2021-02-28  7:36 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-28  7:36 Tom de Vries [this message]
2021-02-28 15:21 ` Mark Wielaard
2021-03-01 12:50   ` Mark Wielaard

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=20210228073647.GA25615@delia \
    --to=tdevries@suse.de \
    --cc=dwz@sourceware.org \
    --cc=jakub@redhat.com \
    --cc=mark@klomp.org \
    /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).