From: "Martin Liška" <mliska@suse.cz>
To: Mark Wielaard <mark@klomp.org>
Cc: dwz@sourceware.org, Tom de Vries <tdevries@suse.de>
Subject: Re: ☺ Buildbot (GNU Toolchain): dwz - build successful (master)
Date: Fri, 1 Jul 2022 08:42:00 +0200 [thread overview]
Message-ID: <edfe108c-f4a3-7835-8c32-8c1176e1e3a9@suse.cz> (raw)
In-Reply-To: <Yr4CIH7/cSQN0wkT@wildebeest.org>
[-- Attachment #1: Type: text/plain, Size: 7447 bytes --]
On 6/30/22 22:05, Mark Wielaard wrote:
> Hi Martin,
>
> On Thu, Jun 30, 2022 at 04:23:02PM +0200, Martin Liška wrote:
>> On 6/28/22 23:43, Mark Wielaard wrote:
>>> On Mon, Jun 27, 2022 at 09:25:23AM +0200, Martin Liška wrote:
>>>> On 6/26/22 00:17, Mark Wielaard wrote:
>>>>> The build is now green on all builders except one:
>>>>> https://builder.sourceware.org/buildbot/#/builders?tags=dwz
>>>>> dwz-opensusetw-x86_64 fails one testcase: odr-struct-ns.sh
>>>>> https://builder.sourceware.org/buildbot/#/builders/100/builds/2
>>>>>
>>>>> Martin, could you take a look at what is different on tumbleweed from
>>>>> the other builders that makes that testcase fail?
>>>>
>>>> It's going to be likely GCC compiler version that plays role.
>>>>
>>>> Anyway, it's caused by:
>>>>
>>>> expected_decl_cnt: 20, decl_cnt: 10
>>>
>>> I took a quick look and this seems to be caused by lots of extra
>>> DW_AT_declaration in the original binary:
>>>
>>> readelf -wi odr-struct-ns | grep -3 DW_AT_declaration | grep name
>>> <1c0> DW_AT_name : (indirect string, offset: 0x3f1): sockaddr_at
>>> <1d4> DW_AT_name : (indirect string, offset: 0x450): sockaddr_ax25
>>> <1e8> DW_AT_name : (indirect string, offset: 0x366): sockaddr_dl
>>> <1fc> DW_AT_name : (indirect string, offset: 0x382): sockaddr_eon
>>> <2c4> DW_AT_name : (indirect string, offset: 0x5e): sockaddr_inarp
>>> <2d8> DW_AT_name : (indirect string, offset: 0xa7): sockaddr_ipx
>>> <2ec> DW_AT_name : (indirect string, offset: 0x51): sockaddr_iso
>>> <300> DW_AT_name : (indirect string, offset: 0x11c): sockaddr_ns
>>> <314> DW_AT_name : (indirect string, offset: 0x86): sockaddr_un
>>> <328> DW_AT_name : (indirect string, offset: 0x3bd): sockaddr_x25
>>> <671> DW_AT_name : (indirect string, offset: 0x3f1): sockaddr_at
>>> <685> DW_AT_name : (indirect string, offset: 0x450): sockaddr_ax25
>>> <699> DW_AT_name : (indirect string, offset: 0x366): sockaddr_dl
>>> <6ad> DW_AT_name : (indirect string, offset: 0x382): sockaddr_eon
>>> <770> DW_AT_name : (indirect string, offset: 0x5e): sockaddr_inarp
>>> <784> DW_AT_name : (indirect string, offset: 0xa7): sockaddr_ipx
>>> <798> DW_AT_name : (indirect string, offset: 0x51): sockaddr_iso
>>> <7ac> DW_AT_name : (indirect string, offset: 0x11c): sockaddr_ns
>>> <7c0> DW_AT_name : (indirect string, offset: 0x86): sockaddr_un
>>> <7d4> DW_AT_name : (indirect string, offset: 0x3bd): sockaddr_x25
>>> <9e0> DW_AT_name : bbb
>>> <aa6> DW_AT_name : ccc
>>
>> Just to summarize it what we have for Tumbleweed and Leap:
>>
>> TW:
>>
>> ==before==
>> <1c0> DW_AT_name : (indirect string, offset: 0x3f1): sockaddr_at
>> <1d4> DW_AT_name : (indirect string, offset: 0x450): sockaddr_ax25
>> <1e8> DW_AT_name : (indirect string, offset: 0x366): sockaddr_dl
>> <1fc> DW_AT_name : (indirect string, offset: 0x382): sockaddr_eon
>> <2c4> DW_AT_name : (indirect string, offset: 0x5e): sockaddr_inarp
>> <2d8> DW_AT_name : (indirect string, offset: 0xa7): sockaddr_ipx
>> <2ec> DW_AT_name : (indirect string, offset: 0x51): sockaddr_iso
>> <300> DW_AT_name : (indirect string, offset: 0x11c): sockaddr_ns
>> <314> DW_AT_name : (indirect string, offset: 0x86): sockaddr_un
>> <328> DW_AT_name : (indirect string, offset: 0x3bd): sockaddr_x25
>> <671> DW_AT_name : (indirect string, offset: 0x3f1): sockaddr_at
>> <685> DW_AT_name : (indirect string, offset: 0x450): sockaddr_ax25
>> <699> DW_AT_name : (indirect string, offset: 0x366): sockaddr_dl
>> <6ad> DW_AT_name : (indirect string, offset: 0x382): sockaddr_eon
>> <770> DW_AT_name : (indirect string, offset: 0x5e): sockaddr_inarp
>> <784> DW_AT_name : (indirect string, offset: 0xa7): sockaddr_ipx
>> <798> DW_AT_name : (indirect string, offset: 0x51): sockaddr_iso
>> <7ac> DW_AT_name : (indirect string, offset: 0x11c): sockaddr_ns
>> <7c0> DW_AT_name : (indirect string, offset: 0x86): sockaddr_un
>> <7d4> DW_AT_name : (indirect string, offset: 0x3bd): sockaddr_x25
>> <9e0> DW_AT_name : bbb
>> <aa6> DW_AT_name : ccc
>> ==after==
>> <ee> DW_AT_name : (indirect string, offset: 0x3f1): sockaddr_at
>> <fc> DW_AT_name : (indirect string, offset: 0x450): sockaddr_ax25
>> <10a> DW_AT_name : (indirect string, offset: 0x366): sockaddr_dl
>> <118> DW_AT_name : (indirect string, offset: 0x382): sockaddr_eon
>> <1b6> DW_AT_name : (indirect string, offset: 0x5e): sockaddr_inarp
>> <1c4> DW_AT_name : (indirect string, offset: 0xa7): sockaddr_ipx
>> <1d2> DW_AT_name : (indirect string, offset: 0x51): sockaddr_iso
>> <1e0> DW_AT_name : (indirect string, offset: 0x11c): sockaddr_ns
>> <1ee> DW_AT_name : (indirect string, offset: 0x86): sockaddr_un
>> <1fc> DW_AT_name : (indirect string, offset: 0x3bd): sockaddr_x25
>>
>> while Leap has:
>>
>> ==before==
>> <105> DW_AT_name : bbb
>> <1cb> DW_AT_name : ccc
>> <2b3> DW_AT_name : (indirect string, offset: 0x4b6): __preinit_array_end
>> <2be> DW_AT_name : (indirect string, offset: 0x2a5): __init_array_start
>> <2c9> DW_AT_name : (indirect string, offset: 0x4ca): __init_array_end
>> <2f1> DW_AT_name : (indirect string, offset: 0x2fd): __fini_array_end
>> <2fc> DW_AT_name : (indirect string, offset: 0x2ed): __libc_csu_fini
>> <3bb> DW_AT_linkage_name: (indirect string, offset: 0x33d): _init
>> <3bf> DW_AT_name : (indirect string, offset: 0x33d): _init
>> ==after==
>> <27e> DW_AT_name : (indirect string, offset: 0x4b6): __preinit_array_end
>> <286> DW_AT_name : (indirect string, offset: 0x2a5): __init_array_start
>> <28e> DW_AT_name : (indirect string, offset: 0x4ca): __init_array_end
>> <2ab> DW_AT_name : (indirect string, offset: 0x2fd): __fini_array_end
>> <2b4> DW_AT_name : (indirect string, offset: 0x2ed): __libc_csu_fini
>> <34c> DW_AT_linkage_name: (indirect string, offset: 0x33d): _init
>> <350> DW_AT_name : (indirect string, offset: 0x33d): _init
>>
>> So as Florian said, we should ignore sockeraddr decls and check that bbb and ccc
>> are not present after dwz.
>>
>> What about using the following patch?
>
> That fails on my local debian-arm64 setup.
>
> Because bbb and ccc were the only DW_AT_declarations in the original
> binary.
>
> $ readelf -wi odr-struct-ns | grep -3 DW_AT_declaration | grep name
> <7c> DW_AT_name : bbb
> <14b> DW_AT_name : ccc
>
> So
> readelf -wi 1 | grep -3 DW_AT_declaration > decls
> fails because the grep fails
>
> So I think that should also be a passing condition (no decls left).
> It would be good to make sure they were there at the start though.
>
> Cheers,
>
> Mark
>
Oh, I see, so please try the updated version of the patch?
Cheers,
Martin
[-- Attachment #2: 0001-testsuite-verify-directly-merged-DW_AT_declarations.patch --]
[-- Type: text/x-patch, Size: 2523 bytes --]
From e08b4e361546d4db773b3948241b586fa5ea55d7 Mon Sep 17 00:00:00 2001
From: Martin Liska <mliska@suse.cz>
Date: Thu, 30 Jun 2022 16:21:58 +0200
Subject: [PATCH] testsuite: verify directly merged DW_AT_declarations
Do not rely on number of DW_AT_declaration and check symbols
instead.
---
testsuite/dwz.tests/odr-struct-ns.sh | 14 +++++++++-----
testsuite/dwz.tests/odr-struct.sh | 14 +++++++++-----
2 files changed, 18 insertions(+), 10 deletions(-)
diff --git a/testsuite/dwz.tests/odr-struct-ns.sh b/testsuite/dwz.tests/odr-struct-ns.sh
index 4fd00af..c6e0f1d 100644
--- a/testsuite/dwz.tests/odr-struct-ns.sh
+++ b/testsuite/dwz.tests/odr-struct-ns.sh
@@ -21,7 +21,10 @@ 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)
+# Check that bbb and ccc are present as DW_AT_declaration
+readelf -wi 1 | grep -3 DW_AT_declaration > decls
+grep bbb decls >/dev/null
+grep ccc decls >/dev/null
$execs/dwz-for-test --odr 1
@@ -38,8 +41,9 @@ for name in member_one member_two member_three member_four; do
done
# We expect two decls to be removed, for bbb and ccc.
-expected_decl_cnt=$(($decl_cnt - 2))
-decl_cnt=$(readelf -wi 1 | grep -c "DW_AT_declaration" || true)
-[ $expected_decl_cnt -eq $decl_cnt ]
+readelf -wi 1 | grep -3 DW_AT_declaration > decls || true
-rm -f 1
+if grep bbb decls >/dev/null ; then exit 1; fi
+if grep ccc decls >/dev/null ; then exit 2; fi
+
+rm -f 1 decls
diff --git a/testsuite/dwz.tests/odr-struct.sh b/testsuite/dwz.tests/odr-struct.sh
index d0fddf9..c6793f9 100644
--- a/testsuite/dwz.tests/odr-struct.sh
+++ b/testsuite/dwz.tests/odr-struct.sh
@@ -21,7 +21,10 @@ 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)
+# Check that bbb and ccc are present as DW_AT_declaration
+readelf -wi 1 | grep -3 DW_AT_declaration > decls
+grep bbb decls >/dev/null
+grep ccc decls >/dev/null
$execs/dwz-for-test --odr 1
@@ -38,8 +41,9 @@ for name in member_one member_two member_three member_four; do
done
# We expect two decls to be removed, for bbb and ccc.
-expected_decl_cnt=$(($decl_cnt - 2))
-decl_cnt=$(readelf -wi 1 | grep -c "DW_AT_declaration" || true)
-[ $expected_decl_cnt -eq $decl_cnt ]
+readelf -wi 1 | grep -3 DW_AT_declaration > decls || true
-rm -f 1
+if grep bbb decls >/dev/null ; then exit 1; fi
+if grep ccc decls >/dev/null ; then exit 2; fi
+
+rm -f 1 decls
--
2.36.1
next prev parent reply other threads:[~2022-07-01 6:42 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-25 21:56 builder
2022-06-25 22:17 ` Mark Wielaard
2022-06-27 7:25 ` Martin Liška
2022-06-28 21:43 ` Mark Wielaard
2022-06-29 7:17 ` Florian Weimer
2022-06-30 14:23 ` Martin Liška
2022-06-30 20:05 ` Mark Wielaard
2022-07-01 6:42 ` Martin Liška [this message]
2022-07-01 7:43 ` Mark Wielaard
2022-07-01 7:53 ` Martin Liška
-- strict thread matches above, loose matches on Subject: below --
2022-11-03 22:18 builder
2022-07-11 8:44 builder
2022-07-11 8:44 builder
2022-07-07 15:29 builder
2022-07-07 13:12 builder
2022-07-07 13:10 builder
2022-07-07 12:46 builder
2022-07-07 12:46 builder
2022-07-07 12:39 builder
2022-07-07 12:38 builder
2022-07-07 12:32 builder
2022-07-07 12:31 builder
2022-07-01 7:56 builder
2022-06-30 12:50 builder
2022-06-30 12:55 ` Mark Wielaard
2022-06-25 21:55 builder
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=edfe108c-f4a3-7835-8c32-8c1176e1e3a9@suse.cz \
--to=mliska@suse.cz \
--cc=dwz@sourceware.org \
--cc=mark@klomp.org \
--cc=tdevries@suse.de \
/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).