brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.3 KiB · 6311890 Raw
190 lines · plain
1// REQUIRES: x862// RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t3// RUN: ld.lld %t -o %tout4// RUN: llvm-readobj -S -l --symbols %tout | FileCheck %s5// RUN: llvm-objdump --no-print-imm-hex -d %tout | FileCheck %s --check-prefix=DIS6 7/// Reject local-exec TLS relocations for -shared, regardless of the preemptibility.8// RUN: not ld.lld -shared %t -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR9// RUN: not ld.lld -shared -Bsymbolic %t -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR10 11// ERR:       error: relocation R_X86_64_TPOFF32 against a cannot be used with -shared12// ERR-NEXT:  defined in {{.*}}13// ERR-NEXT:  referenced by {{.*}}:(.text+0x4)14// ERR-EMPTY:15// ERR-NEXT:  error: relocation R_X86_64_TPOFF32 against b cannot be used with -shared16// ERR-NEXT:  defined in {{.*}}17// ERR-NEXT:  referenced by {{.*}}:(.text+0xc)18// ERR-EMPTY:19// ERR-NEXT:  error: relocation R_X86_64_TPOFF32 against c cannot be used with -shared20// ERR-NEXT:  defined in {{.*}}21// ERR-NEXT:  referenced by {{.*}}:(.text+0x14)22// ERR-EMPTY:23// ERR-NEXT:  error: relocation R_X86_64_TPOFF32 against d cannot be used with -shared24// ERR-NEXT:  defined in {{.*}}25// ERR-NEXT:  referenced by {{.*}}:(.text+0x1c)26 27.global _start28_start:29  movl %fs:a@tpoff, %eax30  movl %fs:b@tpoff, %eax31  movl %fs:c@tpoff, %eax32  movl %fs:d@tpoff, %eax33 34  .global a35	.section	.tbss,"awT",@nobits36a:37	.long	038 39  .global b40	.section	.tdata,"awT",@progbits41b:42	.long	143 44  .global c45	.section	.thread_bss,"awT",@nobits46c:47	.long	048 49  .global d50	.section	.thread_data,"awT",@progbits51d:52	.long	253 54// CHECK:          Name: .tdata55// CHECK-NEXT:     Type: SHT_PROGBITS56// CHECK-NEXT:     Flags [57// CHECK-NEXT:       SHF_ALLOC58// CHECK-NEXT:       SHF_TLS59// CHECK-NEXT:       SHF_WRITE60// CHECK-NEXT:     ]61// CHECK-NEXT:     Address: [[TDATA_ADDR:0x.*]]62// CHECK-NEXT:     Offset:63// CHECK-NEXT:     Size: 464// CHECK-NEXT:     Link:65// CHECK-NEXT:     Info:66// CHECK-NEXT:     AddressAlignment:67// CHECK-NEXT:     EntrySize:68// CHECK-NEXT:   }69// CHECK-NEXT:   Section {70// CHECK-NEXT:     Index:71// CHECK-NEXT:     Name: .thread_data72// CHECK-NEXT:     Type: SHT_PROGBITS73// CHECK-NEXT:     Flags [74// CHECK-NEXT:       SHF_ALLOC75// CHECK-NEXT:       SHF_TLS76// CHECK-NEXT:       SHF_WRITE77// CHECK-NEXT:     ]78// CHECK-NEXT:     Address:79// CHECK-NEXT:     Offset:80// CHECK-NEXT:     Size: 481// CHECK-NEXT:     Link:82// CHECK-NEXT:     Info:83// CHECK-NEXT:     AddressAlignment:84// CHECK-NEXT:     EntrySize:85// CHECK-NEXT:   }86// CHECK-NEXT:   Section {87// CHECK-NEXT:     Index:88// CHECK-NEXT:     Name: .tbss89// CHECK-NEXT:     Type: SHT_NOBITS90// CHECK-NEXT:     Flags [91// CHECK-NEXT:       SHF_ALLOC92// CHECK-NEXT:       SHF_TLS93// CHECK-NEXT:       SHF_WRITE94// CHECK-NEXT:     ]95// CHECK-NEXT:     Address: [[TBSS_ADDR:0x.*]]96// CHECK-NEXT:     Offset:97// CHECK-NEXT:     Size: 498// CHECK-NEXT:     Link:99// CHECK-NEXT:     Info:100// CHECK-NEXT:     AddressAlignment:101// CHECK-NEXT:     EntrySize:102// CHECK-NEXT:   }103// CHECK-NEXT:   Section {104// CHECK-NEXT:     Index:105// CHECK-NEXT:     Name: .thread_bss106// CHECK-NEXT:     Type: SHT_NOBITS107// CHECK-NEXT:     Flags [108// CHECK-NEXT:       SHF_ALLOC109// CHECK-NEXT:       SHF_TLS110// CHECK-NEXT:       SHF_WRITE111// CHECK-NEXT:     ]112 113// 0x2021F4 = TBSS_ADDR + 4114 115// CHECK-NEXT:     Address: 0x2021F4116// CHECK-NEXT:     Offset:117// CHECK-NEXT:     Size: 4118// CHECK-NEXT:     Link:119// CHECK-NEXT:     Info:120// CHECK-NEXT:     AddressAlignment:121// CHECK-NEXT:     EntrySize:122// CHECK-NEXT:   }123 124// CHECK:      ProgramHeaders [125// CHECK:          Type: PT_LOAD126// CHECK:          Type: PT_LOAD127// CHECK:          Type: PT_LOAD128// CHECK:          FileSize: 8129// CHECK-NEXT:     MemSize: [[#]]130// CHECK-NEXT:     Flags [131// CHECK-NEXT:       PF_R132// CHECK-NEXT:       PF_W133// CHECK-NEXT:     ]134// CHECK:          Type: PT_TLS135// CHECK-NEXT:     Offset:136// CHECK-NEXT:     VirtualAddress: [[TDATA_ADDR]]137// CHECK-NEXT:     PhysicalAddress: [[TDATA_ADDR]]138// CHECK-NEXT:     FileSize: 8139// CHECK-NEXT:     MemSize: 16140// CHECK-NEXT:     Flags [141// CHECK-NEXT:       PF_R142// CHECK-NEXT:     ]143// CHECK-NEXT:     Alignment:144// CHECK-NEXT:   }145 146// CHECK:      Symbols [147// CHECK:          Name: a148// CHECK-NEXT:     Value: 0x8149// CHECK-NEXT:     Size:150// CHECK-NEXT:     Binding: Global151// CHECK-NEXT:     Type: TLS152// CHECK-NEXT:     Other: 0153// CHECK-NEXT:     Section: .tbss154// CHECK-NEXT:   }155// CHECK-NEXT:   Symbol {156// CHECK-NEXT:     Name: b157// CHECK-NEXT:     Value: 0x0158// CHECK-NEXT:     Size:159// CHECK-NEXT:     Binding: Global160// CHECK-NEXT:     Type: TLS161// CHECK-NEXT:     Other: 0162// CHECK-NEXT:     Section: .tdata163// CHECK-NEXT:   }164// CHECK-NEXT:   Symbol {165// CHECK-NEXT:     Name: c166// CHECK-NEXT:     Value: 0xC167// CHECK-NEXT:     Size:168// CHECK-NEXT:     Binding: Global169// CHECK-NEXT:     Type: TLS170// CHECK-NEXT:     Other: 0171// CHECK-NEXT:     Section: .thread_bss172// CHECK-NEXT:   }173// CHECK-NEXT:   Symbol {174// CHECK-NEXT:     Name: d175// CHECK-NEXT:     Value: 0x4176// CHECK-NEXT:     Size:177// CHECK-NEXT:     Binding: Global178// CHECK-NEXT:     Type: TLS179// CHECK-NEXT:     Other: 0180// CHECK-NEXT:     Section: .thread_data181// CHECK-NEXT:   }182 183// DIS:      Disassembly of section .text:184// DIS-EMPTY:185// DIS-NEXT: <_start>:186// DIS-NEXT:   movl    %fs:-8, %eax187// DIS-NEXT:   movl    %fs:-16, %eax188// DIS-NEXT:   movl    %fs:-4, %eax189// DIS-NEXT:   movl    %fs:-12, %eax190