diff options
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/MachOLinkingContext.cpp | 3 | ||||
| -rw-r--r-- | lld/lib/ReaderWriter/MachO/MachONormalizedFileFromAtoms.cpp | 2 | ||||
| -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] |

