| # Tests the --export-dynamic (-E) flag. When creating a dynamic executable and |
| # receiving this flag, the linker should export all globally visible symbols in |
| # its dynamic symbol table. |
| |
| #RUN: yaml2obj -format=elf %s -o=%t.o |
| #RUN: lld -flavor old-gnu -target x86_64 -E %t.o -e=main -o %t1 |
| #RUN: llvm-readobj -dt %t1 | FileCheck -check-prefix CHECKSYMS %s |
| |
| #CHECKSYMS: myfunc1@ |
| #CHECKSYMS: main@ |
| #CHECKSYMS: myvar1@ |
| |
| # The object file below was generated with the following code: |
| # |
| # (command line clang -c prog.c -o prog.o) |
| # |
| # int myvar1 = 22; |
| # |
| # static int mysecretvar = 11; |
| # |
| # int myfunc1() { |
| # return 23; |
| # } |
| # |
| # static int mysecretfunc() { |
| # return 42; |
| # } |
| # |
| # int main() { |
| # return mysecretfunc() + mysecretvar; |
| # } |
| --- |
| FileHeader: |
| Class: ELFCLASS64 |
| Data: ELFDATA2LSB |
| OSABI: ELFOSABI_GNU |
| Type: ET_REL |
| Machine: EM_X86_64 |
| Sections: |
| - Name: .text |
| Type: SHT_PROGBITS |
| Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| AddressAlign: 0x0000000000000010 |
| Content: 554889E5B8170000005DC30F1F440000554889E54883EC10C745FC00000000E81C000000030425000000004883C4105DC36666666666662E0F1F840000000000554889E5B82A0000005DC3 |
| - Name: .rela.text |
| Type: SHT_RELA |
| Link: .symtab |
| AddressAlign: 0x0000000000000008 |
| Info: .text |
| Relocations: |
| - Offset: 0x0000000000000027 |
| Symbol: .data |
| Type: R_X86_64_32S |
| Addend: 4 |
| - Name: .data |
| Type: SHT_PROGBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| AddressAlign: 0x0000000000000004 |
| Content: 160000000B000000 |
| - Name: .bss |
| Type: SHT_NOBITS |
| Flags: [ SHF_WRITE, SHF_ALLOC ] |
| AddressAlign: 0x0000000000000004 |
| Symbols: |
| Local: |
| - Name: mysecretfunc |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x0000000000000040 |
| Size: 0x000000000000000B |
| - Name: mysecretvar |
| Type: STT_OBJECT |
| Section: .data |
| Value: 0x0000000000000004 |
| Size: 0x0000000000000004 |
| - Name: .text |
| Type: STT_SECTION |
| Section: .text |
| - Name: .data |
| Type: STT_SECTION |
| Section: .data |
| - Name: .bss |
| Type: STT_SECTION |
| Section: .bss |
| Global: |
| - Name: main |
| Type: STT_FUNC |
| Section: .text |
| Value: 0x0000000000000010 |
| Size: 0x0000000000000021 |
| - Name: myfunc1 |
| Type: STT_FUNC |
| Section: .text |
| Size: 0x000000000000000B |
| - Name: myvar1 |
| Type: STT_OBJECT |
| Section: .data |
| Size: 0x0000000000000004 |