llvm-project/lld/test/elf/dynamic.test
Shankar Easwaran f1b341c80e [lld][LayoutPass] Order the atoms that are in the same chain
We need to order atoms that exist in the same chain. This is to make sure that
the command line order is preserved when we emit the atoms to the output file.

Credits: BigCheese for finding the bug.

Adds a test which otherwise would fail.

llvm-svn: 190608
2013-09-12 15:43:09 +00:00

81 lines
2.3 KiB
Plaintext

# Checks functionality of dynamic executables
RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
RUN: %p/Inputs/shared.so-x86-64 -o %t -e main --allow-shlib-undefined \
RUN: -rpath /l1:/l2 -rpath /l3
RUN: lld -flavor gnu -target x86_64-linux %p/Inputs/use-shared.x86-64 \
RUN: %p/Inputs/shared.so-x86-64 -emit-yaml -o %t2 --allow-shlib-undefined \
RUN: --noinhibit-exec
RUN: llvm-objdump -p %t >> %t2
RUN: llvm-readobj -s -dyn-symbols -dynamic-table %t >> %t2
RUN: FileCheck %s < %t2
CHECK: type: got
CHECK: references:
CHECK: kind: R_X86_64_JUMP_SLOT
CHECK: name: main
CHECK: kind: R_X86_64_PC32
CHECK: offset: 18
CHECK: target: [[PLTNAME:[-a-zA-Z0-9_]+]]
CHECK: name: [[PLTNAME]]
CHECK: type: stub
CHECK: shared-library-atoms:
CHECK: name: foo
CHECK: load-name: shared.so-x86-64
CHECK: PHDR off 0x{{0+}}40
CHECK: INTERP
CHECK: flags r--
CHECK: Section {
CHECK: Name: .hash
CHECK-NEXT: Type: SHT_HASH
CHECK-NEXT: Flags [
CHECK-NEXT: SHF_ALLOC
CHECK-NEXT: ]
CHECK-NEXT: Address:
CHECK-NEXT: Offset:
CHECK-NEXT: Size: 32
CHECK-NEXT: Link:
CHECK-NEXT: Info:
CHECK-NEXT: AddressAlignment: 8
CHECK-NEXT: EntrySize:
CHECK-NEXT: }
CHECK: DynamicSymbols [
CHECK: Symbol {
CHECK: Name: foo
CHECK-NEXT: Value: 0
CHECK-NEXT: Size:
CHECK-NEXT: Binding: Global
CHECK-NEXT: Type: Function
CHECK: }
CHECK: Symbol {
CHECK: Name: i
CHECK-NEXT: Value: 0
CHECK-NEXT: Size:
CHECK-NEXT: Binding: Global
CHECK-NEXT: Type: Function
CHECK: }
CHECK: DynamicSection [ (15 entries)
CHECK: Tag Type Name/Value
CHECK: 0x0000000000000004 HASH
CHECK: 0x0000000000000005 STRTAB
CHECK: 0x0000000000000006 SYMTAB
CHECK: 0x000000000000000A STRSZ
CHECK: 0x000000000000000B SYMENT 24
CHECK: 0x0000000000000007 RELA
CHECK: 0x0000000000000008 RELASZ 24
CHECK: 0x0000000000000009 RELAENT 24
CHECK: 0x0000000000000002 PLTRELSZ 24
CHECK: 0x0000000000000003 PLTGOT
CHECK: 0x0000000000000014 PLTREL RELA
CHECK: 0x0000000000000017 JMPREL
CHECK: 0x0000000000000001 NEEDED SharedLibrary (shared.so-x86-64)
CHECK: 0x000000000000000F RPATH /l1:/l2:/l3
CHECK: 0x0000000000000000 NULL 0x0
CHECK: ]