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