llvm-project/lld/test
Dimitry Andric ad5aab8ddb Don't mess up RelIplt symbols during relocatable processing
Summary:
During upgrading of the FreeBSD source tree with lld 7.0.0, I noticed
that it started complaining about `crt1.o` having an "index past the
end of the symbol table".

Such a symbol table looks approximately like this, viewed with `readelf
-s` (note the `Ndx` field being messed up):

```
Symbol table '.symtab' contains 4 entries:
   Num:    Value  Size Type    Bind   Vis      Ndx Name
     0: 00000000     0 NOTYPE  LOCAL  DEFAULT  UND
     1: 00000000     0 SECTION LOCAL  DEFAULT    1
     2: 00000000     0 NOTYPE  WEAK   HIDDEN  RSV[0xffff] __rel_iplt_end
     3: 00000000     0 NOTYPE  WEAK   HIDDEN  RSV[0xffff] __rel_iplt_start
```

At first, it seemed that recent ifunc relocation work had caused this:
<https://reviews.freebsd.org/rS339351>, but it turned out that it was
due to incorrect processing of the object files by lld, when using `-r`
(a.k.a. --relocatable).

Bisecting showed that rL324421 ("Convert a use of Config->Static") was
the commit where this new behavior began.  Simply reverting it solved
the issue, and the `__rel_iplt` symbols had an index of `UND` again.

Looking at Rafael's commit message, I think he simply missed the
possibility of `--relocatable` being in effect, so I have added an
additional check for it.

I also added a simple regression test case.

Reviewers: grimar, ruiu, emaste, espindola

Reviewed By: ruiu

Subscribers: arichardson, krytarowski, llvm-commits

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

llvm-svn: 345002
2018-10-23 05:53:15 +00:00
..
COFF [COFF] Fix error handling on duplicates for import library symbols 2018-10-19 06:39:36 +00:00
Driver/Inputs
ELF Don't mess up RelIplt symbols during relocatable processing 2018-10-23 05:53:15 +00:00
MinGW [MinGW] Pass libpath to the COFF linker 2018-10-10 09:00:03 +00:00
Unit [lit] Rename lld and clang lit configs to end in .py 2017-09-21 17:38:13 +00:00
darwin [Darwin] Do not error on '-lto_library' option 2018-06-13 18:59:14 +00:00
mach-o Make YAML quote forward slashes. 2018-10-12 16:31:20 +00:00
wasm [WebAssembly] Preserve function signatures during LTO 2018-09-28 16:50:14 +00:00
CMakeLists.txt [CMake] Add an lld-test-depends target 2018-08-29 17:30:45 +00:00
lit.cfg.py Support RISC-V 2018-08-09 17:59:56 +00:00
lit.site.cfg.py.in Import lit.llvm after rLLD341134 2018-08-31 00:23:09 +00:00