| # REQUIRES: x86 |
| |
| # LLD used to crash when linking against a DSO with an undefined STB_LOCAL |
| # symbol in the global part of the dynamic symbol table (i.e. an STB_LOCAL |
| # symbol with an index >= the sh_info of the dynamic symbol table section). Such |
| # a DSO is very broken, because local symbols should precede all global symbols |
| # in the symbol table, and because having a symbol that's both undefined and |
| # STB_LOCAL is a nonsensical combination. Nevertheless, we should warn on such |
| # input files instead of crashing. |
| |
| # RUN: yaml2obj %s -o %t.so |
| # RUN: ld.lld %t.so -o %t 2>&1 | FileCheck -check-prefix=WARN %s |
| # WARN: found local symbol 'foo' in global part of symbol table in file {{.*}}.so |
| |
| --- !ELF |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| Type: ET_DYN |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .dynsym |
| Info: 1 |
| Type: SHT_DYNSYM |
| DynamicSymbols: |
| - Name: foo |