[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