diff options
Diffstat (limited to 'devel/llvm60/files/lld/patch-head-r337282.diff')
-rw-r--r-- | devel/llvm60/files/lld/patch-head-r337282.diff | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/devel/llvm60/files/lld/patch-head-r337282.diff b/devel/llvm60/files/lld/patch-head-r337282.diff new file mode 100644 index 000000000000..1e046d6e2b17 --- /dev/null +++ b/devel/llvm60/files/lld/patch-head-r337282.diff @@ -0,0 +1,39 @@ +r337282 | alc | 2018-08-04 04:30:51 +0200 (Sat, 04 Aug 2018) | 7 lines + +Set the default image base on arm64 and i386 to a superpage-aligned +address. + +Reviewed by: emaste, markj +Discussed with: dim +Differential Revision: https://reviews.freebsd.org/D16385 + +Index: tools/lld/ELF/Arch/AArch64.cpp +=================================================================== +--- tools/lld/ELF/Arch/AArch64.cpp (revision 337281) ++++ tools/lld/ELF/Arch/AArch64.cpp (revision 337282) +@@ -66,6 +66,10 @@ AArch64::AArch64() { + PltHeaderSize = 32; + DefaultMaxPageSize = 65536; + ++ // Align to the 2 MiB page size (known as a superpage or huge page). ++ // FreeBSD automatically promotes 2 MiB-aligned allocations. ++ DefaultImageBase = 0x200000; ++ + // It doesn't seem to be documented anywhere, but tls on aarch64 uses variant + // 1 of the tls structures and the tcb size is 16. + TcbSize = 16; +Index: tools/lld/ELF/Arch/X86.cpp +=================================================================== +--- tools/lld/ELF/Arch/X86.cpp (revision 337281) ++++ tools/lld/ELF/Arch/X86.cpp (revision 337282) +@@ -61,6 +61,10 @@ X86::X86() { + PltHeaderSize = 16; + TlsGdRelaxSkip = 2; + TrapInstr = 0xcccccccc; // 0xcc = INT3 ++ ++ // Align to the non-PAE large page size (known as a superpage or huge page). ++ // FreeBSD automatically promotes large, superpage-aligned allocations. ++ DefaultImageBase = 0x400000; + } + + static bool hasBaseReg(uint8_t ModRM) { return (ModRM & 0xc7) != 0x5; } |