diff options
author | Jean-Daniel Dupas <devlists@shadowlab.org> | 2014-12-20 09:22:56 +0000 |
---|---|---|
committer | Jean-Daniel Dupas <devlists@shadowlab.org> | 2014-12-20 09:22:56 +0000 |
commit | edefcccd46355a27e802bdd72314d867433cbb04 (patch) | |
tree | 7938dd682099e0c455d4b4c3208c27659168ee5f /lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp | |
parent | 968a21de24d5deedaa2247ded2c665aa197f2927 (diff) | |
download | bcm5719-llvm-edefcccd46355a27e802bdd72314d867433cbb04.tar.gz bcm5719-llvm-edefcccd46355a27e802bdd72314d867433cbb04.zip |
[macho] Minor install_name fixes
Summary:
Fix the binary file reader to properly read dyld version info.
Update the install_name test case to properly test the binary reader. We can't use '-print_atoms' as the output format is 'native' yaml and it does not contains the dyld current and compatibility versions.
Also change the timestamp value of LD_ID_DYLD to match the one generated by ld64.
The dynamic linker (dyld) used to expects different values for timestamp in LD_ID_DYLD and LD_LOAD_DYLD for prebound images. While prebinding is deprecated, we should probably keep it safe and match ld64.
Reviewers: kledzik
Subscribers: llvm-commits
Projects: #lld
Differential Revision: http://reviews.llvm.org/D6736
llvm-svn: 224681
Diffstat (limited to 'lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp')
-rw-r--r-- | lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp index a3542c4fc50..be7acf9d4d6 100644 --- a/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp +++ b/lld/lib/ReaderWriter/MachO/MachONormalizedFileBinaryWriter.cpp @@ -741,7 +741,8 @@ std::error_code MachOFileLayout::writeLoadCommands() { dc->cmd = LC_ID_DYLIB; dc->cmdsize = size; dc->dylib.name = sizeof(dylib_command); // offset - dc->dylib.timestamp = 2; + // needs to be some constant value different than the one in LC_LOAD_DYLIB + dc->dylib.timestamp = 1; dc->dylib.current_version = _file.currentVersion; dc->dylib.compatibility_version = _file.compatVersion; if (_swap) @@ -841,6 +842,7 @@ std::error_code MachOFileLayout::writeLoadCommands() { dc->cmd = dep.kind; dc->cmdsize = size; dc->dylib.name = sizeof(dylib_command); // offset + // needs to be some constant value different than the one in LC_ID_DYLIB dc->dylib.timestamp = 2; dc->dylib.current_version = dep.currentVersion; dc->dylib.compatibility_version = dep.compatVersion; |