From: Fangrui Song Date: Wed, 28 Aug 2019 09:45:06 +0000 (+0000) Subject: [ELF][AMDGPU][SPARC] Allow PT_LOAD to have overlapping p_offset ranges on EM_AMDGPU... X-Git-Tag: llvmorg-11-init~10653 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=54a6f6839be9d7444fcfba567b3ae8e07b204a87;p=platform%2Fupstream%2Fllvm.git [ELF][AMDGPU][SPARC] Allow PT_LOAD to have overlapping p_offset ranges on EM_AMDGPU and EM_SPARCV9 llvm-svn: 370180 --- diff --git a/lld/ELF/Writer.cpp b/lld/ELF/Writer.cpp index b4ae1fb00cc0..4de22eff38e9 100644 --- a/lld/ELF/Writer.cpp +++ b/lld/ELF/Writer.cpp @@ -2224,10 +2224,9 @@ template void Writer::fixSectionAlignments() { // and non-executable segments. // // TODO Enable this technique on all targets. - bool enable = config->emachine == EM_386 || - config->emachine == EM_AARCH64 || - config->emachine == EM_ARM || config->emachine == EM_PPC || - config->emachine == EM_PPC64; + bool enable = + config->emachine != EM_HEXAGON && config->emachine != EM_MIPS && + config->emachine != EM_RISCV && config->emachine != EM_X86_64; if (!enable || (config->zSeparateCode && prev && (prev->p_flags & PF_X) != (p->p_flags & PF_X))) diff --git a/lld/test/ELF/amdgpu-relocs.s b/lld/test/ELF/amdgpu-relocs.s index 88b5c5ec270f..caee617cf85e 100644 --- a/lld/test/ELF/amdgpu-relocs.s +++ b/lld/test/ELF/amdgpu-relocs.s @@ -94,7 +94,7 @@ foo: # linker. # CHECK: Relocations [ # CHECK: .rela.dyn { -# CHECK-NEXT: R_AMDGPU_RELATIVE64 - 0x3008 +# CHECK-NEXT: R_AMDGPU_RELATIVE64 - 0x3928 # CHECK-NEXT: R_AMDGPU_ABS64 common_var0 0x0 # CHECK-NEXT: R_AMDGPU_ABS64 common_var1 0x0 # CHECK-NEXT: R_AMDGPU_ABS64 common_var2 0x0 @@ -114,16 +114,16 @@ foo: # CHECK-NEXT: } # CHECK-NEXT: ] -# NM: 0000000000003010 B common_var0 -# NM: 0000000000003410 B common_var1 -# NM: 0000000000003810 B common_var2 -# NM: 0000000000003008 d temp2 +# NM: 0000000000003930 B common_var0 +# NM: 0000000000003d30 B common_var1 +# NM: 0000000000004130 B common_var2 +# NM: 0000000000003928 d temp2 -# temp2 - foo = 0x3008-0x768 = 0x28a0 +# temp2 - foo = 0x3928-0x768 = 0x31c0 # HEX: section '.rodata': -# HEX-NEXT: 0x00000768 a0280000 00000000 +# HEX-NEXT: 0x00000768 c0310000 00000000 # common_var2+4, common_var1+8, and common_var0+12. # HEX: section 'nonalloc': -# HEX-NEXT: 0x00000000 00000000 14380000 00000000 18340000 -# HEX-NEXT: 0x00000010 00000000 1c300000 +# HEX-NEXT: 0x00000000 00000000 34410000 00000000 383d0000 +# HEX-NEXT: 0x00000010 00000000 3c390000 diff --git a/lld/test/ELF/basic-sparcv9.s b/lld/test/ELF/basic-sparcv9.s index 031ce7b1e8fd..820dba556f5a 100644 --- a/lld/test/ELF/basic-sparcv9.s +++ b/lld/test/ELF/basic-sparcv9.s @@ -26,7 +26,7 @@ _start: # CHECK-NEXT: Version: 1 # CHECK-NEXT: Entry: [[ENTRY:0x[0-9A-F]+]] # CHECK-NEXT: ProgramHeaderOffset: 0x40 -# CHECK-NEXT: SectionHeaderOffset: 0x100080 +# CHECK-NEXT: SectionHeaderOffset: 0x1A0 # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: HeaderSize: 64 @@ -59,8 +59,8 @@ _start: # CHECK-NEXT: SHF_ALLOC (0x2) # CHECK-NEXT: SHF_EXECINSTR (0x4) # CHECK-NEXT: ] -# CHECK-NEXT: Address: 0x200000 -# CHECK-NEXT: Offset: 0x100000 +# CHECK-NEXT: Address: 0x200120 +# CHECK-NEXT: Offset: 0x120 # CHECK-NEXT: Size: 12 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -76,7 +76,7 @@ _start: # CHECK-NEXT: SHF_STRINGS (0x20) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x10000C +# CHECK-NEXT: Offset: 0x12C # CHECK-NEXT: Size: 8 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -90,7 +90,7 @@ _start: # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x100018 +# CHECK-NEXT: Offset: 0x138 # CHECK-NEXT: Size: 48 # CHECK-NEXT: Link: 5 # CHECK-NEXT: Info: 1 @@ -104,7 +104,7 @@ _start: # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x100048 +# CHECK-NEXT: Offset: 0x168 # CHECK-NEXT: Size: 42 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -118,7 +118,7 @@ _start: # CHECK-NEXT: Flags [ (0x0) # CHECK-NEXT: ] # CHECK-NEXT: Address: 0x0 -# CHECK-NEXT: Offset: 0x100072 +# CHECK-NEXT: Offset: 0x192 # CHECK-NEXT: Size: 8 # CHECK-NEXT: Link: 0 # CHECK-NEXT: Info: 0 @@ -150,8 +150,8 @@ _start: # CHECK-NEXT: ProgramHeader { # CHECK-NEXT: Type: PT_PHDR (0x6) # CHECK-NEXT: Offset: 0x40 -# CHECK-NEXT: VirtualAddress: 0x100040 -# CHECK-NEXT: PhysicalAddress: 0x100040 +# CHECK-NEXT: VirtualAddress: 0x200040 +# CHECK-NEXT: PhysicalAddress: 0x200040 # CHECK-NEXT: FileSize: 224 # CHECK-NEXT: MemSize: 224 # CHECK-NEXT: Flags [ (0x4) @@ -162,8 +162,8 @@ _start: # CHECK-NEXT: ProgramHeader { # CHECK-NEXT: Type: PT_LOAD (0x1) # CHECK-NEXT: Offset: 0x0 -# CHECK-NEXT: VirtualAddress: 0x100000 -# CHECK-NEXT: PhysicalAddress: 0x100000 +# CHECK-NEXT: VirtualAddress: 0x200000 +# CHECK-NEXT: PhysicalAddress: 0x200000 # CHECK-NEXT: FileSize: 288 # CHECK-NEXT: MemSize: 288 # CHECK-NEXT: Flags [ @@ -173,9 +173,9 @@ _start: # CHECK-NEXT: } # CHECK-NEXT: ProgramHeader { # CHECK-NEXT: Type: PT_LOAD (0x1) -# CHECK-NEXT: Offset: 0x100000 -# CHECK-NEXT: VirtualAddress: 0x200000 -# CHECK-NEXT: PhysicalAddress: 0x200000 +# CHECK-NEXT: Offset: 0x120 +# CHECK-NEXT: VirtualAddress: 0x200120 +# CHECK-NEXT: PhysicalAddress: 0x200120 # CHECK-NEXT: FileSize: 12 # CHECK-NEXT: MemSize: 12 # CHECK-NEXT: Flags [ (0x5)