Brian Silverman | 8649792 | 2018-02-10 19:28:39 -0500 | [diff] [blame] | 1 | #! /bin/sh |
| 2 | # Copyright (C) 2017 Red Hat, Inc. |
| 3 | # This file is part of elfutils. |
| 4 | # |
| 5 | # This file is free software; you can redistribute it and/or modify |
| 6 | # it under the terms of the GNU General Public License as published by |
| 7 | # the Free Software Foundation; either version 3 of the License, or |
| 8 | # (at your option) any later version. |
| 9 | # |
| 10 | # elfutils is distributed in the hope that it will be useful, but |
| 11 | # WITHOUT ANY WARRANTY; without even the implied warranty of |
| 12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 13 | # GNU General Public License for more details. |
| 14 | # |
| 15 | # You should have received a copy of the GNU General Public License |
| 16 | # along with this program. If not, see <http://www.gnu.org/licenses/>. |
| 17 | |
| 18 | . $srcdir/test-subr.sh |
| 19 | |
| 20 | # strip -o output and -f debug files |
| 21 | tempfiles testfile.elf testfile.debug |
| 22 | |
| 23 | # A random 32bit testfile |
| 24 | testfiles testfile |
| 25 | |
| 26 | # Explicitly keep .strtab (but not .symtab, so .strtab will be in both). 32bit |
| 27 | echo strip --keep-section=.strtab testfile |
| 28 | testrun ${abs_top_builddir}/src/strip --keep-section=.strtab -o testfile.elf -f testfile.debug testfile |
| 29 | echo elflint testfile.elf |
| 30 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 31 | echo elflint testfile.debug |
| 32 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 33 | echo readelf testfile.elf |
| 34 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 35 | There are 27 section headers, starting at offset 0xaf8: |
| 36 | |
| 37 | Section Headers: |
| 38 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 39 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 40 | [ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 41 | [ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 |
| 42 | [ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 |
| 43 | [ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 |
| 44 | [ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 |
| 45 | [ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 |
| 46 | [ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 |
| 47 | [ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 |
| 48 | [ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 |
| 49 | [10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 |
| 50 | [11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 |
| 51 | [12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 |
| 52 | [13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 |
| 53 | [14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 |
| 54 | [15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 |
| 55 | [16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 |
| 56 | [17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 |
| 57 | [18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 |
| 58 | [19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 |
| 59 | [20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 |
| 60 | [21] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 |
| 61 | [22] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1 |
| 62 | [23] .note NOTE 00000000 000738 0000a0 0 0 0 1 |
| 63 | [24] .strtab STRTAB 00000000 0007d8 000235 0 0 0 1 |
| 64 | [25] .gnu_debuglink PROGBITS 00000000 000a10 000014 0 0 0 4 |
| 65 | [26] .shstrtab STRTAB 00000000 000a24 0000d1 0 0 0 1 |
| 66 | |
| 67 | EOF |
| 68 | echo readelf testfile.debug |
| 69 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 70 | There are 35 section headers, starting at offset 0x463c: |
| 71 | |
| 72 | Section Headers: |
| 73 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 74 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 75 | [ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 76 | [ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 |
| 77 | [ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 |
| 78 | [ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 |
| 79 | [ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 |
| 80 | [ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 |
| 81 | [ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 |
| 82 | [ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 |
| 83 | [ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 |
| 84 | [10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 |
| 85 | [11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 |
| 86 | [12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 |
| 87 | [13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 |
| 88 | [14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 |
| 89 | [15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 |
| 90 | [16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 |
| 91 | [17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 |
| 92 | [18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 |
| 93 | [19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 |
| 94 | [20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 |
| 95 | [21] .sbss PROGBITS 080495c8 000120 000000 0 W 0 0 1 |
| 96 | [22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 |
| 97 | [23] .stab PROGBITS 00000000 000120 000720 12 24 0 4 |
| 98 | [24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1 |
| 99 | [25] .comment NOBITS 00000000 002174 000170 0 0 0 1 |
| 100 | [26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1 |
| 101 | [27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1 |
| 102 | [28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1 |
| 103 | [29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1 |
| 104 | [30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1 |
| 105 | [31] .note NOTE 00000000 003c96 0000a0 0 0 0 1 |
| 106 | [32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1 |
| 107 | [33] .symtab SYMTAB 00000000 003e64 0005a0 16 34 68 4 |
| 108 | [34] .strtab STRTAB 00000000 004404 000235 0 0 0 1 |
| 109 | |
| 110 | EOF |
| 111 | |
| 112 | # Explicitly keep .symtab (pulls in .strtab, so they will both be in elf). 32bit |
| 113 | echo strip --keep-section=.symtab testfile |
| 114 | testrun ${abs_top_builddir}/src/strip --keep-section=.symtab -o testfile.elf -f testfile.debug testfile |
| 115 | echo elflint testfile.elf |
| 116 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 117 | echo elflint testfile.debug |
| 118 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 119 | echo readelf testfile.elf |
| 120 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 121 | There are 28 section headers, starting at offset 0x1010: |
| 122 | |
| 123 | Section Headers: |
| 124 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 125 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 126 | [ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 127 | [ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 |
| 128 | [ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 |
| 129 | [ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 |
| 130 | [ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 |
| 131 | [ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 |
| 132 | [ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 |
| 133 | [ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 |
| 134 | [ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 |
| 135 | [10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 |
| 136 | [11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 |
| 137 | [12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 |
| 138 | [13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 |
| 139 | [14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 |
| 140 | [15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 |
| 141 | [16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 |
| 142 | [17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 |
| 143 | [18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 |
| 144 | [19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 |
| 145 | [20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 |
| 146 | [21] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 |
| 147 | [22] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1 |
| 148 | [23] .note NOTE 00000000 000738 0000a0 0 0 0 1 |
| 149 | [24] .symtab SYMTAB 00000000 0007d8 000510 16 25 59 4 |
| 150 | [25] .strtab STRTAB 00000000 000ce8 000235 0 0 0 1 |
| 151 | [26] .gnu_debuglink PROGBITS 00000000 000f20 000014 0 0 0 4 |
| 152 | [27] .shstrtab STRTAB 00000000 000f34 0000d9 0 0 0 1 |
| 153 | |
| 154 | EOF |
| 155 | echo readelf testfile.debug |
| 156 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 157 | There are 35 section headers, starting at offset 0x3e64: |
| 158 | |
| 159 | Section Headers: |
| 160 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 161 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 162 | [ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 163 | [ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 |
| 164 | [ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 |
| 165 | [ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 |
| 166 | [ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 |
| 167 | [ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 |
| 168 | [ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 |
| 169 | [ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 |
| 170 | [ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 |
| 171 | [10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 |
| 172 | [11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 |
| 173 | [12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 |
| 174 | [13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 |
| 175 | [14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 |
| 176 | [15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 |
| 177 | [16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 |
| 178 | [17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 |
| 179 | [18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 |
| 180 | [19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 |
| 181 | [20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 |
| 182 | [21] .sbss PROGBITS 080495c8 000120 000000 0 W 0 0 1 |
| 183 | [22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 |
| 184 | [23] .stab PROGBITS 00000000 000120 000720 12 24 0 4 |
| 185 | [24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1 |
| 186 | [25] .comment NOBITS 00000000 002174 000170 0 0 0 1 |
| 187 | [26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1 |
| 188 | [27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1 |
| 189 | [28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1 |
| 190 | [29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1 |
| 191 | [30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1 |
| 192 | [31] .note NOTE 00000000 003c96 0000a0 0 0 0 1 |
| 193 | [32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1 |
| 194 | [33] .symtab NOBITS 00000000 003e64 0005a0 16 34 68 4 |
| 195 | [34] .strtab NOBITS 00000000 003e64 000235 0 0 0 1 |
| 196 | |
| 197 | EOF |
| 198 | |
| 199 | # A random 64bit testfile |
| 200 | testfiles testfile69.so |
| 201 | # Explicitly keep .strtab (but not .symtab, so .strtab will be in both). 64bit |
| 202 | echo strip --keep-section=.strtab testfile69.so |
| 203 | testrun ${abs_top_builddir}/src/strip --keep-section=.strtab -o testfile.elf -f testfile.debug testfile69.so |
| 204 | echo elflint testfile.elf |
| 205 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 206 | echo elflint testfile.debug |
| 207 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 208 | echo readelf testfile.elf |
| 209 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 210 | There are 27 section headers, starting at offset 0xad8: |
| 211 | |
| 212 | Section Headers: |
| 213 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 214 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 215 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 216 | [ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 217 | [ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 |
| 218 | [ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 |
| 219 | [ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 |
| 220 | [ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 |
| 221 | [ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 |
| 222 | [ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 |
| 223 | [ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 |
| 224 | [10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 |
| 225 | [11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 |
| 226 | [12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 |
| 227 | [13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 |
| 228 | [14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 |
| 229 | [15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 |
| 230 | [16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 |
| 231 | [17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 |
| 232 | [18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 |
| 233 | [19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 |
| 234 | [20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 |
| 235 | [21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 |
| 236 | [22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 |
| 237 | [23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1 |
| 238 | [24] .strtab STRTAB 0000000000000000 0000085c 00000175 0 0 0 1 |
| 239 | [25] .gnu_debuglink PROGBITS 0000000000000000 000009d4 00000014 0 0 0 4 |
| 240 | [26] .shstrtab STRTAB 0000000000000000 000009e8 000000ee 0 0 0 1 |
| 241 | |
| 242 | EOF |
| 243 | echo readelf testfile.debug |
| 244 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 245 | There are 27 section headers, starting at offset 0x918: |
| 246 | |
| 247 | Section Headers: |
| 248 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 249 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 250 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 251 | [ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 252 | [ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 |
| 253 | [ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 |
| 254 | [ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 |
| 255 | [ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 |
| 256 | [ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 |
| 257 | [ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 |
| 258 | [ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 |
| 259 | [10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 |
| 260 | [11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 |
| 261 | [12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 |
| 262 | [13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 |
| 263 | [14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 |
| 264 | [15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 |
| 265 | [16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 |
| 266 | [17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 |
| 267 | [18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 |
| 268 | [19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 |
| 269 | [20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 |
| 270 | [21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 |
| 271 | [22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 |
| 272 | [23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 |
| 273 | [24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1 |
| 274 | [25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8 |
| 275 | [26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1 |
| 276 | |
| 277 | EOF |
| 278 | |
| 279 | # Explicitly keep .symtab (pulls in .strtab, so they will both be in elf). 64bit |
| 280 | # Use --remove-comment to make sure testfile.debug isn't empty. |
| 281 | echo strip --keep-section=.symtab --remove-comment testfile69.so |
| 282 | testrun ${abs_top_builddir}/src/strip --keep-section=.symtab --remove-comment -o testfile.elf -f testfile.debug testfile69.so |
| 283 | echo elflint testfile.elf |
| 284 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 285 | echo elflint testfile.debug |
| 286 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 287 | echo readelf testfile.elf |
| 288 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 289 | There are 27 section headers, starting at offset 0xf90: |
| 290 | |
| 291 | Section Headers: |
| 292 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 293 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 294 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 295 | [ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 296 | [ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 |
| 297 | [ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 |
| 298 | [ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 |
| 299 | [ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 |
| 300 | [ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 |
| 301 | [ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 |
| 302 | [ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 |
| 303 | [10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 |
| 304 | [11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 |
| 305 | [12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 |
| 306 | [13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 |
| 307 | [14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 |
| 308 | [15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 |
| 309 | [16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 |
| 310 | [17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 |
| 311 | [18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 |
| 312 | [19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 |
| 313 | [20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 |
| 314 | [21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 |
| 315 | [22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 |
| 316 | [23] .symtab SYMTAB 0000000000000000 00000830 000004e0 24 24 43 8 |
| 317 | [24] .strtab STRTAB 0000000000000000 00000d10 00000175 0 0 0 1 |
| 318 | [25] .gnu_debuglink PROGBITS 0000000000000000 00000e88 00000014 0 0 0 4 |
| 319 | [26] .shstrtab STRTAB 0000000000000000 00000e9c 000000ed 0 0 0 1 |
| 320 | |
| 321 | EOF |
| 322 | echo readelf testfile.debug |
| 323 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 324 | There are 27 section headers, starting at offset 0x2d8: |
| 325 | |
| 326 | Section Headers: |
| 327 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 328 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 329 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 330 | [ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 331 | [ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 |
| 332 | [ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 |
| 333 | [ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 |
| 334 | [ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 |
| 335 | [ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 |
| 336 | [ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 |
| 337 | [ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 |
| 338 | [10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 |
| 339 | [11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 |
| 340 | [12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 |
| 341 | [13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 |
| 342 | [14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 |
| 343 | [15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 |
| 344 | [16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 |
| 345 | [17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 |
| 346 | [18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 |
| 347 | [19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 |
| 348 | [20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 |
| 349 | [21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 |
| 350 | [22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 |
| 351 | [23] .comment PROGBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 |
| 352 | [24] .shstrtab STRTAB 0000000000000000 000001ec 000000e7 0 0 0 1 |
| 353 | [25] .symtab NOBITS 0000000000000000 000002d8 000004f8 24 26 44 8 |
| 354 | [26] .strtab NOBITS 0000000000000000 000002d8 00000175 0 0 0 1 |
| 355 | |
| 356 | EOF |
| 357 | |
| 358 | # Explicitly remove .symtab (but not .strtab, so it will be in both). 32bit |
| 359 | echo strip -g --remove-section=.symtab testfile |
| 360 | testrun ${abs_top_builddir}/src/strip -g --remove-section=.symtab -o testfile.elf -f testfile.debug testfile |
| 361 | echo elflint testfile.elf |
| 362 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 363 | echo elflint testfile.debug |
| 364 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 365 | echo readelf testfile.elf |
| 366 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 367 | There are 28 section headers, starting at offset 0xafc: |
| 368 | |
| 369 | Section Headers: |
| 370 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 371 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 372 | [ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 373 | [ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 |
| 374 | [ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 |
| 375 | [ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 |
| 376 | [ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 |
| 377 | [ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 |
| 378 | [ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 |
| 379 | [ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 |
| 380 | [ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 |
| 381 | [10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 |
| 382 | [11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 |
| 383 | [12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 |
| 384 | [13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 |
| 385 | [14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 |
| 386 | [15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 |
| 387 | [16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 |
| 388 | [17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 |
| 389 | [18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 |
| 390 | [19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 |
| 391 | [20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 |
| 392 | [21] .sbss PROGBITS 080495c8 0005c8 000000 0 W 0 0 1 |
| 393 | [22] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 |
| 394 | [23] .comment PROGBITS 00000000 0005c8 000170 0 0 0 1 |
| 395 | [24] .note NOTE 00000000 000738 0000a0 0 0 0 1 |
| 396 | [25] .strtab STRTAB 00000000 0007d8 000235 0 0 0 1 |
| 397 | [26] .gnu_debuglink PROGBITS 00000000 000a10 000014 0 0 0 4 |
| 398 | [27] .shstrtab STRTAB 00000000 000a24 0000d7 0 0 0 1 |
| 399 | |
| 400 | EOF |
| 401 | echo readelf testfile.debug |
| 402 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 403 | There are 35 section headers, starting at offset 0x463c: |
| 404 | |
| 405 | Section Headers: |
| 406 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 407 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 408 | [ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 409 | [ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 |
| 410 | [ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 |
| 411 | [ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 |
| 412 | [ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 |
| 413 | [ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 |
| 414 | [ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 |
| 415 | [ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 |
| 416 | [ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 |
| 417 | [10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 |
| 418 | [11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 |
| 419 | [12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 |
| 420 | [13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 |
| 421 | [14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 |
| 422 | [15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 |
| 423 | [16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 |
| 424 | [17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 |
| 425 | [18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 |
| 426 | [19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 |
| 427 | [20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 |
| 428 | [21] .sbss NOBITS 080495c8 000120 000000 0 W 0 0 1 |
| 429 | [22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 |
| 430 | [23] .stab PROGBITS 00000000 000120 000720 12 24 0 4 |
| 431 | [24] .stabstr STRTAB 00000000 000840 001934 0 0 0 1 |
| 432 | [25] .comment NOBITS 00000000 002174 000170 0 0 0 1 |
| 433 | [26] .debug_aranges PROGBITS 00000000 002174 000060 0 0 0 1 |
| 434 | [27] .debug_pubnames PROGBITS 00000000 0021d4 000055 0 0 0 1 |
| 435 | [28] .debug_info PROGBITS 00000000 002229 001678 0 0 0 1 |
| 436 | [29] .debug_abbrev PROGBITS 00000000 0038a1 0001d2 0 0 0 1 |
| 437 | [30] .debug_line PROGBITS 00000000 003a73 000223 0 0 0 1 |
| 438 | [31] .note NOTE 00000000 003c96 0000a0 0 0 0 1 |
| 439 | [32] .shstrtab STRTAB 00000000 003d36 00012e 0 0 0 1 |
| 440 | [33] .symtab SYMTAB 00000000 003e64 0005a0 16 34 68 4 |
| 441 | [34] .strtab STRTAB 00000000 004404 000235 0 0 0 1 |
| 442 | |
| 443 | EOF |
| 444 | |
| 445 | # Explicitly remove both .symtab and .strtab. Keep .stab and .stabstr 32bit |
| 446 | echo strip -g --remove-section=".s[yt][mr]tab" --keep-section=".stab*" testfile |
| 447 | testrun ${abs_top_builddir}/src/strip -g --remove-section=".s[yt][mr]tab" --keep-section=".stab*" -o testfile.elf -f testfile.debug testfile |
| 448 | echo elflint testfile.elf |
| 449 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 450 | echo elflint testfile.debug |
| 451 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 452 | echo readelf testfile.elf |
| 453 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 454 | There are 29 section headers, starting at offset 0x2920: |
| 455 | |
| 456 | Section Headers: |
| 457 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 458 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 459 | [ 1] .interp PROGBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 460 | [ 2] .note.ABI-tag NOTE 08048108 000108 000020 0 A 0 0 4 |
| 461 | [ 3] .hash HASH 08048128 000128 000030 4 A 4 0 4 |
| 462 | [ 4] .dynsym DYNSYM 08048158 000158 000070 16 A 5 1 4 |
| 463 | [ 5] .dynstr STRTAB 080481c8 0001c8 00008e 0 A 0 0 1 |
| 464 | [ 6] .gnu.version GNU_versym 08048256 000256 00000e 2 A 4 0 2 |
| 465 | [ 7] .gnu.version_r GNU_verneed 08048264 000264 000030 0 A 5 1 4 |
| 466 | [ 8] .rel.got REL 08048294 000294 000008 8 A 4 19 4 |
| 467 | [ 9] .rel.plt REL 0804829c 00029c 000020 8 A 4 11 4 |
| 468 | [10] .init PROGBITS 080482bc 0002bc 000018 0 AX 0 0 4 |
| 469 | [11] .plt PROGBITS 080482d4 0002d4 000050 4 AX 0 0 4 |
| 470 | [12] .text PROGBITS 08048330 000330 00018c 0 AX 0 0 16 |
| 471 | [13] .fini PROGBITS 080484bc 0004bc 00001e 0 AX 0 0 4 |
| 472 | [14] .rodata PROGBITS 080484dc 0004dc 000008 0 A 0 0 4 |
| 473 | [15] .data PROGBITS 080494e4 0004e4 000010 0 WA 0 0 4 |
| 474 | [16] .eh_frame PROGBITS 080494f4 0004f4 000004 0 WA 0 0 4 |
| 475 | [17] .ctors PROGBITS 080494f8 0004f8 000008 0 WA 0 0 4 |
| 476 | [18] .dtors PROGBITS 08049500 000500 000008 0 WA 0 0 4 |
| 477 | [19] .got PROGBITS 08049508 000508 000020 4 WA 0 0 4 |
| 478 | [20] .dynamic DYNAMIC 08049528 000528 0000a0 8 WA 5 0 4 |
| 479 | [21] .sbss PROGBITS 080495c8 0005c8 000000 0 W 0 0 1 |
| 480 | [22] .bss NOBITS 080495c8 0005c8 00001c 0 WA 0 0 4 |
| 481 | [23] .stab PROGBITS 00000000 0005c8 000720 12 24 0 4 |
| 482 | [24] .stabstr STRTAB 00000000 000ce8 001934 0 0 0 1 |
| 483 | [25] .comment PROGBITS 00000000 00261c 000170 0 0 0 1 |
| 484 | [26] .note NOTE 00000000 00278c 0000a0 0 0 0 1 |
| 485 | [27] .gnu_debuglink PROGBITS 00000000 00282c 000014 0 0 0 4 |
| 486 | [28] .shstrtab STRTAB 00000000 002840 0000de 0 0 0 1 |
| 487 | |
| 488 | EOF |
| 489 | echo readelf testfile.debug |
| 490 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 491 | There are 35 section headers, starting at offset 0x25e8: |
| 492 | |
| 493 | Section Headers: |
| 494 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 495 | [ 0] NULL 00000000 000000 000000 0 0 0 0 |
| 496 | [ 1] .interp NOBITS 080480f4 0000f4 000013 0 A 0 0 1 |
| 497 | [ 2] .note.ABI-tag NOTE 08048108 0000f4 000020 0 A 0 0 4 |
| 498 | [ 3] .hash NOBITS 08048128 000114 000030 4 A 4 0 4 |
| 499 | [ 4] .dynsym NOBITS 08048158 000114 000070 16 A 5 1 4 |
| 500 | [ 5] .dynstr NOBITS 080481c8 000114 00008e 0 A 0 0 1 |
| 501 | [ 6] .gnu.version NOBITS 08048256 000114 00000e 2 A 4 0 2 |
| 502 | [ 7] .gnu.version_r NOBITS 08048264 000114 000030 0 A 5 1 4 |
| 503 | [ 8] .rel.got NOBITS 08048294 000114 000008 8 A 4 19 4 |
| 504 | [ 9] .rel.plt NOBITS 0804829c 000114 000020 8 A 4 11 4 |
| 505 | [10] .init NOBITS 080482bc 000114 000018 0 AX 0 0 4 |
| 506 | [11] .plt NOBITS 080482d4 000114 000050 4 AX 0 0 4 |
| 507 | [12] .text NOBITS 08048330 000120 00018c 0 AX 0 0 16 |
| 508 | [13] .fini NOBITS 080484bc 000120 00001e 0 AX 0 0 4 |
| 509 | [14] .rodata NOBITS 080484dc 000120 000008 0 A 0 0 4 |
| 510 | [15] .data NOBITS 080494e4 000120 000010 0 WA 0 0 4 |
| 511 | [16] .eh_frame NOBITS 080494f4 000120 000004 0 WA 0 0 4 |
| 512 | [17] .ctors NOBITS 080494f8 000120 000008 0 WA 0 0 4 |
| 513 | [18] .dtors NOBITS 08049500 000120 000008 0 WA 0 0 4 |
| 514 | [19] .got NOBITS 08049508 000120 000020 4 WA 0 0 4 |
| 515 | [20] .dynamic NOBITS 08049528 000120 0000a0 8 WA 5 0 4 |
| 516 | [21] .sbss NOBITS 080495c8 000120 000000 0 W 0 0 1 |
| 517 | [22] .bss NOBITS 080495c8 000120 00001c 0 WA 0 0 4 |
| 518 | [23] .stab NOBITS 00000000 000120 000720 12 24 0 4 |
| 519 | [24] .stabstr NOBITS 00000000 000120 001934 0 0 0 1 |
| 520 | [25] .comment NOBITS 00000000 000120 000170 0 0 0 1 |
| 521 | [26] .debug_aranges PROGBITS 00000000 000120 000060 0 0 0 1 |
| 522 | [27] .debug_pubnames PROGBITS 00000000 000180 000055 0 0 0 1 |
| 523 | [28] .debug_info PROGBITS 00000000 0001d5 001678 0 0 0 1 |
| 524 | [29] .debug_abbrev PROGBITS 00000000 00184d 0001d2 0 0 0 1 |
| 525 | [30] .debug_line PROGBITS 00000000 001a1f 000223 0 0 0 1 |
| 526 | [31] .note NOTE 00000000 001c42 0000a0 0 0 0 1 |
| 527 | [32] .shstrtab STRTAB 00000000 001ce2 00012e 0 0 0 1 |
| 528 | [33] .symtab SYMTAB 00000000 001e10 0005a0 16 34 68 4 |
| 529 | [34] .strtab STRTAB 00000000 0023b0 000235 0 0 0 1 |
| 530 | |
| 531 | EOF |
| 532 | |
| 533 | # Explicitly remove .symtab (but not .strtab, so it will be in both). 64bit |
| 534 | echo strip -g --remove-section=.symtab testfile69.so |
| 535 | testrun ${abs_top_builddir}/src/strip -g --remove-section=.symtab -o testfile.elf -f testfile.debug testfile69.so |
| 536 | echo elflint testfile.elf |
| 537 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 538 | echo elflint testfile.debug |
| 539 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 540 | echo readelf testfile.elf |
| 541 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 542 | There are 27 section headers, starting at offset 0xad8: |
| 543 | |
| 544 | Section Headers: |
| 545 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 546 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 547 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 548 | [ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 549 | [ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 |
| 550 | [ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 |
| 551 | [ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 |
| 552 | [ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 |
| 553 | [ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 |
| 554 | [ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 |
| 555 | [ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 |
| 556 | [10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 |
| 557 | [11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 |
| 558 | [12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 |
| 559 | [13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 |
| 560 | [14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 |
| 561 | [15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 |
| 562 | [16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 |
| 563 | [17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 |
| 564 | [18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 |
| 565 | [19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 |
| 566 | [20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 |
| 567 | [21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 |
| 568 | [22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 |
| 569 | [23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1 |
| 570 | [24] .strtab STRTAB 0000000000000000 0000085c 00000175 0 0 0 1 |
| 571 | [25] .gnu_debuglink PROGBITS 0000000000000000 000009d4 00000014 0 0 0 4 |
| 572 | [26] .shstrtab STRTAB 0000000000000000 000009e8 000000ee 0 0 0 1 |
| 573 | |
| 574 | EOF |
| 575 | echo readelf testfile.debug |
| 576 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 577 | There are 27 section headers, starting at offset 0x918: |
| 578 | |
| 579 | Section Headers: |
| 580 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 581 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 582 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 583 | [ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 584 | [ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 |
| 585 | [ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 |
| 586 | [ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 |
| 587 | [ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 |
| 588 | [ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 |
| 589 | [ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 |
| 590 | [ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 |
| 591 | [10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 |
| 592 | [11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 |
| 593 | [12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 |
| 594 | [13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 |
| 595 | [14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 |
| 596 | [15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 |
| 597 | [16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 |
| 598 | [17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 |
| 599 | [18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 |
| 600 | [19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 |
| 601 | [20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 |
| 602 | [21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 |
| 603 | [22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 |
| 604 | [23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 |
| 605 | [24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1 |
| 606 | [25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8 |
| 607 | [26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1 |
| 608 | |
| 609 | EOF |
| 610 | |
| 611 | # Explicitly remove both .symtab and .strtab. Keep .comment section. 64bit |
| 612 | echo strip -g --remove-section=".s[yt][mr]tab" --keep-section=.comment testfile69.so |
| 613 | testrun ${abs_top_builddir}/src/strip -g --remove-section=".s[yt][mr]tab" --keep-section=.comment -o testfile.elf -f testfile.debug testfile69.so |
| 614 | echo elflint testfile.elf |
| 615 | testrun ${abs_top_builddir}/src/elflint --gnu testfile.elf |
| 616 | echo elflint testfile.debug |
| 617 | testrun ${abs_top_builddir}/src/elflint --gnu -d testfile.debug |
| 618 | echo readelf testfile.elf |
| 619 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.elf <<\EOF |
| 620 | There are 26 section headers, starting at offset 0x958: |
| 621 | |
| 622 | Section Headers: |
| 623 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 624 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 625 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 626 | [ 2] .gnu.hash GNU_HASH 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 627 | [ 3] .dynsym DYNSYM 00000000000001f8 000001f8 00000108 24 A 4 2 8 |
| 628 | [ 4] .dynstr STRTAB 0000000000000300 00000300 00000077 0 A 0 0 1 |
| 629 | [ 5] .gnu.version GNU_versym 0000000000000378 00000378 00000016 2 A 3 0 2 |
| 630 | [ 6] .gnu.version_r GNU_verneed 0000000000000390 00000390 00000020 0 A 4 1 8 |
| 631 | [ 7] .rela.dyn RELA 00000000000003b0 000003b0 00000060 24 A 3 0 8 |
| 632 | [ 8] .rela.plt RELA 0000000000000410 00000410 00000018 24 A 3 10 8 |
| 633 | [ 9] .init PROGBITS 0000000000000428 00000428 00000018 0 AX 0 0 4 |
| 634 | [10] .plt PROGBITS 0000000000000440 00000440 00000020 16 AX 0 0 16 |
| 635 | [11] .text PROGBITS 0000000000000460 00000460 00000128 0 AX 0 0 16 |
| 636 | [12] .fini PROGBITS 0000000000000588 00000588 0000000e 0 AX 0 0 4 |
| 637 | [13] .eh_frame_hdr PROGBITS 0000000000000598 00000598 00000024 0 A 0 0 4 |
| 638 | [14] .eh_frame PROGBITS 00000000000005c0 000005c0 00000084 0 A 0 0 8 |
| 639 | [15] .ctors PROGBITS 0000000000200648 00000648 00000010 0 WA 0 0 8 |
| 640 | [16] .dtors PROGBITS 0000000000200658 00000658 00000010 0 WA 0 0 8 |
| 641 | [17] .jcr PROGBITS 0000000000200668 00000668 00000008 0 WA 0 0 8 |
| 642 | [18] .data.rel.ro PROGBITS 0000000000200670 00000670 00000008 0 WA 0 0 8 |
| 643 | [19] .dynamic DYNAMIC 0000000000200678 00000678 00000180 16 WA 4 0 8 |
| 644 | [20] .got PROGBITS 00000000002007f8 000007f8 00000018 8 WA 0 0 8 |
| 645 | [21] .got.plt PROGBITS 0000000000200810 00000810 00000020 8 WA 0 0 8 |
| 646 | [22] .bss NOBITS 0000000000200830 00000830 00000010 0 WA 0 0 8 |
| 647 | [23] .comment PROGBITS 0000000000000000 00000830 0000002c 1 MS 0 0 1 |
| 648 | [24] .gnu_debuglink PROGBITS 0000000000000000 0000085c 00000014 0 0 0 4 |
| 649 | [25] .shstrtab STRTAB 0000000000000000 00000870 000000e6 0 0 0 1 |
| 650 | |
| 651 | EOF |
| 652 | echo readelf testfile.debug |
| 653 | testrun_compare ${abs_top_builddir}/src/readelf -S testfile.debug <<\EOF |
| 654 | There are 27 section headers, starting at offset 0x918: |
| 655 | |
| 656 | Section Headers: |
| 657 | [Nr] Name Type Addr Off Size ES Flags Lk Inf Al |
| 658 | [ 0] NULL 0000000000000000 00000000 00000000 0 0 0 0 |
| 659 | [ 1] .note.gnu.build-id NOTE 0000000000000190 00000190 00000024 0 A 0 0 4 |
| 660 | [ 2] .gnu.hash NOBITS 00000000000001b8 000001b8 0000003c 0 A 3 0 8 |
| 661 | [ 3] .dynsym NOBITS 00000000000001f8 000001b8 00000108 24 A 4 2 8 |
| 662 | [ 4] .dynstr NOBITS 0000000000000300 000001b8 00000077 0 A 0 0 1 |
| 663 | [ 5] .gnu.version NOBITS 0000000000000378 000001b8 00000016 2 A 3 0 2 |
| 664 | [ 6] .gnu.version_r NOBITS 0000000000000390 000001b8 00000020 0 A 4 1 8 |
| 665 | [ 7] .rela.dyn NOBITS 00000000000003b0 000001b8 00000060 24 A 3 0 8 |
| 666 | [ 8] .rela.plt NOBITS 0000000000000410 000001b8 00000018 24 A 3 10 8 |
| 667 | [ 9] .init NOBITS 0000000000000428 000001b8 00000018 0 AX 0 0 4 |
| 668 | [10] .plt NOBITS 0000000000000440 000001c0 00000020 16 AX 0 0 16 |
| 669 | [11] .text NOBITS 0000000000000460 000001c0 00000128 0 AX 0 0 16 |
| 670 | [12] .fini NOBITS 0000000000000588 000001c0 0000000e 0 AX 0 0 4 |
| 671 | [13] .eh_frame_hdr NOBITS 0000000000000598 000001c0 00000024 0 A 0 0 4 |
| 672 | [14] .eh_frame NOBITS 00000000000005c0 000001c0 00000084 0 A 0 0 8 |
| 673 | [15] .ctors NOBITS 0000000000200648 000001c0 00000010 0 WA 0 0 8 |
| 674 | [16] .dtors NOBITS 0000000000200658 000001c0 00000010 0 WA 0 0 8 |
| 675 | [17] .jcr NOBITS 0000000000200668 000001c0 00000008 0 WA 0 0 8 |
| 676 | [18] .data.rel.ro NOBITS 0000000000200670 000001c0 00000008 0 WA 0 0 8 |
| 677 | [19] .dynamic NOBITS 0000000000200678 000001c0 00000180 16 WA 4 0 8 |
| 678 | [20] .got NOBITS 00000000002007f8 000001c0 00000018 8 WA 0 0 8 |
| 679 | [21] .got.plt NOBITS 0000000000200810 000001c0 00000020 8 WA 0 0 8 |
| 680 | [22] .bss NOBITS 0000000000200830 000001c0 00000010 0 WA 0 0 8 |
| 681 | [23] .comment NOBITS 0000000000000000 000001c0 0000002c 1 MS 0 0 1 |
| 682 | [24] .shstrtab STRTAB 0000000000000000 000001c0 000000e7 0 0 0 1 |
| 683 | [25] .symtab SYMTAB 0000000000000000 000002a8 000004f8 24 26 44 8 |
| 684 | [26] .strtab STRTAB 0000000000000000 000007a0 00000175 0 0 0 1 |
| 685 | |
| 686 | EOF |
| 687 | |
| 688 | exit 0 |