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