[lld] r266063 - Always create a .got on mips.
Rafael Espindola via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 12 06:21:15 PDT 2016
Author: rafael
Date: Tue Apr 12 08:21:13 2016
New Revision: 266063
URL: http://llvm.org/viewvc/llvm-project?rev=266063&view=rev
Log:
Always create a .got on mips.
The _gp* family of symbols is defined as an offset in .got, and it is
not at all clear what should happen when .got is not defined.
This will allow some simplifications on how these symbols are handled.
Modified:
lld/trunk/ELF/Writer.cpp
lld/trunk/test/ELF/basic-mips.s
lld/trunk/test/ELF/eh-frame-hdr-abs-fde.s
lld/trunk/test/ELF/mips-gp-local.s
lld/trunk/test/ELF/mips-hilo.s
lld/trunk/test/ELF/mips-pc-relocs.s
Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=266063&r1=266062&r2=266063&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Tue Apr 12 08:21:13 2016
@@ -1163,7 +1163,7 @@ template <class ELFT> bool Writer<ELFT>:
// We add the .got section to the result for dynamic MIPS target because
// its address and properties are mentioned in the .dynamic section.
- if (Config->EMachine == EM_MIPS && isOutputDynamic())
+ if (Config->EMachine == EM_MIPS)
return true;
// If we have a relocation that is relative to GOT (such as GOTOFFREL),
Modified: lld/trunk/test/ELF/basic-mips.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-mips.s?rev=266063&r1=266062&r2=266063&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-mips.s (original)
+++ lld/trunk/test/ELF/basic-mips.s Tue Apr 12 08:21:13 2016
@@ -27,7 +27,7 @@ __start:
# CHECK-NEXT: Version: 1
# CHECK-NEXT: Entry: 0x20000
# CHECK-NEXT: ProgramHeaderOffset: 0x34
-# CHECK-NEXT: SectionHeaderOffset: 0x20084
+# CHECK-NEXT: SectionHeaderOffset: 0x30088
# CHECK-NEXT: Flags [
# CHECK-NEXT: EF_MIPS_ABI_O32
# CHECK-NEXT: EF_MIPS_ARCH_32R2
@@ -35,10 +35,10 @@ __start:
# CHECK-NEXT: ]
# CHECK-NEXT: HeaderSize: 52
# CHECK-NEXT: ProgramHeaderEntrySize: 32
-# CHECK-NEXT: ProgramHeaderCount: 5
+# CHECK-NEXT: ProgramHeaderCount: 6
# CHECK-NEXT: SectionHeaderEntrySize: 40
-# CHECK-NEXT: SectionHeaderCount: 9
-# CHECK-NEXT: StringTableSectionIndex: 7
+# CHECK-NEXT: SectionHeaderCount: 10
+# CHECK-NEXT: StringTableSectionIndex: 8
# CHECK-NEXT: }
# CHECK-NEXT: Sections [
# CHECK-NEXT: Section {
@@ -62,8 +62,8 @@ __start:
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
-# CHECK-NEXT: Address: 0x100D4
-# CHECK-NEXT: Offset: 0xD4
+# CHECK-NEXT: Address: 0x100F4
+# CHECK-NEXT: Offset: 0xF4
# CHECK-NEXT: Size: 24
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@@ -77,8 +77,8 @@ __start:
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
-# CHECK-NEXT: Address: 0x100F0
-# CHECK-NEXT: Offset: 0xF0
+# CHECK-NEXT: Address: 0x10110
+# CHECK-NEXT: Offset: 0x110
# CHECK-NEXT: Size: 24
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@@ -103,14 +103,31 @@ __start:
# CHECK-NEXT: }
# CHECK-NEXT: Section {
# CHECK-NEXT: Index: 4
-# CHECK-NEXT: Name: .data
+# CHECK-NEXT: Name: .got (31)
# CHECK-NEXT: Type: SHT_PROGBITS (0x1)
-# CHECK-NEXT: Flags [ (0x3)
+# CHECK-NEXT: Flags [ (0x10000003)
# CHECK-NEXT: SHF_ALLOC (0x2)
+# CHECK-NEXT: SHF_MIPS_GPREL (0x10000000)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x30000
# CHECK-NEXT: Offset: 0x20000
+# CHECK-NEXT: Size: 8
+# CHECK-NEXT: Link: 0
+# CHECK-NEXT: Info: 0
+# CHECK-NEXT: AddressAlignment: 4
+# CHECK-NEXT: EntrySize: 0
+# CHECK-NEXT: }
+# CHECK-NEXT: Section {
+# CHECK-NEXT: Index: 5
+# CHECK-NEXT: Name: .data
+# CHECK-NEXT: Type: SHT_PROGBITS (0x1)
+# CHECK-NEXT: Flags [ (0x3)
+# CHECK-NEXT: SHF_ALLOC (0x2)
+# CHECK-NEXT: SHF_WRITE (0x1)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Address: 0x40000
+# CHECK-NEXT: Offset: 0x30000
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@@ -118,15 +135,15 @@ __start:
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: }
# CHECK-NEXT: Section {
-# CHECK-NEXT: Index: 5
-# CHECK-NEXT: Name: .bss (37)
+# CHECK-NEXT: Index: 6
+# CHECK-NEXT: Name: .bss
# CHECK-NEXT: Type: SHT_NOBITS (0x8)
# CHECK-NEXT: Flags [ (0x3)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
-# CHECK-NEXT: Address: 0x30000
-# CHECK-NEXT: Offset: 0x20000
+# CHECK-NEXT: Address: 0x40000
+# CHECK-NEXT: Offset: 0x30000
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@@ -134,41 +151,41 @@ __start:
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: }
# CHECK-NEXT: Section {
-# CHECK-NEXT: Index: 6
+# CHECK-NEXT: Index: 7
# CHECK-NEXT: Name: .symtab
# CHECK-NEXT: Type: SHT_SYMTAB (0x2)
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
-# CHECK-NEXT: Offset: 0x20000
+# CHECK-NEXT: Offset: 0x30000
# CHECK-NEXT: Size: 48
-# CHECK-NEXT: Link: 8
+# CHECK-NEXT: Link: 9
# CHECK-NEXT: Info: 1
# CHECK-NEXT: AddressAlignment: 4
# CHECK-NEXT: EntrySize: 16
# CHECK-NEXT: }
# CHECK-NEXT: Section {
-# CHECK-NEXT: Index: 7
+# CHECK-NEXT: Index: 8
# CHECK-NEXT: Name: .shstrtab
# CHECK-NEXT: Type: SHT_STRTAB (0x3)
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
-# CHECK-NEXT: Offset: 0x20030
-# CHECK-NEXT: Size: 68
+# CHECK-NEXT: Offset: 0x30030
+# CHECK-NEXT: Size: 73
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
# CHECK-NEXT: AddressAlignment: 1
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: }
# CHECK-NEXT: Section {
-# CHECK-NEXT: Index: 8
-# CHECK-NEXT: Name: .strtab (60)
+# CHECK-NEXT: Index: 9
+# CHECK-NEXT: Name: .strtab
# CHECK-NEXT: Type: SHT_STRTAB (0x3)
# CHECK-NEXT: Flags [ (0x0)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x0
-# CHECK-NEXT: Offset: 0x20074
+# CHECK-NEXT: Offset: 0x30079
# CHECK-NEXT: Size: 13
# CHECK-NEXT: Link: 0
# CHECK-NEXT: Info: 0
@@ -197,7 +214,7 @@ __start:
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: _gp
-# CHECK-NEXT: Value: 0x0
+# CHECK-NEXT: Value: 0x37FF0
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Global
# CHECK-NEXT: Type: None (0x0)
@@ -211,8 +228,8 @@ __start:
# CHECK-NEXT: Offset: 0x34
# CHECK-NEXT: VirtualAddress: 0x10034
# CHECK-NEXT: PhysicalAddress: 0x10034
-# CHECK-NEXT: FileSize: 160
-# CHECK-NEXT: MemSize: 160
+# CHECK-NEXT: FileSize: 192
+# CHECK-NEXT: MemSize: 192
# CHECK-NEXT: Flags [ (0x4)
# CHECK-NEXT: PF_R (0x4)
# CHECK-NEXT: ]
@@ -223,8 +240,8 @@ __start:
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
-# CHECK-NEXT: FileSize: 264
-# CHECK-NEXT: MemSize: 264
+# CHECK-NEXT: FileSize: 296
+# CHECK-NEXT: MemSize: 296
# CHECK-NEXT: Flags [ (0x4)
# CHECK-NEXT: PF_R (0x4)
# CHECK-NEXT: ]
@@ -248,8 +265,8 @@ __start:
# CHECK-NEXT: Offset: 0x20000
# CHECK-NEXT: VirtualAddress: 0x30000
# CHECK-NEXT: PhysicalAddress: 0x30000
-# CHECK-NEXT: FileSize: 0
-# CHECK-NEXT: MemSize: 0
+# CHECK-NEXT: FileSize: 65536
+# CHECK-NEXT: MemSize: 65536
# CHECK-NEXT: Flags [
# CHECK-NEXT: PF_R
# CHECK-NEXT: PF_W
@@ -257,6 +274,18 @@ __start:
# CHECK-NEXT: Alignment: 65536
# CHECK-NEXT: }
# CHECK-NEXT: ProgramHeader {
+# CHECK-NEXT: Type: PT_GNU_RELRO (0x6474E552)
+# CHECK-NEXT: Offset: 0x20000
+# CHECK-NEXT: VirtualAddress: 0x30000
+# CHECK-NEXT: PhysicalAddress: 0x30000
+# CHECK-NEXT: FileSize: 8
+# CHECK-NEXT: MemSize: 8
+# CHECK-NEXT: Flags [ (0x4)
+# CHECK-NEXT: PF_R (0x4)
+# CHECK-NEXT: ]
+# CHECK-NEXT: Alignment: 1
+# CHECK-NEXT: }
+# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_GNU_STACK
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x0
Modified: lld/trunk/test/ELF/eh-frame-hdr-abs-fde.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/eh-frame-hdr-abs-fde.s?rev=266063&r1=266062&r2=266063&view=diff
==============================================================================
--- lld/trunk/test/ELF/eh-frame-hdr-abs-fde.s (original)
+++ lld/trunk/test/ELF/eh-frame-hdr-abs-fde.s Tue Apr 12 08:21:13 2016
@@ -9,10 +9,10 @@
# REQUIRES: mips
# CHECK: Contents of section .eh_frame_hdr:
-# CHECK-NEXT: 10158 011b033b ffffffcc 00000001 0000fea8
-# ^-- 0x20000 - 0x10158
+# CHECK-NEXT: 10178 011b033b ffffffcc 00000001 0000fe88
+# ^-- 0x20000 - 0x10178
# .text - .eh_frame_hdr
-# CHECK-NEXT: 10168 ffffffe8
+# CHECK-NEXT: 10188 ffffffe8
# CHECK-NEXT: Contents of section .text:
# CHECK-NEXT: 20000 00000000
Modified: lld/trunk/test/ELF/mips-gp-local.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-gp-local.s?rev=266063&r1=266062&r2=266063&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-gp-local.s (original)
+++ lld/trunk/test/ELF/mips-gp-local.s Tue Apr 12 08:21:13 2016
@@ -8,10 +8,10 @@
# CHECK: Disassembly of section .text:
# CHECK-NEXT: __start:
-# CHECK-NEXT: 20000: 3c 08 00 00 lui $8, 0
-# CHECK-NEXT: 20004: 21 08 00 00 addi $8, $8, 0
+# CHECK-NEXT: 20000: 3c 08 00 03 lui $8, 3
+# CHECK-NEXT: 20004: 21 08 7f f0 addi $8, $8, 32752
-# CHECK: 00000000 *ABS* 00000000 _gp
+# CHECK: 00037ff0 *ABS* 00000000 _gp
.text
.globl __start
Modified: lld/trunk/test/ELF/mips-hilo.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-hilo.s?rev=266063&r1=266062&r2=266063&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-hilo.s (original)
+++ lld/trunk/test/ELF/mips-hilo.s Tue Apr 12 08:21:13 2016
@@ -34,20 +34,20 @@ g1:
# CHECK-NEXT: __start:
# CHECK-NEXT: 20000: 3c 08 00 02 lui $8, 2
# ^-- %hi(__start+4)
-# CHECK-NEXT: 20004: 3c 09 00 03 lui $9, 3
+# CHECK-NEXT: 20004: 3c 09 00 04 lui $9, 4
# ^-- %hi(g1+8)
# CHECK-NEXT: 20008: 21 08 00 04 addi $8, $8, 4
# ^-- %lo(__start+4)
# CHECK-NEXT: 2000c: 21 08 00 0c addi $8, $8, 12
# ^-- %lo(g1+8)
-# CHECK-NEXT: 20010: 3c 08 00 04 lui $8, 4
+# CHECK-NEXT: 20010: 3c 08 00 05 lui $8, 5
# ^-- %hi(l1+0x10000-4)
-# CHECK-NEXT: 20014: 3c 09 00 05 lui $9, 5
+# CHECK-NEXT: 20014: 3c 09 00 06 lui $9, 6
# ^-- %hi(l1+0x20000-4)
# CHECK-NEXT: 20018: 21 08 ff fc addi $8, $8, -4
# ^-- %lo(l1-4)
# CHECK: SYMBOL TABLE:
-# CHECK: 0030000 l .data 00000004 l1
+# CHECK: 0040000 l .data 00000004 l1
# CHECK: 0020000 .text 00000000 __start
-# CHECK: 0030004 g .data 00000004 g1
+# CHECK: 0040004 g .data 00000004 g1
Modified: lld/trunk/test/ELF/mips-pc-relocs.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/mips-pc-relocs.s?rev=266063&r1=266062&r2=266063&view=diff
==============================================================================
--- lld/trunk/test/ELF/mips-pc-relocs.s (original)
+++ lld/trunk/test/ELF/mips-pc-relocs.s Tue Apr 12 08:21:13 2016
@@ -38,8 +38,8 @@ __start:
# ^-- %lo(0x20020-0x20014)
# CHECK: Contents of section .data:
-# CHECK-NEXT: 30000 ffff0028 00000000 00000000 00000000
-# ^-- 0x20020 + 8 - 0x30000
+# CHECK-NEXT: 40000 fffe0028 00000000 00000000 00000000
+# ^-- 0x20020 + 8 - 0x40000
# CHECK: 00020000 .text 00000000 __start
# CHECK: 00020020 .text 00000000 _foo
More information about the llvm-commits
mailing list