[lld] r371554 - [mips] Allow PT_LOAD to have overlapping p_offset ranges on EM_MIPS

Simon Atanasyan via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 10 13:19:59 PDT 2019


Author: atanasyan
Date: Tue Sep 10 13:19:59 2019
New Revision: 371554

URL: http://llvm.org/viewvc/llvm-project?rev=371554&view=rev
Log:
[mips] Allow PT_LOAD to have overlapping p_offset ranges on EM_MIPS

Port the D64906 <https://reviews.llvm.org/D64906> technique to MIPS.

Fix PR33131

Modified:
    lld/trunk/ELF/Writer.cpp
    lld/trunk/test/ELF/basic-mips.s

Modified: lld/trunk/ELF/Writer.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Writer.cpp?rev=371554&r1=371553&r2=371554&view=diff
==============================================================================
--- lld/trunk/ELF/Writer.cpp (original)
+++ lld/trunk/ELF/Writer.cpp Tue Sep 10 13:19:59 2019
@@ -2218,7 +2218,6 @@ template <class ELFT> void Writer<ELFT>:
       //
       // TODO Enable this technique on all targets.
       bool enable = config->emachine != EM_HEXAGON &&
-                    config->emachine != EM_MIPS &&
                     config->emachine != EM_X86_64;
 
       if (!enable ||

Modified: lld/trunk/test/ELF/basic-mips.s
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/basic-mips.s?rev=371554&r1=371553&r2=371554&view=diff
==============================================================================
--- lld/trunk/test/ELF/basic-mips.s (original)
+++ lld/trunk/test/ELF/basic-mips.s Tue Sep 10 13:19:59 2019
@@ -24,9 +24,9 @@ __start:
 # CHECK-NEXT:   Type: Executable (0x2)
 # CHECK-NEXT:   Machine: EM_MIPS (0x8)
 # CHECK-NEXT:   Version: 1
-# CHECK-NEXT:   Entry: 0x20000
+# CHECK-NEXT:   Entry: 0x20150
 # CHECK-NEXT:   ProgramHeaderOffset: 0x34
-# CHECK-NEXT:   SectionHeaderOffset: 0x200A0
+# CHECK-NEXT:   SectionHeaderOffset: 0x200
 # CHECK-NEXT:   Flags [
 # CHECK-NEXT:     EF_MIPS_ABI_O32
 # CHECK-NEXT:     EF_MIPS_ARCH_32
@@ -92,8 +92,8 @@ __start:
 # CHECK-NEXT:       SHF_ALLOC (0x2)
 # CHECK-NEXT:       SHF_EXECINSTR (0x4)
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     Address: 0x20000
-# CHECK-NEXT:     Offset: 0x10000
+# CHECK-NEXT:     Address: 0x20150
+# CHECK-NEXT:     Offset: 0x150
 # CHECK-NEXT:     Size: 12
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -108,8 +108,8 @@ __start:
 # CHECK-NEXT:       SHF_ALLOC (0x2)
 # CHECK-NEXT:       SHF_WRITE (0x1)
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     Address: 0x30000
-# CHECK-NEXT:     Offset: 0x20000
+# CHECK-NEXT:     Address: 0x30160
+# CHECK-NEXT:     Offset: 0x160
 # CHECK-NEXT:     Size: 0
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -125,8 +125,8 @@ __start:
 # CHECK-NEXT:       SHF_MIPS_GPREL (0x10000000)
 # CHECK-NEXT:       SHF_WRITE (0x1)
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     Address: 0x30000
-# CHECK-NEXT:     Offset: 0x20000
+# CHECK-NEXT:     Address: 0x30160
+# CHECK-NEXT:     Offset: 0x160
 # CHECK-NEXT:     Size: 8
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -141,8 +141,8 @@ __start:
 # CHECK-NEXT:       SHF_ALLOC (0x2)
 # CHECK-NEXT:       SHF_WRITE (0x1)
 # CHECK-NEXT:     ]
-# CHECK-NEXT:     Address: 0x30010
-# CHECK-NEXT:     Offset: 0x20008
+# CHECK-NEXT:     Address: 0x30170
+# CHECK-NEXT:     Offset: 0x168
 # CHECK-NEXT:     Size: 0
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -158,7 +158,7 @@ __start:
 # CHECK-NEXT:       SHF_STRINGS (0x20)
 # CHECK-NEXT:     ]
 # CHECK-NEXT:     Address: 0x0
-# CHECK-NEXT:     Offset: 0x20008
+# CHECK-NEXT:     Offset: 0x168
 # CHECK-NEXT:     Size: 8
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -172,7 +172,7 @@ __start:
 # CHECK-NEXT:     Flags [ (0x0)
 # CHECK-NEXT:     ]
 # CHECK-NEXT:     Address: 0x0
-# CHECK-NEXT:     Offset: 0x20010
+# CHECK-NEXT:     Offset: 0x170
 # CHECK-NEXT:     Size: 48
 # CHECK-NEXT:     Link: 10
 # CHECK-NEXT:     Info: 2
@@ -186,7 +186,7 @@ __start:
 # CHECK-NEXT:     Flags [ (0x0)
 # CHECK-NEXT:     ]
 # CHECK-NEXT:     Address: 0x0
-# CHECK-NEXT:     Offset: 0x20040
+# CHECK-NEXT:     Offset: 0x1A0
 # CHECK-NEXT:     Size: 82
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -200,7 +200,7 @@ __start:
 # CHECK-NEXT:     Flags [ (0x0)
 # CHECK-NEXT:     ]
 # CHECK-NEXT:     Address: 0x0
-# CHECK-NEXT:     Offset: 0x20092
+# CHECK-NEXT:     Offset: 0x1F2
 # CHECK-NEXT:     Size: 13
 # CHECK-NEXT:     Link: 0
 # CHECK-NEXT:     Info: 0
@@ -220,7 +220,7 @@ __start:
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Symbol {
 # CHECK-NEXT:     Name: _gp
-# CHECK-NEXT:     Value: 0x37FF0
+# CHECK-NEXT:     Value: 0x38150
 # CHECK-NEXT:     Size: 0
 # CHECK-NEXT:     Binding: Local
 # CHECK-NEXT:     Type: None (0x0)
@@ -231,7 +231,7 @@ __start:
 # CHECK-NEXT:   }
 # CHECK-NEXT:   Symbol {
 # CHECK-NEXT:     Name: __start
-# CHECK-NEXT:     Value: 0x20000
+# CHECK-NEXT:     Value: 0x20150
 # CHECK-NEXT:     Size: 0
 # CHECK-NEXT:     Binding: Global (0x1)
 # CHECK-NEXT:     Type: None (0x0)
@@ -266,9 +266,9 @@ __start:
 # CHECK-NEXT:   }
 # CHECK-NEXT:   ProgramHeader {
 # CHECK-NEXT:     Type: PT_LOAD (0x1)
-# CHECK-NEXT:     Offset: 0x10000
-# CHECK-NEXT:     VirtualAddress: 0x20000
-# CHECK-NEXT:     PhysicalAddress: 0x20000
+# CHECK-NEXT:     Offset: 0x150
+# CHECK-NEXT:     VirtualAddress: 0x20150
+# CHECK-NEXT:     PhysicalAddress: 0x20150
 # CHECK-NEXT:     FileSize: 12
 # CHECK-NEXT:     MemSize: 12
 # CHECK-NEXT:     Flags [ (0x5)
@@ -279,9 +279,9 @@ __start:
 # CHECK-NEXT:   }
 # CHECK-NEXT:   ProgramHeader {
 # CHECK-NEXT:     Type: PT_LOAD (0x1)
-# CHECK-NEXT:     Offset: 0x20000
-# CHECK-NEXT:     VirtualAddress: 0x30000
-# CHECK-NEXT:     PhysicalAddress: 0x30000
+# CHECK-NEXT:     Offset: 0x160
+# CHECK-NEXT:     VirtualAddress: 0x30160
+# CHECK-NEXT:     PhysicalAddress: 0x30160
 # CHECK-NEXT:     FileSize: 8
 # CHECK-NEXT:     MemSize: 16
 # CHECK-NEXT:     Flags [




More information about the llvm-commits mailing list