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: Thu, 30 Jun 2022 16:23:02 +0200	[thread overview]
Message-ID: <9b8016f2-b9f4-b310-4a73-692f70e32799@suse.cz> (raw)
In-Reply-To: <Yrt2EEXUJful31ix@wildebeest.org>

[-- Attachment #1: Type: text/plain, Size: 7560 bytes --]

On 6/28/22 23:43, Mark Wielaard wrote:
> Hi,
> 
> 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?

Martin

> 
> Those sockaddr declarations come from this compilation unit:
> 
>   Compilation Unit @ offset 0x28:
>    Length:        0x4d2 (32-bit)
>    Version:       5
>    Unit Type:     DW_UT_compile (1)
>    Abbrev Offset: 0x14
>    Pointer Size:  8
>  <0><34>: Abbrev Number: 14 (DW_TAG_compile_unit)
>     <35>   DW_AT_producer    : (indirect string, offset: 0x1e5): GNU C11 12.1.0 -mtune=generic -march=x8
> 6-64 -g -O2 -std=gnu11 -fgnu89-inline -funwind-tables -fasynchronous-unwind-tables -fstack-clash-protect
> ion -fpatchable-function-entry=16,14 -fmerge-all-constants -frounding-math -fstack-protector-strong -fno
> -common -fmath-errno -fpie -fcf-protection=full -ftls-model=initial-exec
>     <39>   DW_AT_language    : 29       (C11)
>     <3a>   DW_AT_name        : (indirect line string, offset: 0x45): ../sysdeps/x86/abi-note.c
>     <3e>   DW_AT_comp_dir    : (indirect line string, offset: 0x0): /home/abuild/rpmbuild/BUILD/glibc-2.
> 35/csu
>     <42>   DW_AT_stmt_list   : 0x5d
> 
> I am not sure why the abi-note would pull in all these sockeraddr declarations.
> 
> Cheers,
> 
> Mark
> 

[-- Attachment #2: 0001-testsuite-verify-directly-merged-DW_AT_declarations.patch --]
[-- Type: text/x-patch, Size: 2209 bytes --]

From c00fe58d8437748041793279abcadbcd3660fa5c 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 | 11 +++++------
 testsuite/dwz.tests/odr-struct.sh    | 11 +++++------
 2 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/testsuite/dwz.tests/odr-struct-ns.sh b/testsuite/dwz.tests/odr-struct-ns.sh
index 4fd00af..7ace534 100644
--- a/testsuite/dwz.tests/odr-struct-ns.sh
+++ b/testsuite/dwz.tests/odr-struct-ns.sh
@@ -21,8 +21,6 @@ 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)
-
 $execs/dwz-for-test --odr 1
 
 verify-dwarf.sh 1
@@ -38,8 +36,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
+
+if grep bbb decls >/dev/null ; then exit 1; fi
+if grep ccc decls >/dev/null ; then exit 2; fi
 
-rm -f 1
+rm -f 1 decls
diff --git a/testsuite/dwz.tests/odr-struct.sh b/testsuite/dwz.tests/odr-struct.sh
index d0fddf9..7060c63 100644
--- a/testsuite/dwz.tests/odr-struct.sh
+++ b/testsuite/dwz.tests/odr-struct.sh
@@ -21,8 +21,6 @@ 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)
-
 $execs/dwz-for-test --odr 1
 
 verify-dwarf.sh 1
@@ -38,8 +36,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
+
+if grep bbb decls >/dev/null ; then exit 1; fi
+if grep ccc decls >/dev/null ; then exit 2; fi
 
-rm -f 1
+rm -f 1 decls
-- 
2.36.1


  parent reply	other threads:[~2022-06-30 14:23 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 [this message]
2022-06-30 20:05         ` Mark Wielaard
2022-07-01  6:42           ` Martin Liška
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=9b8016f2-b9f4-b310-4a73-692f70e32799@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).