[all-commits] [llvm/llvm-project] 4ce56b: [ELF] Add -z dead-reloc-in-nonalloc=<section_glob>...
Fangrui Song via All-commits
all-commits at lists.llvm.org
Wed Jul 8 10:15:38 PDT 2020
Branch: refs/heads/master
Home: https://github.com/llvm/llvm-project
Commit: 4ce56b8122219f7b79d75d33184e3ec890a6e222
https://github.com/llvm/llvm-project/commit/4ce56b8122219f7b79d75d33184e3ec890a6e222
Author: Fangrui Song <maskray at google.com>
Date: 2020-07-08 (Wed, 08 Jul 2020)
Changed paths:
M lld/ELF/Config.h
M lld/ELF/Driver.cpp
M lld/ELF/InputSection.cpp
M lld/docs/ld.lld.1
A lld/test/ELF/dead-reloc-in-nonalloc.s
M lld/test/ELF/debug-dead-reloc.s
Log Message:
-----------
[ELF] Add -z dead-reloc-in-nonalloc=<section_glob>=<value>
... to customize the tombstone value we use for an absolute relocation
referencing a discarded symbol. This can be used as a workaround when
some debug processing tool has trouble with current -1 tombstone value
(https://bugs.chromium.org/p/chromium/issues/detail?id=1102223#c11 )
For example, to get the current built-in rules (not considering the .debug_line special case for ICF):
```
-z dead-reloc-in-nonalloc='.debug_*=0xffffffffffffffff'
-z dead-reloc-in-nonalloc=.debug_loc=0xfffffffffffffffe
-z dead-reloc-in-nonalloc=.debug_ranges=0xfffffffffffffffe
```
To get GNU ld (as of binutils 2.35)'s behavior:
```
-z dead-reloc-in-nonalloc='*=0'
-z dead-reloc-in-nonalloc=.debug_ranges=1
```
This option has other use cases. For example, if we want to check
whether a non-SHF_ALLOC section has dead relocations.
With this patch, we can run a regular LLD and run another with a special
-z dead-reloc-in-nonalloc=, then compare their output.
Reviewed By: thakis
Differential Revision: https://reviews.llvm.org/D83264
More information about the All-commits
mailing list