brintos

brintos / llvm-project-archived public Read only

0
0
Text · 9.3 KiB · 800570e Raw
303 lines · plain
1// REQUIRES: x862// RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %s -o %t.o3// RUN: llvm-mc -filetype=obj -triple=i686-unknown-linux %p/Inputs/shared.s -o %t2.o4// RUN: ld.lld --hash-style=sysv -shared %t2.o -soname=t2.so -o %t2.so5// RUN: llvm-readobj -S %t2.so | FileCheck --check-prefix=SO %s6// RUN: ld.lld --hash-style=sysv -dynamic-linker /lib64/ld-linux-x86-64.so.2 -rpath foo -rpath bar --export-dynamic %t.o %t2.so -o %t7// RUN: llvm-readobj -S -l --dynamic-table --symbols --dyn-syms --section-data --hash-table %t | FileCheck %s8// RUN: ld.lld --hash-style=sysv %t.o %t2.so %t2.so -o %t29// RUN: llvm-readobj --dyn-syms %t2 | FileCheck --check-prefix=DONT_EXPORT %s10 11// Make sure .symtab is properly aligned.12// SO:      Name: .symtab13// SO-NEXT: Type: SHT_SYMTAB14// SO-NEXT: Flags [15// SO-NEXT: ]16// SO-NEXT: Address:17// SO-NEXT: Offset: 0x1D018// SO-NEXT: Size:19// SO-NEXT: Link:20// SO-NEXT: Info:21// SO-NEXT: AddressAlignment: 422 23// CHECK:        Name: .interp24// CHECK-NEXT:   Type: SHT_PROGBITS25// CHECK-NEXT:   Flags [26// CHECK-NEXT:     SHF_ALLOC27// CHECK-NEXT:   ]28// CHECK-NEXT:   Address: [[INTERPADDR:.*]]29// CHECK-NEXT:   Offset: [[INTERPOFFSET:.*]]30// CHECK-NEXT:   Size: [[INTERPSIZE:.*]]31// CHECK-NEXT:   Link: 032// CHECK-NEXT:   Info: 033// CHECK-NEXT:   AddressAlignment: 134// CHECK-NEXT:   EntrySize: 035// CHECK-NEXT:   SectionData (36// CHECK-NEXT:     0000: 2F6C6962 36342F6C 642D6C69 6E75782D  |/lib64/ld-linux-|37// CHECK-NEXT:     0010: 7838362D 36342E73 6F2E3200           |x86-64.so.2.|38// CHECK-NEXT:   )39// CHECK-NEXT: }40 41// test that .hash is linked to .dynsym42// CHECK:        Index: 243// CHECK-NEXT:   Name: .dynsym44// CHECK-NEXT:   Type: SHT_DYNSYM45// CHECK-NEXT:   Flags [46// CHECK-NEXT:     SHF_ALLOC47// CHECK-NEXT:   ]48// CHECK-NEXT:   Address: [[DYNSYMADDR:.*]]49// CHECK-NEXT:   Offset: 0x17050// CHECK-NEXT:   Size:51// CHECK-NEXT:   Link: [[DYNSTR:.*]]52// CHECK-NEXT:   Info: 153// CHECK-NEXT:   AddressAlignment: 454// CHECK-NEXT:   EntrySize: 1655// CHECK-NEXT:   SectionData (56// CHECK-NEXT:     0000:57// CHECK-NEXT:     0010:58// CHECK-NEXT:     0020:59// CHECK-NEXT:     0030:60// CHECK-NEXT:   )61// CHECK-NEXT: }62// CHECK-NEXT: Section {63// CHECK-NEXT:   Index: 364// CHECK-NEXT:    Name: .hash65// CHECK-NEXT:    Type: SHT_HASH66// CHECK-NEXT:    Flags [67// CHECK-NEXT:      SHF_ALLOC68// CHECK-NEXT:    ]69// CHECK-NEXT:    Address: [[HASHADDR:.*]]70// CHECK-NEXT:    Offset:71// CHECK-NEXT:    Size:72// CHECK-NEXT:    Link: 273// CHECK-NEXT:    Info: 074// CHECK-NEXT:    AddressAlignment: 475// CHECK-NEXT:    EntrySize: 476// CHECK:      Section {77// CHECK-NEXT:   Index: [[DYNSTR]]78// CHECK-NEXT:   Name: .dynstr79// CHECK-NEXT:   Type: SHT_STRTAB80// CHECK-NEXT:   Flags [81// CHECK-NEXT:     SHF_ALLOC82// CHECK-NEXT:   ]83// CHECK-NEXT:   Address: [[DYNSTRADDR:.*]]84// CHECK-NEXT:   Offset:85// CHECK-NEXT:   Size:86// CHECK-NEXT:   Link: 087// CHECK-NEXT:   Info: 088// CHECK-NEXT:   AddressAlignment: 189// CHECK-NEXT:   EntrySize: 090 91// CHECK:      Name: .rel.dyn92// CHECK-NEXT: Type: SHT_REL93// CHECK-NEXT: Flags [94// CHECK-NEXT:   SHF_ALLOC95// CHECK-NEXT: ]96// CHECK-NEXT: Address: [[RELADDR:.*]]97// CHECK-NEXT: Offset:98// CHECK-NEXT: Size: [[RELSIZE:.*]]99// CHECK-NEXT: Link:100// CHECK-NEXT: Info:101// CHECK-NEXT: AddressAlignment:102// CHECK-NEXT: EntrySize: [[RELENT:.*]]103 104// CHECK:        Name: .dynamic105// CHECK-NEXT:   Type: SHT_DYNAMIC106// CHECK-NEXT:   Flags [107// CHECK-NEXT:     SHF_ALLOC108// CHECK-NEXT:     SHF_WRITE109// CHECK-NEXT:   ]110// CHECK-NEXT:   Address: [[ADDR:.*]]111// CHECK-NEXT:   Offset: [[OFFSET:.*]]112// CHECK-NEXT:   Size: [[SIZE:.*]]113// CHECK-NEXT:   Link: [[DYNSTR]]114// CHECK-NEXT:   Info: 0115// CHECK-NEXT:   AddressAlignment: [[ALIGN:.*]]116// CHECK-NEXT:   EntrySize: 8117// CHECK-NEXT:   SectionData (118// CHECK:        )119 120// CHECK:      Name: .symtab121// CHECK-NEXT: Type: SHT_SYMTAB122// CHECK-NEXT: Flags [123// CHECK-NEXT: ]124// CHECK-NEXT: Address:125// CHECK-NEXT: Offset:126// CHECK-NEXT: Size:127// CHECK-NEXT: Link:128// CHECK-NEXT: Info:129// CHECK-NEXT: AddressAlignment:130// CHECK-NEXT: EntrySize: [[SYMENT:.*]]131 132// CHECK:     ProgramHeaders [133// CHECK:        Type: PT_INTERP134// CHECK-NEXT:   Offset: [[INTERPOFFSET]]135// CHECK-NEXT:   VirtualAddress: [[INTERPADDR]]136// CHECK-NEXT:   PhysicalAddress: [[INTERPADDR]]137// CHECK-NEXT:   FileSize: [[INTERPSIZE]]138// CHECK-NEXT:   MemSize: [[INTERPSIZE]]139// CHECK-NEXT:   Flags [140// CHECK-NEXT:     PF_R141// CHECK-NEXT:   ]142// CHECK-NEXT:   Alignment: 1143// CHECK-NEXT: }144// CHECK:        Type: PT_DYNAMIC145// CHECK-NEXT:   Offset: [[OFFSET]]146// CHECK-NEXT:   VirtualAddress: [[ADDR]]147// CHECK-NEXT:   PhysicalAddress: [[ADDR]]148// CHECK-NEXT:   FileSize: [[SIZE]]149// CHECK-NEXT:   MemSize: [[SIZE]]150// CHECK-NEXT:   Flags [151// CHECK-NEXT:     PF_R152// CHECK-NEXT:     PF_W153// CHECK-NEXT:   ]154// CHECK-NEXT:   Alignment: [[ALIGN]]155// CHECK-NEXT: }156 157// CHECK:      DynamicSection [158// CHECK-NEXT:   Tag        Type                 Name/Value159// CHECK-NEXT:   0x0000001D RUNPATH              Library runpath: [foo:bar]160// CHECK-NEXT:   0x00000001 NEEDED               Shared library: [{{.*}}2.so]161// CHECK-NEXT:   0x00000015 DEBUG                0x0162// CHECK-NEXT:   0x00000011 REL                  [[RELADDR]]163// CHECK-NEXT:   0x00000012 RELSZ                [[RELSIZE]] (bytes)164// CHECK-NEXT:   0x00000013 RELENT               [[RELENT]] (bytes)165// CHECK-NEXT:   0x00000006 SYMTAB               [[DYNSYMADDR]]166// CHECK-NEXT:   0x0000000B SYMENT               [[SYMENT]] (bytes)167// CHECK-NEXT:   0x00000005 STRTAB               [[DYNSTRADDR]]168// CHECK-NEXT:   0x0000000A STRSZ169// CHECK-NEXT:   0x00000004 HASH                 [[HASHADDR]]170// CHECK-NEXT:   0x00000000 NULL                 0x0171// CHECK-NEXT: ]172 173// CHECK:      Symbols [174// CHECK-NEXT:   Symbol {175// CHECK-NEXT:     Name:176// CHECK-NEXT:     Value: 0x0177// CHECK-NEXT:     Size: 0178// CHECK-NEXT:     Binding: Local179// CHECK-NEXT:     Type: None180// CHECK-NEXT:     Other: 0181// CHECK-NEXT:     Section: Undefined182// CHECK-NEXT:   }183// CHECK-NEXT:   Symbol {184// CHECK-NEXT:     Name: _DYNAMIC185// CHECK-NEXT:     Value: 0x402210186// CHECK-NEXT:     Size: 0187// CHECK-NEXT:     Binding: Local188// CHECK-NEXT:     Type: None189// CHECK-NEXT:     Other [ (0x2)190// CHECK-NEXT:       STV_HIDDEN191// CHECK-NEXT:     ]192// CHECK-NEXT:     Section: .dynamic193// CHECK-NEXT:   }194// CHECK-NEXT:   Symbol {195// CHECK-NEXT:     Name: _start196// CHECK-NEXT:     Value: 0x401208197// CHECK-NEXT:     Size: 0198// CHECK-NEXT:     Binding: Global199// CHECK-NEXT:     Type: None200// CHECK-NEXT:     Other: 0201// CHECK-NEXT:     Section: .text202// CHECK-NEXT:   }203// CHECK-NEXT:   Symbol {204// CHECK-NEXT:     Name: bar205// CHECK-NEXT:     Value: 0x0206// CHECK-NEXT:     Size: 0207// CHECK-NEXT:     Binding: Global208// CHECK-NEXT:     Type: Function209// CHECK-NEXT:     Other: 0210// CHECK-NEXT:     Section: Undefined211// CHECK-NEXT:   }212// CHECK-NEXT:   Symbol {213// CHECK-NEXT:     Name: zed214// CHECK-NEXT:     Value: 0x0215// CHECK-NEXT:     Size: 0216// CHECK-NEXT:     Binding: Global (0x1)217// CHECK-NEXT:     Type: None (0x0)218// CHECK-NEXT:     Other: 0219// CHECK-NEXT:     Section: Undefined (0x0)220// CHECK-NEXT:   }221// CHECK-NEXT: ]222 223// CHECK:      DynamicSymbols [224// CHECK-NEXT:   Symbol {225// CHECK-NEXT:     Name:226// CHECK-NEXT:     Value: 0x0227// CHECK-NEXT:     Size: 0228// CHECK-NEXT:     Binding: Local229// CHECK-NEXT:     Type: None230// CHECK-NEXT:     Other: 0231// CHECK-NEXT:     Section: Undefined232// CHECK-NEXT:   }233// CHECK-NEXT:   Symbol {234// CHECK-NEXT:     Name: _start235// CHECK-NEXT:     Value: 0x401208236// CHECK-NEXT:     Size: 0237// CHECK-NEXT:     Binding: Global238// CHECK-NEXT:     Type: Non239// CHECK-NEXT:     Other: 0240// CHECK-NEXT:     Section: .text241// CHECK-NEXT:   }242// CHECK-NEXT:   Symbol {243// CHECK-NEXT:     Name: bar244// CHECK-NEXT:     Value: 0x0245// CHECK-NEXT:     Size: 0246// CHECK-NEXT:     Binding: Global247// CHECK-NEXT:     Type: Function248// CHECK-NEXT:     Other: 0249// CHECK-NEXT:     Section: Undefined250// CHECK-NEXT:   }251// CHECK-NEXT:   Symbol {252// CHECK-NEXT:     Name: zed253// CHECK-NEXT:     Value: 0x0254// CHECK-NEXT:     Size: 0255// CHECK-NEXT:     Binding: Global256// CHECK-NEXT:     Type: None257// CHECK-NEXT:     Other: 0258// CHECK-NEXT:     Section: Undefined259// CHECK-NEXT:   }260// CHECK-NEXT: ]261 262// DONT_EXPORT:      DynamicSymbols [263// DONT_EXPORT-NEXT:   Symbol {264// DONT_EXPORT-NEXT:     Name:265// DONT_EXPORT-NEXT:     Value: 0x0266// DONT_EXPORT-NEXT:     Size: 0267// DONT_EXPORT-NEXT:     Binding: Local (0x0)268// DONT_EXPORT-NEXT:     Type: None (0x0)269// DONT_EXPORT-NEXT:     Other: 0270// DONT_EXPORT-NEXT:     Section: Undefined (0x0)271// DONT_EXPORT-NEXT:   }272// DONT_EXPORT-NEXT:   Symbol {273// DONT_EXPORT-NEXT:     Name: bar274// DONT_EXPORT-NEXT:     Value: 0x0275// DONT_EXPORT-NEXT:     Size: 0276// DONT_EXPORT-NEXT:     Binding: Global277// DONT_EXPORT-NEXT:     Type: Function278// DONT_EXPORT-NEXT:     Other: 0279// DONT_EXPORT-NEXT:     Section: Undefined280// DONT_EXPORT-NEXT:   }281// DONT_EXPORT-NEXT:   Symbol {282// DONT_EXPORT-NEXT:     Name: zed283// DONT_EXPORT-NEXT:     Value: 0x0284// DONT_EXPORT-NEXT:     Size: 0285// DONT_EXPORT-NEXT:     Binding: Global286// DONT_EXPORT-NEXT:     Type: None287// DONT_EXPORT-NEXT:     Other: 0288// DONT_EXPORT-NEXT:     Section: Undefined289// DONT_EXPORT-NEXT:   }290// DONT_EXPORT-NEXT: ]291 292// CHECK:      HashTable {293// CHECK-NEXT:   Num Buckets: 4294// CHECK-NEXT:   Num Chains: 4295// CHECK-NEXT:   Buckets: [3, 0, 2, 0]296// CHECK-NEXT:   Chains: [0, 0, 0, 1]297// CHECK-NEXT: }298 299.global _start300_start:301.long bar@GOT302.long zed@GOT303