[MachO] Introduce MinVersion API.

While introducing support for MinVersionLoadCommand in llvm-readobj I noticed there's
no API to extract Major/Minor/Update components conveniently. Currently consumers
do the bit twiddling on their own, but this will change from now on.

I'll convert llvm-objdump (and llvm-readobj) in a later commit.

Differential Revision:	 http://reviews.llvm.org/D12282
Reviewed by:	rafael

llvm-svn: 245938
This commit is contained in:
Davide Italiano 2015-08-25 15:02:23 +00:00
parent 1a3320e463
commit 933e230738
2 changed files with 24 additions and 0 deletions

View File

@ -344,6 +344,12 @@ public:
getLinkerOptionLoadCommand(const LoadCommandInfo &L) const;
MachO::version_min_command
getVersionMinLoadCommand(const LoadCommandInfo &L) const;
static uint32_t
getVersionMinMajor(MachO::version_min_command &C, bool SDK);
static uint32_t
getVersionMinMinor(MachO::version_min_command &C, bool SDK);
static uint32_t
getVersionMinUpdate(MachO::version_min_command &C, bool SDK);
MachO::dylib_command
getDylibIDLoadCommand(const LoadCommandInfo &L) const;
MachO::dyld_info_command

View File

@ -2001,6 +2001,24 @@ MachOObjectFile::getVersionMinLoadCommand(const LoadCommandInfo &L) const {
return getStruct<MachO::version_min_command>(this, L.Ptr);
}
uint32_t
MachOObjectFile::getVersionMinMajor(MachO::version_min_command &C, bool SDK) {
uint32_t VersionOrSDK = (SDK) ? C.sdk : C.version;
return (VersionOrSDK >> 16) & 0xffff;
}
uint32_t
MachOObjectFile::getVersionMinMinor(MachO::version_min_command &C, bool SDK) {
uint32_t VersionOrSDK = (SDK) ? C.sdk : C.version;
return (VersionOrSDK >> 8) & 0xff;
}
uint32_t
MachOObjectFile::getVersionMinUpdate(MachO::version_min_command &C, bool SDK) {
uint32_t VersionOrSDK = (SDK) ? C.sdk : C.version;
return VersionOrSDK & 0xff;
}
MachO::dylib_command
MachOObjectFile::getDylibIDLoadCommand(const LoadCommandInfo &L) const {
return getStruct<MachO::dylib_command>(this, L.Ptr);