Roll back r249726 and r249723 because they broke buildbots.

llvm-svn: 249728
This commit is contained in:
Rui Ueyama 2015-10-08 20:00:02 +00:00
parent e4b1765a0f
commit 7114f0597b
9 changed files with 57 additions and 64 deletions

View File

@ -36,7 +36,6 @@ X86TargetInfo::X86TargetInfo() {
PCRelReloc = R_386_PC32;
GotReloc = R_386_GLOB_DAT;
GotRefReloc = R_386_GOT32;
VAStart = 0x10000;
}
void X86TargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
@ -92,14 +91,6 @@ X86_64TargetInfo::X86_64TargetInfo() {
GotReloc = R_X86_64_GLOB_DAT;
GotRefReloc = R_X86_64_PC32;
RelativeReloc = R_X86_64_RELATIVE;
// On freebsd x86_64 the first page cannot be mmaped.
// On linux that is controled by vm.mmap_min_addr. At least on some x86_64
// installs that is 65536, so the first 15 pages cannot be used.
// Given that, the smallest value that can be used in here is 0x10000.
// If using 2MB pages, the smallest page aligned address that works is
// 0x200000, but it looks like every OS uses 4k pages for executables.
VAStart = 0x10000;
}
void X86_64TargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
@ -201,7 +192,6 @@ void X86_64TargetInfo::relocateOne(uint8_t *Buf, const void *RelP,
PPC64TargetInfo::PPC64TargetInfo() {
// PCRelReloc = FIXME
// GotReloc = FIXME
VAStart = 0x10000000;
}
void PPC64TargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
uint64_t PltEntryAddr) const {}
@ -235,7 +225,6 @@ void PPC64TargetInfo::relocateOne(uint8_t *Buf, const void *RelP, uint32_t Type,
PPCTargetInfo::PPCTargetInfo() {
// PCRelReloc = FIXME
// GotReloc = FIXME
VAStart = 0x10000000;
}
void PPCTargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
uint64_t PltEntryAddr) const {}
@ -252,7 +241,6 @@ void PPCTargetInfo::relocateOne(uint8_t *Buf, const void *RelP, uint32_t Type,
ARMTargetInfo::ARMTargetInfo() {
// PCRelReloc = FIXME
// GotReloc = FIXME
VAStart = 0x8000;
}
void ARMTargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
uint64_t PltEntryAddr) const {}
@ -269,7 +257,6 @@ void ARMTargetInfo::relocateOne(uint8_t *Buf, const void *RelP, uint32_t Type,
AArch64TargetInfo::AArch64TargetInfo() {
// PCRelReloc = FIXME
// GotReloc = FIXME
VAStart = 0x400000;
}
void AArch64TargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,
uint64_t PltEntryAddr) const {}
@ -349,7 +336,6 @@ MipsTargetInfo::MipsTargetInfo() {
// PCRelReloc = FIXME
// GotReloc = FIXME
DefaultEntry = "__start";
VAStart = 0x400000;
}
void MipsTargetInfo::writePltEntry(uint8_t *Buf, uint64_t GotEntryAddr,

View File

@ -21,7 +21,6 @@ class SymbolBody;
class TargetInfo {
public:
llvm::StringRef getDefaultEntry() const { return DefaultEntry; }
uint64_t getVAStart() const { return VAStart; }
unsigned getPCRelReloc() const { return PCRelReloc; }
unsigned getGotReloc() const { return GotReloc; }
unsigned getGotRefReloc() const { return GotRefReloc; }
@ -39,7 +38,6 @@ public:
virtual ~TargetInfo();
protected:
uint64_t VAStart;
unsigned PCRelReloc;
unsigned GotRefReloc;
unsigned GotReloc;

View File

@ -24,6 +24,15 @@ using namespace lld::elf2;
static const int PageSize = 4096;
// On freebsd x86_64 the first page cannot be mmaped.
// On linux that is controled by vm.mmap_min_addr. At least on some x86_64
// installs that is 65536, so the first 15 pages cannot be used.
// Given that, the smallest value that can be used in here is 0x10000.
// If using 2MB pages, the smallest page aligned address that works is
// 0x200000, but it looks like every OS uses 4k pages for executables.
// FIXME: This is architecture and OS dependent.
static const int VAStart = 0x10000;
namespace {
static uint32_t toPHDRFlags(uint64_t Flags) {
@ -93,7 +102,7 @@ private:
return !Symtab.getSharedFiles().empty() || Config->Shared;
}
bool needsDynamicSections() const { return isOutputDynamic(); }
unsigned getVAStart() const { return Config->Shared ? 0 : Target->getVAStart(); }
unsigned getVAStart() const { return Config->Shared ? 0 : VAStart; }
std::unique_ptr<llvm::FileOutputBuffer> Buffer;

View File

@ -29,7 +29,7 @@ mystr:
#
# CHECK: Disassembly of section .R_AARCH64_ADR_PREL_PG_H121:
# CHECK-NEXT: $x.2:
# CHECK-NEXT: 401012: 01 00 00 90 adrp x1, #0
# CHECK-NEXT: 11012: 01 00 00 90 adrp x1, #0
.section .R_AARCH64_ADD_ABS_LO12_NC,"ax",@progbits
add x0, x0, :lo12:.L.str
@ -43,4 +43,4 @@ mystr:
#
# CHECK: Disassembly of section .R_AARCH64_ADD_ABS_LO12_NC:
# CHECK-NEXT: $x.4:
# CHECK-NEXT: 40101b: 00 7c 00 91 add x0, x0, #31
# CHECK-NEXT: 1101b: 00 7c 00 91 add x0, x0, #31

View File

@ -59,7 +59,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_EXECINSTR (0x4)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x401000
# CHECK-NEXT: Address: 0x11000
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: Size: 12
# CHECK-NEXT: Link: 0
@ -75,7 +75,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x40100C
# CHECK-NEXT: Address: 0x1100C
# CHECK-NEXT: Offset: 0x100C
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -91,7 +91,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x40100C
# CHECK-NEXT: Address: 0x1100C
# CHECK-NEXT: Offset: 0x100C
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -140,7 +140,7 @@ _start:
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: $x.0 (41)
# CHECK-NEXT: Value: 0x401000
# CHECK-NEXT: Value: 0x11000
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Local (0x0)
# CHECK-NEXT: Type: None (0x0)
@ -161,8 +161,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x400000
# CHECK-NEXT: PhysicalAddress: 0x400000
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
# CHECK-NEXT: FileSize: 176
# CHECK-NEXT: MemSize: 176
# CHECK-NEXT: Flags [
@ -173,8 +173,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: VirtualAddress: 0x401000
# CHECK-NEXT: PhysicalAddress: 0x401000
# CHECK-NEXT: VirtualAddress: 0x11000
# CHECK-NEXT: PhysicalAddress: 0x11000
# CHECK-NEXT: FileSize: 12
# CHECK-NEXT: MemSize: 12
# CHECK-NEXT: Flags [ (0x5)

View File

@ -25,7 +25,7 @@ __start:
# CHECK-NEXT: Type: Executable (0x2)
# CHECK-NEXT: Machine: EM_MIPS (0x8)
# CHECK-NEXT: Version: 1
# CHECK-NEXT: Entry: 0x402000
# CHECK-NEXT: Entry: 0x12000
# CHECK-NEXT: ProgramHeaderOffset: 0x34
# CHECK-NEXT: SectionHeaderOffset: 0x2074
# CHECK-NEXT: Flags [ (0x0)
@ -59,7 +59,7 @@ __start:
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x401000
# CHECK-NEXT: Address: 0x11000
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: Size: 24
# CHECK-NEXT: Link: 0
@ -74,7 +74,7 @@ __start:
# CHECK-NEXT: Flags [ (0x2)
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x401018
# CHECK-NEXT: Address: 0x11018
# CHECK-NEXT: Offset: 0x1018
# CHECK-NEXT: Size: 24
# CHECK-NEXT: Link: 0
@ -90,7 +90,7 @@ __start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_EXECINSTR (0x4)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x402000
# CHECK-NEXT: Address: 0x12000
# CHECK-NEXT: Offset: 0x2000
# CHECK-NEXT: Size: 12
# CHECK-NEXT: Link: 0
@ -106,7 +106,7 @@ __start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x402010
# CHECK-NEXT: Address: 0x12010
# CHECK-NEXT: Offset: 0x2010
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -122,7 +122,7 @@ __start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x402010
# CHECK-NEXT: Address: 0x12010
# CHECK-NEXT: Offset: 0x2010
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -171,7 +171,7 @@ __start:
# CHECK-NEXT: }
# CHECK-NEXT: Symbol {
# CHECK-NEXT: Name: __start (7)
# CHECK-NEXT: Value: 0x402000
# CHECK-NEXT: Value: 0x12000
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Binding: Global (0x1)
# CHECK-NEXT: Type: None (0x0)
@ -183,8 +183,8 @@ __start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x400000
# CHECK-NEXT: PhysicalAddress: 0x400000
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
# CHECK-NEXT: FileSize: 4144
# CHECK-NEXT: MemSize: 4144
# CHECK-NEXT: Flags [ (0x4)
@ -195,8 +195,8 @@ __start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x2000
# CHECK-NEXT: VirtualAddress: 0x402000
# CHECK-NEXT: PhysicalAddress: 0x402000
# CHECK-NEXT: VirtualAddress: 0x12000
# CHECK-NEXT: PhysicalAddress: 0x12000
# CHECK-NEXT: FileSize: 16
# CHECK-NEXT: MemSize: 16
# CHECK-NEXT: Flags [ (0x5)

View File

@ -23,7 +23,7 @@ _start:
# CHECK-NEXT: Type: Executable (0x2)
# CHECK-NEXT: Machine: EM_PPC (0x14)
# CHECK-NEXT: Version: 1
# CHECK-NEXT: Entry: 0x10001000
# CHECK-NEXT: Entry: 0x11000
# CHECK-NEXT: ProgramHeaderOffset: 0x34
# CHECK-NEXT: SectionHeaderOffset: 0x1058
# CHECK-NEXT: Flags [ (0x0)
@ -58,7 +58,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_EXECINSTR (0x4)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x10001000
# CHECK-NEXT: Address: 0x11000
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: Size: 12
# CHECK-NEXT: Link: 0
@ -74,7 +74,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x1000100C
# CHECK-NEXT: Address: 0x1100C
# CHECK-NEXT: Offset: 0x100C
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -90,7 +90,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x1000100C
# CHECK-NEXT: Address: 0x1100C
# CHECK-NEXT: Offset: 0x100C
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -131,8 +131,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x10000000
# CHECK-NEXT: PhysicalAddress: 0x10000000
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
# CHECK-NEXT: FileSize: 116
# CHECK-NEXT: MemSize: 116
# CHECK-NEXT: Flags [
@ -143,8 +143,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: VirtualAddress: 0x10001000
# CHECK-NEXT: PhysicalAddress: 0x10001000
# CHECK-NEXT: VirtualAddress: 0x11000
# CHECK-NEXT: PhysicalAddress: 0x11000
# CHECK-NEXT: FileSize: 12
# CHECK-NEXT: MemSize: 12
# CHECK-NEXT: Flags [ (0x5)

View File

@ -28,7 +28,7 @@ _start:
# CHECK-NEXT: Type: Executable (0x2)
# CHECK-NEXT: Machine: EM_PPC64 (0x15)
# CHECK-NEXT: Version: 1
# CHECK-NEXT: Entry: 0x10002000
# CHECK-NEXT: Entry: 0x12000
# CHECK-NEXT: ProgramHeaderOffset: 0x40
# CHECK-NEXT: SectionHeaderOffset: 0x2078
# CHECK-NEXT: Flags [ (0x0)
@ -65,7 +65,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_EXECINSTR (0x4)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x10001000
# CHECK-NEXT: Address: 0x11000
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: Size: 12
# CHECK-NEXT: Link: 0
@ -83,7 +83,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x1000100C
# CHECK-NEXT: Address: 0x1100C
# CHECK-NEXT: Offset: 0x100C
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -101,7 +101,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x10002000
# CHECK-NEXT: Address: 0x12000
# CHECK-NEXT: Offset: 0x2000
# CHECK-NEXT: Size: 24
# CHECK-NEXT: Link: 0
@ -109,7 +109,7 @@ _start:
# CHECK-NEXT: AddressAlignment: 1
# CHECK-NEXT: EntrySize: 0
# CHECK-NEXT: SectionData (
# CHECK-NEXT: 0000: 00000000 10001000 00000000 00000000 |................|
# CHECK-NEXT: 0000: 00000000 00011000 00000000 00000000 |................|
# CHECK-NEXT: 0010: 00000000 00000000 |........|
# CHECK-NEXT: )
# CHECK-NEXT: }
@ -121,7 +121,7 @@ _start:
# CHECK-NEXT: SHF_ALLOC (0x2)
# CHECK-NEXT: SHF_WRITE (0x1)
# CHECK-NEXT: ]
# CHECK-NEXT: Address: 0x10002018
# CHECK-NEXT: Address: 0x12018
# CHECK-NEXT: Offset: 0x2018
# CHECK-NEXT: Size: 0
# CHECK-NEXT: Link: 0
@ -166,8 +166,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x0
# CHECK-NEXT: VirtualAddress: 0x10000000
# CHECK-NEXT: PhysicalAddress: 0x10000000
# CHECK-NEXT: VirtualAddress: 0x10000
# CHECK-NEXT: PhysicalAddress: 0x10000
# CHECK-NEXT: FileSize: 232
# CHECK-NEXT: MemSize: 232
# CHECK-NEXT: Flags [
@ -178,8 +178,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x1000
# CHECK-NEXT: VirtualAddress: 0x10001000
# CHECK-NEXT: PhysicalAddress: 0x10001000
# CHECK-NEXT: VirtualAddress: 0x11000
# CHECK-NEXT: PhysicalAddress: 0x11000
# CHECK-NEXT: FileSize: 12
# CHECK-NEXT: MemSize: 12
# CHECK-NEXT: Flags [ (0x5)
@ -191,8 +191,8 @@ _start:
# CHECK-NEXT: ProgramHeader {
# CHECK-NEXT: Type: PT_LOAD (0x1)
# CHECK-NEXT: Offset: 0x2000
# CHECK-NEXT: VirtualAddress: 0x10002000
# CHECK-NEXT: PhysicalAddress: 0x10002000
# CHECK-NEXT: VirtualAddress: 0x12000
# CHECK-NEXT: PhysicalAddress: 0x12000
# CHECK-NEXT: FileSize: 24
# CHECK-NEXT: MemSize: 24
# CHECK-NEXT: Flags [ (0x6)

View File

@ -78,7 +78,7 @@
# PPC64-NEXT: Type: Executable (0x2)
# PPC64-NEXT: Machine: EM_PPC64 (0x15)
# PPC64-NEXT: Version: 1
# PPC64-NEXT: Entry: 0x10001000
# PPC64-NEXT: Entry: 0x11000
# PPC64-NEXT: ProgramHeaderOffset: 0x40
# PPC64-NEXT: SectionHeaderOffset: 0x1060
# PPC64-NEXT: Flags [ (0x0)
@ -109,7 +109,7 @@
# PPC-NEXT: Type: Executable (0x2)
# PPC-NEXT: Machine: EM_PPC (0x14)
# PPC-NEXT: Version: 1
# PPC-NEXT: Entry: 0x10001000
# PPC-NEXT: Entry: 0x11000
# PPC-NEXT: ProgramHeaderOffset: 0x34
# PPC-NEXT: SectionHeaderOffset: 0x104C
# PPC-NEXT: Flags [ (0x0)
@ -140,9 +140,9 @@
# MIPS-NEXT: Type: Executable (0x2)
# MIPS-NEXT: Machine: EM_MIPS (0x8)
# MIPS-NEXT: Version: 1
# MIPS-NEXT: Entry: 0x410030
# MIPS-NEXT: Entry: 0x11030
# MIPS-NEXT: ProgramHeaderOffset: 0x34
# MIPS-NEXT: SectionHeaderOffset: 0x10094
# MIPS-NEXT: SectionHeaderOffset: 0x1094
# MIPS-NEXT: Flags [ (0x0)
# MIPS-NEXT: ]
@ -164,9 +164,9 @@
# MIPSEL-NEXT: Type: Executable (0x2)
# MIPSEL-NEXT: Machine: EM_MIPS (0x8)
# MIPSEL-NEXT: Version: 1
# MIPSEL-NEXT: Entry: 0x410030
# MIPSEL-NEXT: Entry: 0x11030
# MIPSEL-NEXT: ProgramHeaderOffset: 0x34
# MIPSEL-NEXT: SectionHeaderOffset: 0x10094
# MIPSEL-NEXT: SectionHeaderOffset: 0x1094
# MIPSEL-NEXT: Flags [ (0x0)
# MIPSEL-NEXT: ]