From 45bcddfdaca0d23b7521e537e93d2b5dbfb9b3d8 Mon Sep 17 00:00:00 2001 From: Aaron Merey Date: Thu, 29 Feb 2024 20:56:12 -0500 Subject: [PATCH] skip if objcopy doesn't work --- tests/run-getsrc-die.sh | 35 +++++++++++++--------- tests/testfile-inlines-no-aranges.bz2 | Bin 2673 -> 0 bytes tests/testfile-lex-inlines-no-aranges.bz2 | Bin 2486 -> 0 bytes tests/testfile-no-aranges.bz2 | Bin 7918 -> 0 bytes 4 files changed, 21 insertions(+), 14 deletions(-) delete mode 100644 tests/testfile-inlines-no-aranges.bz2 delete mode 100644 tests/testfile-lex-inlines-no-aranges.bz2 delete mode 100644 tests/testfile-no-aranges.bz2 diff --git a/tests/run-getsrc-die.sh b/tests/run-getsrc-die.sh index 40f62480..6740e5d9 100755 --- a/tests/run-getsrc-die.sh +++ b/tests/run-getsrc-die.sh @@ -21,21 +21,18 @@ # Output/files/lines matched should equal what is done through addr2line # which uses dwfl_module_getsrc. This test uses dwarf_addrdie and # dwarf_getsrc_die -testfiles testfile testfile-inlines testfile-no-aranges -testfiles testfile-lex-inlines testfile-inlines-no-aranges -tempfiles testfile-lex-inlines-no-aranges good.out getsrc_die.out +testfiles testfile testfile-inlines testfile-lex-inlines +tempfiles testfile-no-aranges testfile-inlines-no-aranges getsrc_die.out +tempfiles testfile-lex-inlines-no-aranges good1.out good2.out good3.out -cat > good.out <<\EOF +cat > good1.out <<\EOF /home/drepper/gnu/new-bu/build/ttt/f.c:3 /home/drepper/gnu/new-bu/build/ttt/b.c:4 EOF -cat good.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile 0x08048468 0x0804845c +cat good1.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile 0x08048468 0x0804845c -# Each test should also pass with no .debug_aranges present. -cat good.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-no-aranges 0x08048468 0x0804845c - -cat > good.out <<\EOF +cat > good2.out <<\EOF /tmp/x.cpp:5 /tmp/x.cpp:6 /tmp/x.cpp:10 @@ -48,17 +45,27 @@ cat > good.out <<\EOF /tmp/x.cpp:5 EOF -cat good.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-inlines 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f1 0x00000000000005f2 -cat good.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-inlines-no-aranges 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f1 0x00000000000005f2 +cat good2.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-inlines 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f1 0x00000000000005f2 -cat > good.out <<\EOF +cat > good3.out <<\EOF /tmp/x.cpp:5 /tmp/x.cpp:5 /tmp/x.cpp:5 /tmp/x.cpp:5 EOF -cat good.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-lex-inlines 0x0000000000000680 0x0000000000000681 0x0000000000000690 0x0000000000000691 -cat good.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-lex-inlines-no-aranges 0x0000000000000680 0x0000000000000681 0x0000000000000690 0x0000000000000691 +cat good3.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-lex-inlines 0x0000000000000680 0x0000000000000681 0x0000000000000690 0x0000000000000691 + +# Each test should also pass with no .debug_aranges present. If objcopy cannot +# strip the testfiles then skip the remaining tests. +objcopy --remove-section .debug_aranges testfile testfile-no-aranges || exit 0 +objcopy --remove-section .debug_aranges testfile-inlines testfile-inlines-no-aranges || exit 0 +objcopy --remove-section .debug_aranges testfile-lex-inlines testfile-lex-inlines-no-aranges || exit 0 + +cat good1.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-no-aranges 0x08048468 0x0804845c + +cat good2.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-inlines-no-aranges 0x00000000000005a0 0x00000000000005a1 0x00000000000005b0 0x00000000000005b1 0x00000000000005c0 0x00000000000005d0 0x00000000000005e0 0x00000000000005e1 0x00000000000005f1 0x00000000000005f2 + +cat good3.out | testrun_compare ${abs_top_builddir}/tests/getsrc_die testfile-lex-inlines-no-aranges 0x0000000000000680 0x0000000000000681 0x0000000000000690 0x0000000000000691 exit 0 diff --git a/tests/testfile-inlines-no-aranges.bz2 b/tests/testfile-inlines-no-aranges.bz2 deleted file mode 100644 index ab66b17e25c376bc80bf80aa753aea48c9074aed..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 2673 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 AP5=M^ diff --git a/tests/testfile-no-aranges.bz2 b/tests/testfile-no-aranges.bz2 deleted file mode 100644 index a01db39ccbe93126fe95ae189aa0ca6be57fe582..0000000000000000000000000000000000000000 GIT binary patch literal 0 Hc-jL100001 literal 7918 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 Ymto@JtS80Q{crv*