summaryrefslogtreecommitdiffstats
path: root/lld/test/elf/tls-tbss-size.test
diff options
context:
space:
mode:
Diffstat (limited to 'lld/test/elf/tls-tbss-size.test')
-rw-r--r--lld/test/elf/tls-tbss-size.test177
1 files changed, 177 insertions, 0 deletions
diff --git a/lld/test/elf/tls-tbss-size.test b/lld/test/elf/tls-tbss-size.test
new file mode 100644
index 00000000000..52550f7d394
--- /dev/null
+++ b/lld/test/elf/tls-tbss-size.test
@@ -0,0 +1,177 @@
+# This test verify if external TLS non initialized variables (tbss) are
+# accounted in TBSS segment size
+
+# The input file 'test/elf/Inputs/tls-tbss-size.yaml' declares:
+#
+# __thread int t0;
+# __thread int t1;
+# __thread int t2;
+# __thread int t3;
+#
+# And the 'test/elf/tls-tbss-size.test' defines:
+#
+# __thread int t4;
+# __thread int t5;
+# __thread int t6;
+# __thread int t7;
+#
+# __thread int t8 = 3;
+# __thread int t9 = 4;
+# __thread int t10 = 5;
+# __thread int t11 = 6;
+
+#RUN: yaml2obj -format=elf -o=%t-t1.o %p/Inputs/tls-tbss-size.yaml
+#RUN: yaml2obj -format=elf -o=%t-t0.o %s
+#RUN: lld -flavor gnu -target x86_64-linux --noinhibit-exec -o %t.exe %t-t0.o %t-t1.o
+#RUN: llvm-readobj --sections %t.exe | FileCheck %s
+
+#CHECK: Sections [
+#CHECK: Section {
+#CHECK: Index: 9
+#CHECK: Name: .tdata (71)
+#CHECK: Size: 16
+#CHECK: }
+#CHECK: Section {
+#CHECK: Index: 10
+#CHECK: Name: .tbss (78)
+#CHECK: Size: 32
+#CHECK: }
+
+---
+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: 488B050000000064C70001000000488B050000000064C70002000000488B050000000064C70003000000488B050000000064C7000400000064C70425000000000500000064C70425000000000600000064C70425000000000700000064C70425000000000800000031C0C3
+ - Name: .rela.text
+ Type: SHT_RELA
+ Link: .symtab
+ AddressAlign: 0x0000000000000008
+ Info: .text
+ Relocations:
+ - Offset: 0x0000000000000003
+ Symbol: t0
+ Type: R_X86_64_GOTTPOFF
+ Addend: -4
+ - Offset: 0x0000000000000011
+ Symbol: t1
+ Type: R_X86_64_GOTTPOFF
+ Addend: -4
+ - Offset: 0x000000000000001F
+ Symbol: t2
+ Type: R_X86_64_GOTTPOFF
+ Addend: -4
+ - Offset: 0x000000000000002D
+ Symbol: t3
+ Type: R_X86_64_GOTTPOFF
+ Addend: -4
+ - Offset: 0x000000000000003C
+ Symbol: t4
+ Type: R_X86_64_TPOFF32
+ - Offset: 0x0000000000000048
+ Symbol: t5
+ Type: R_X86_64_TPOFF32
+ - Offset: 0x0000000000000054
+ Symbol: t6
+ Type: R_X86_64_TPOFF32
+ - Offset: 0x0000000000000060
+ Symbol: t7
+ Type: R_X86_64_TPOFF32
+ - Name: .data
+ Type: SHT_PROGBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC ]
+ AddressAlign: 0x0000000000000004
+ Content: ''
+ - Name: .bss
+ Type: SHT_NOBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC ]
+ AddressAlign: 0x0000000000000004
+ Content: ''
+ - Name: .tdata
+ Type: SHT_PROGBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC, SHF_TLS ]
+ AddressAlign: 0x0000000000000004
+ Content: '03000000040000000500000006000000'
+ - Name: .tbss
+ Type: SHT_NOBITS
+ Flags: [ SHF_WRITE, SHF_ALLOC, SHF_TLS ]
+ AddressAlign: 0x0000000000000004
+ Content: 00636C616E672076657273696F6E2033
+ - Name: .note.GNU-stack
+ Type: SHT_PROGBITS
+ AddressAlign: 0x0000000000000001
+ Content: ''
+ - Name: .eh_frame
+ Type: SHT_PROGBITS
+ Flags: [ SHF_ALLOC ]
+ AddressAlign: 0x0000000000000008
+ Content: 1400000000000000017A5200017810011B0C070890010000140000001C000000000000006B0000000000000000000000
+Symbols:
+ Local:
+ - Name: .tbss
+ Type: STT_TLS
+ Section: .tbss
+ - Name: .tdata
+ Type: STT_TLS
+ Section: .tdata
+ - Type: STT_SECTION
+ Section: .text
+ Global:
+ - Name: main
+ Type: STT_FUNC
+ Section: .text
+ Size: 0x000000000000006B
+ - Name: t0
+ Type: STT_TLS
+ - Name: t1
+ Type: STT_TLS
+ - Name: t10
+ Type: STT_TLS
+ Section: .tdata
+ Value: 0x0000000000000008
+ Size: 0x0000000000000004
+ - Name: t11
+ Type: STT_TLS
+ Section: .tdata
+ Value: 0x000000000000000C
+ Size: 0x0000000000000004
+ - Name: t2
+ Type: STT_TLS
+ - Name: t3
+ Type: STT_TLS
+ - Name: t4
+ Type: STT_TLS
+ Section: .tbss
+ Size: 0x0000000000000004
+ - Name: t5
+ Type: STT_TLS
+ Section: .tbss
+ Value: 0x0000000000000004
+ Size: 0x0000000000000004
+ - Name: t6
+ Type: STT_TLS
+ Section: .tbss
+ Value: 0x0000000000000008
+ Size: 0x0000000000000004
+ - Name: t7
+ Type: STT_TLS
+ Section: .tbss
+ Value: 0x000000000000000C
+ Size: 0x0000000000000004
+ - Name: t8
+ Type: STT_TLS
+ Section: .tdata
+ Size: 0x0000000000000004
+ - Name: t9
+ Type: STT_TLS
+ Section: .tdata
+ Value: 0x0000000000000004
+ Size: 0x0000000000000004
+...
OpenPOWER on IntegriCloud