public inbox for dwz@sourceware.org
 help / color / mirror / Atom feed
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


  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).