* [Bug general/23370] New: run-next-cfi-self.sh fails on armv7l @ 2018-07-04 14:12 mliska at suse dot cz 2018-07-05 14:21 ` [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections mark at klomp dot org ` (2 more replies) 0 siblings, 3 replies; 4+ messages in thread From: mliska at suse dot cz @ 2018-07-04 14:12 UTC (permalink / raw) To: elfutils-devel https://sourceware.org/bugzilla/show_bug.cgi?id=23370 Bug ID: 23370 Summary: run-next-cfi-self.sh fails on armv7l Product: elfutils Version: unspecified Status: UNCONFIRMED Severity: normal Priority: P2 Component: general Assignee: unassigned at sourceware dot org Reporter: mliska at suse dot cz CC: elfutils-devel at sourceware dot org Target Milestone: --- Created attachment 11115 --> https://sourceware.org/bugzilla/attachment.cgi?id=11115&action=edit affected object file [ 275s] /home/abuild/rpmbuild/BUILD/elfutils-0.173/src/size.o [ 275s] .debug_frame [ 275s] /home/abuild/rpmbuild/BUILD/elfutils-0.173/tests/next_cfi: dwarf_next_cfi failed: invalid DWARF [ 275s] [ 275s] *** failure in /home/abuild/rpmbuild/BUILD/elfutils-0.173/tests/next_cfi /home/abuild/rpmbuild/BUILD/elfutils-0.173/src/size.o [ 275s] /home/abuild/rpmbuild/BUILD/elfutils-0.173/src/strip.o [ 275s] .debug_frame [ 275s] /home/abuild/rpmbuild/BUILD/elfutils-0.173/tests/next_cfi: dwarf_next_cfi failed: invalid DWARF [ 275s] [ 275s] *** failure in /home/abuild/rpmbuild/BUILD/elfutils-0.173/tests/next_cfi /home/abuild/rpmbuild/BUILD/elfutils-0.173/src/strip.o [ 275s] FAIL run-next-cfi-self.sh (exit status: 1) Mark is suggesting following patch that will disable for now the test-case: diff --git a/tests/run-next-cfi-self.sh b/tests/run-next-cfi-self.sh index 2c42ea3f..fa91b746 100755 --- a/tests/run-next-cfi-self.sh +++ b/tests/run-next-cfi-self.sh @@ -18,4 +18,5 @@ . $srcdir/test-subr.sh # Sanity check toolchain/dwarf_next_cfi -testrun_on_self ${abs_builddir}/next_cfi +testrun_on_self_exe ${abs_builddir}/next_cfi +testrun_on_self_lib ${abs_builddir}/next_cfi -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections 2018-07-04 14:12 [Bug general/23370] New: run-next-cfi-self.sh fails on armv7l mliska at suse dot cz @ 2018-07-05 14:21 ` mark at klomp dot org 2018-07-10 13:12 ` mliska at suse dot cz 2018-07-10 17:48 ` mark at klomp dot org 2 siblings, 0 replies; 4+ messages in thread From: mark at klomp dot org @ 2018-07-05 14:21 UTC (permalink / raw) To: elfutils-devel https://sourceware.org/bugzilla/show_bug.cgi?id=23370 Mark Wielaard <mark at klomp dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |mark at klomp dot org Summary|run-next-cfi-self.sh fails |run-next-cfi-self.sh |on armv7l |doesn't handle compressed | |ELF sections --- Comment #1 from Mark Wielaard <mark at klomp dot org> --- Although relocations in ET_REL files could be an issue, they aren't actually for this test, because the relocations that are there are against the addresses inside to .debug_frame section, and we don't care what they are in this test case. [We do really need some easier way to apply simple relocations when dealing with ET_REL files (currently you need to create a Dwfl, which is a bit overkill in this case).] The real issue in this case is that the toolchain that created this test file (size.o) used ELF debug section compression: [35] .debug_frame PROGBITS 00000000 0057e4 0000c5 0 C 0 0 4 [ELF ZLIB (1) 000154 4] (Oddly enough it seems it only does this for ET_REL files and the linker again decompresses again when creating the ET_EXEC/DYN files. Which seems horribly inefficient.) So the real fix is to just uncompress the section in the test: diff --git a/tests/next_cfi.c b/tests/next_cfi.c index b923744..ae324c4 100644 --- a/tests/next_cfi.c +++ b/tests/next_cfi.c @@ -33,7 +33,7 @@ #include <unistd.h> void -handle_section (const unsigned char e_ident[], +handle_section (char *name, const unsigned char e_ident[], Elf_Scn *scn, const bool is_eh) { if (is_eh) @@ -41,6 +41,24 @@ handle_section (const unsigned char e_ident[], else printf (".debug_frame\n"); + GElf_Shdr mem; + GElf_Shdr *shdr = gelf_getshdr (scn, &mem); + if (shdr == NULL) + error (EXIT_FAILURE, 0, "Couldn't get section header: %s", + elf_errmsg (-1)); + if ((shdr->sh_flags & SHF_COMPRESSED) != 0) + { + if (elf_compress (scn, 0, 0) < 0) + error (EXIT_FAILURE, 0, "Couldn't decompress section: %s", + elf_errmsg (-1)); + } + else if (name[0] == '.' && name[1] == 'z') + { + if (elf_compress_gnu (scn, 0, 0) < 0) + error (EXIT_FAILURE, 0, "Couldn't decompress section: %s", + elf_errmsg (-1)); + } + Elf_Data *data = elf_getdata (scn, NULL); if (data == NULL || data->d_buf == NULL) error (EXIT_FAILURE, 0, "no section data"); @@ -117,9 +135,10 @@ main (int argc, char *argv[]) if (name != NULL && shdr.sh_type == SHT_PROGBITS) { if (strcmp (name, ".eh_frame") == 0) - handle_section (ident, scn, true); - if (strcmp (name, ".debug_frame") == 0) - handle_section (ident, scn, false); + handle_section (name, ident, scn, true); + if (strcmp (name, ".debug_frame") == 0 + || strcmp (name, ".zdebug_frame") == 0) + handle_section (name, ident, scn, false); } } } -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections 2018-07-04 14:12 [Bug general/23370] New: run-next-cfi-self.sh fails on armv7l mliska at suse dot cz 2018-07-05 14:21 ` [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections mark at klomp dot org @ 2018-07-10 13:12 ` mliska at suse dot cz 2018-07-10 17:48 ` mark at klomp dot org 2 siblings, 0 replies; 4+ messages in thread From: mliska at suse dot cz @ 2018-07-10 13:12 UTC (permalink / raw) To: elfutils-devel https://sourceware.org/bugzilla/show_bug.cgi?id=23370 --- Comment #2 from Martin Liska <mliska at suse dot cz> --- (In reply to Mark Wielaard from comment #1) > Although relocations in ET_REL files could be an issue, they aren't actually > for this test, because the relocations that are there are against the > addresses inside to .debug_frame section, and we don't care what they are in > this test case. > > [We do really need some easier way to apply simple relocations when dealing > with ET_REL files (currently you need to create a Dwfl, which is a bit > overkill in this case).] > > The real issue in this case is that the toolchain that created this test > file (size.o) used ELF debug section compression: > > [35] .debug_frame PROGBITS 00000000 0057e4 0000c5 0 C 0 > 0 4 > [ELF ZLIB (1) 000154 4] > > (Oddly enough it seems it only does this for ET_REL files and the linker > again decompresses again when creating the ET_EXEC/DYN files. Which seems > horribly inefficient.) > > So the real fix is to just uncompress the section in the test: > The suggested patch works for me as we in openSUSE have enabled compression of debug info section in gas for all targets. -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections 2018-07-04 14:12 [Bug general/23370] New: run-next-cfi-self.sh fails on armv7l mliska at suse dot cz 2018-07-05 14:21 ` [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections mark at klomp dot org 2018-07-10 13:12 ` mliska at suse dot cz @ 2018-07-10 17:48 ` mark at klomp dot org 2 siblings, 0 replies; 4+ messages in thread From: mark at klomp dot org @ 2018-07-10 17:48 UTC (permalink / raw) To: elfutils-devel https://sourceware.org/bugzilla/show_bug.cgi?id=23370 Mark Wielaard <mark at klomp dot org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution|--- |FIXED --- Comment #3 from Mark Wielaard <mark at klomp dot org> --- (In reply to Martin Liska from comment #2) > The suggested patch works for me as we in openSUSE have enabled compression > of debug info section in gas for all targets. Thanks for testing. Pushed to master. commit b40001f67c0809e2fe8c7a78c2a5ac12026f23b4 (HEAD -> master) Author: Mark Wielaard <mark@klomp.org> Date: Thu Jul 5 16:24:57 2018 +0200 tests: Handle compressed sections in next_cfi testcase. Some toolchains use compressed ELF sections by default. This would make run-next-cfi-self.sh fail because it would try to decode the compressed data. Fix by decompressing the section first. https://sourceware.org/bugzilla/show_bug.cgi?id=23370 Signed-off-by: Mark Wielaard <mark@klomp.org> -- You are receiving this mail because: You are on the CC list for the bug. ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2018-07-10 17:48 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2018-07-04 14:12 [Bug general/23370] New: run-next-cfi-self.sh fails on armv7l mliska at suse dot cz 2018-07-05 14:21 ` [Bug general/23370] run-next-cfi-self.sh doesn't handle compressed ELF sections mark at klomp dot org 2018-07-10 13:12 ` mliska at suse dot cz 2018-07-10 17:48 ` mark at klomp dot org
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).