llvm-project/llvm/test/tools/llvm-objcopy
Peter Collingbourne 1651ac13be llvm-objcopy: Set sh_link to 0 on unrecognized symtab-linked sections.
Per discussion on the generic-abi mailing list:
https://groups.google.com/forum/#!topic/generic-abi/MPr8TVtnVn4

An object file manipulation tool must either write out a symbol
table with the same number of entries as the original symbol table
and in the same order, or if this is impossible, refuse to operate
on the object file if it has unrecognized sections that are linked
to the symtab section. However, existing tools (namely GNU strip,
GNU objcopy and ld.{bfd,gold,lld} -r) do not comply with this at
present: they change symbol table indexes and set sh_link to 0 on
the unrecognized symtab-linked sections.

We intend to use the latter as a (temporary) signal that a tool has
operated on a proposed new symtab-linked section and invalidated the
symbol table indexes. However, llvm-objcopy currently keeps sh_link
pointing to the new symtab section. This patch changes llvm-objcopy
to set sh_link to 0 to match the behaviour of the other tools.

Differential Revision: https://reviews.llvm.org/D47404

llvm-svn: 333581
2018-05-30 19:30:39 +00:00
..
Inputs [llvm-objcopy] Implement support for section groups 2018-03-21 19:53:44 +00:00
abs-symbol.test
add-gnu-debuglink.test [llvm-objcopy] Use the full filename in --add-gnu-debuglink 2018-02-19 19:53:44 +00:00
add-section-remove.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
add-section.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
adjacent-segments.test
armexidx-link.test [llvm-objcopy] Fix sh_link 2018-04-20 20:46:04 +00:00
basic-binary-copy.test
basic-copy.test
basic-keep.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
basic-only-keep-debug.test [llvm-objcopy] Add --only-keep-debug as a noop 2018-05-15 20:53:53 +00:00
basic-only-keep.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
basic-relocations.test
binary-first-seg-offset-zero.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
binary-no-paddr.test [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary 2018-01-22 19:27:30 +00:00
binary-out-error.test [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects 2018-01-25 22:46:17 +00:00
binary-paddr.test [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary 2018-01-22 19:27:30 +00:00
binary-remove-all-but-one.test [llvm-objcopy] Change -O binary to respect section removal and behave like GNU objcopy 2017-11-15 19:13:31 +00:00
binary-remove-end.test [llvm-objcopy] Change -O binary to respect section removal and behave like GNU objcopy 2017-11-15 19:13:31 +00:00
binary-remove-middle.test [llvm-objcopy] Change -O binary to respect section removal and behave like GNU objcopy 2017-11-15 19:13:31 +00:00
binary-segment-layout.test [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary 2018-01-22 19:27:30 +00:00
cannot-delete-dest.test Simplify test. 2017-12-05 18:26:23 +00:00
check-addr-offset-align-binary.test [llvm-objcopy] Fix bug in how segment alignment was being handled 2017-11-02 23:24:04 +00:00
check-addr-offset-align.test [llvm-objcopy] Fix bug in how segment alignment was being handled 2017-11-02 23:24:04 +00:00
common-symbol.test
discard-all.test [llvm-objcopy] Add --discard-all (-x) option 2018-05-02 20:19:22 +00:00
drawf-fission.test [llvm-objcopy] Add support for dwarf fission 2017-11-03 18:58:41 +00:00
dump-section.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
dynamic-relocations.test
dynamic.test
dynstr.test
dynsym-error-remove-strtab.test [llvm-objcopy] Fix sh_link 2018-04-20 20:46:04 +00:00
dynsym.test
elf32be.test [llvm-objcopy] Support the rest of the ELF formats 2017-11-14 18:41:47 +00:00
elf32le.test [llvm-objcopy] Support the rest of the ELF formats 2017-11-14 18:41:47 +00:00
elf64be.test [llvm-objcopy] Support the rest of the ELF formats 2017-11-14 18:41:47 +00:00
empty-section.test
explicit-keep-remove.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
explicit-only-keep-remove.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
fail-no-output-directory.test Make sure an error is always handled. 2017-11-08 21:15:21 +00:00
globalize.test [llvm-objcopy] Add --globalize-symbol option 2018-04-27 19:09:44 +00:00
group-big-endian.test [llvm-objcopy] Implement support for section groups 2018-03-21 19:53:44 +00:00
group-unchanged.test [llvm-objcopy] Implement support for section groups 2018-03-21 19:53:44 +00:00
group.test [llvm-objcopy] Implement support for section groups 2018-03-21 19:53:44 +00:00
help-message.test [llvm-objcopy] Add tests for help messages 2018-05-10 15:56:04 +00:00
hexagon-unsupported-on-x86.test
identical-segments.test
keep-file-symbols.test [llvm-objcopy] Add --keep-file-symbols option 2018-05-26 08:10:37 +00:00
keep-many.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
keep-only-keep.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
keep-symbol-remove-section.test [llvm-objcopy] Add --keep-symbol (-K) option 2018-05-15 14:09:37 +00:00
keep-symbol.test [llvm-objcopy] Add --keep-symbol (-K) option 2018-05-15 14:09:37 +00:00
localize-hidden.test [llvm-objcopy] Add --localize-hidden option 2018-01-05 19:19:09 +00:00
localize.test [llvm-objcopy] Add --localize-symbol option 2018-04-26 17:44:43 +00:00
marker-segment.test [llvm-objcopy] Fix handling of zero-size segments in llvm-objcopy 2018-02-14 23:31:33 +00:00
no-symbol-relocation.test
only-keep-many.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
only-keep-remove-strtab.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
only-keep-strip-non-alloc.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
overlap-chain.test
parent-loop-check.test Recommit "[llvm-objcopy] Switch over to using TableGen for parsing arguments" 2018-04-24 05:43:32 +00:00
program-headers.test
pt-phdr.test
redefine-symbol.test [llvm-objcopy] Implement --redefine-sym option 2018-04-26 18:28:17 +00:00
reloc-error-remove-symtab.test [llvm-objcopy] Add support for removing sections 2017-10-10 18:47:09 +00:00
remove-multiple-sections.test [llvm-objcopy] Add ability to remove multiple sections by name 2017-10-10 23:02:43 +00:00
remove-section-with-symbol.test [llvm-objcopy] Add support for removing sections 2017-10-10 18:47:09 +00:00
remove-section.test [llvm-objcopy] Update remove-section.test 2018-05-11 04:30:57 +00:00
remove-shstrtab-error.test [llvm-objcopy] Refactor llvm-objcopy to use reader and writer objects 2018-01-25 22:46:17 +00:00
remove-symtab.test [llvm-objcopy] Add support for removing sections 2017-10-10 18:47:09 +00:00
section-index-unsupported.test
sectionless-segment.test
segment-shift-section-remove.test [llvm-objcopy] Add support for removing sections 2017-10-10 18:47:09 +00:00
segment-shift.test
segment-test-remove-section.test [llvm-objcopy] Add support for removing sections 2017-10-10 18:47:09 +00:00
strip-all-and-keep-symbol.test [llvm-strip] Minor fix of the usage of TableGen 2018-05-23 20:39:52 +00:00
strip-all-and-remove.test [llvm-strip] Add support for -remove-section 2018-05-11 05:27:06 +00:00
strip-all-gnu.test [llvm-objcopy] Add --strip-all-gnu and change --strip-all 2017-11-27 18:56:01 +00:00
strip-all.test [tools] Introduce llvm-strip 2018-05-07 19:32:09 +00:00
strip-debug-and-remove.test [llvm-strip] Add support for -remove-section 2018-05-11 05:27:06 +00:00
strip-debug.test [llvm-objcopy] Add tests for help messages 2018-05-10 15:56:04 +00:00
strip-dwo-groups.test [llvm-objcopy] Implement support for section groups 2018-03-21 19:53:44 +00:00
strip-dwo-inplace.test [llvm-objcopy] Make modifications in-place if output is not specified 2018-02-09 23:33:31 +00:00
strip-group-symbol.test Fix tests added in r331924 so that they work on Windows. 2018-05-10 03:06:42 +00:00
strip-non-alloc.test [llvm-objcopy] Add -strip-non-alloc option to remove all non-allocated sections 2017-11-14 18:50:24 +00:00
strip-reloc-symbol.test Fix tests added in r331924 so that they work on Windows. 2018-05-10 03:06:42 +00:00
strip-sections-keep.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
strip-sections-only-keep.test [llvm-objcopy] Add support for --only-keep/-j and --keep 2017-11-30 20:14:53 +00:00
strip-sections.test Reland "[llvm-objcopy] Add support for --strip-sections to remove all section headers leaving only program headers and loadable segment data" 2017-10-11 18:09:18 +00:00
strip-symbol.test [llvm-objcopy] Add --strip-symbol (-N) option 2018-05-09 21:36:54 +00:00
strip-unneeded.test [llvm-objcopy] Add --strip-unneeded option 2018-05-25 11:01:25 +00:00
symbol-copy.test [llvm-objcopy] Add support for visibility 2018-01-02 23:01:24 +00:00
symtab-error-on-remove-strtab.test [llvm-objcopy] Add support for removing sections 2017-10-10 18:47:09 +00:00
symtab-link.test llvm-objcopy: Set sh_link to 0 on unrecognized symtab-linked sections. 2018-05-30 19:30:39 +00:00
triple-overlap.test
two-seg-remove-end.test [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary 2018-01-22 19:27:30 +00:00
two-seg-remove-first.test [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary 2018-01-22 19:27:30 +00:00
two-seg-remove-third-sec.test [llvm-objcopy] Use physical instead of virtual address when aligning and placing sections in binary 2018-01-22 19:27:30 +00:00
weaken-all.test [llvm-objcopy] Add --weaken option 2018-05-02 20:14:49 +00:00
weaken.test [llvm-objcopy] Add --weaken-symbol (-W) option 2018-04-27 19:16:27 +00:00