summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp3
-rw-r--r--lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp2
-rw-r--r--lld/test/mach-o/executable-exports.yaml (renamed from lld/test/mach-o/dylib-exports.yaml)13
3 files changed, 13 insertions, 5 deletions
diff --git a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
index 30ce7739732..c29bcdd7387 100644
--- a/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp
@@ -195,6 +195,9 @@ void MachOLinkingContext::configure(HeaderFileType type, Arch arch, OS os,
_pageZeroSize = 0x1000;
}
+ // Initial base address is __PAGEZERO size.
+ _baseAddress = _pageZeroSize;
+
// Make PIE by default when targetting newer OSs.
switch (os) {
case OS::macOSX:
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
index 092ffd64c57..35ff1e8d46a 100644
--- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
+++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp
@@ -1162,7 +1162,7 @@ void Util::addExportInfo(const lld::File &atomFile, NormalizedFile &nFile) {
}
Export exprt;
exprt.name = atom->name();
- exprt.offset = _atomToAddress[atom]; // FIXME: subtract base address
+ exprt.offset = _atomToAddress[atom] - _ctx.baseAddress();
exprt.kind = EXPORT_SYMBOL_FLAGS_KIND_REGULAR;
if (atom->merge() == DefinedAtom::mergeAsWeak)
exprt.flags = EXPORT_SYMBOL_FLAGS_WEAK_DEFINITION;
diff --git a/lld/test/mach-o/dylib-exports.yaml b/lld/test/mach-o/executable-exports.yaml
index 0a00dfe1e95..b14e2d22929 100644
--- a/lld/test/mach-o/dylib-exports.yaml
+++ b/lld/test/mach-o/executable-exports.yaml
@@ -1,4 +1,4 @@
-# RUN: lld -flavor darwin -arch x86_64 -macosx_version_min 10.8 -dylib \
+# RUN: lld -flavor darwin -arch x86_64 -macosx_version_min 10.8 \
# RUN: %s %p/Inputs/libSystem.yaml -o %t && \
# RUN: llvm-objdump -exports-trie %t | FileCheck %s
#
@@ -16,7 +16,7 @@ sections:
type: S_REGULAR
attributes: [ S_ATTR_PURE_INSTRUCTIONS, S_ATTR_SOME_INSTRUCTIONS ]
address: 0x0000000000000000
- content: [ 0xC3, 0xC3, 0xC3 ]
+ content: [ 0xC3, 0xC3, 0xC3, 0xC3 ]
global-symbols:
- name: _myHidden
type: N_SECT
@@ -34,8 +34,13 @@ global-symbols:
sect: 1
desc: [ N_WEAK_DEF ]
value: 0x0000000000000002
+ - name: _main
+ type: N_SECT
+ scope: [ N_EXT ]
+ sect: 1
+ value: 0x0000000000000003
...
# CHECK-NOT: _myHidden
-# CHECK: _myRegular
-# CHECK: _myWeak [weak_def]
+# CHECK: 0x00000FFD _myRegular
+# CHECK: 0x00000FFE _myWeak [weak_def]
OpenPOWER on IntegriCloud