[llvm] r245938 - [MachO] Introduce MinVersion API.

Davide Italiano via llvm-commits llvm-commits at lists.llvm.org
Tue Aug 25 08:02:24 PDT 2015


Author: davide
Date: Tue Aug 25 10:02:23 2015
New Revision: 245938

URL: http://llvm.org/viewvc/llvm-project?rev=245938&view=rev
Log:
[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

Modified:
    llvm/trunk/include/llvm/Object/MachO.h
    llvm/trunk/lib/Object/MachOObjectFile.cpp

Modified: llvm/trunk/include/llvm/Object/MachO.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Object/MachO.h?rev=245938&r1=245937&r2=245938&view=diff
==============================================================================
--- llvm/trunk/include/llvm/Object/MachO.h (original)
+++ llvm/trunk/include/llvm/Object/MachO.h Tue Aug 25 10:02:23 2015
@@ -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

Modified: llvm/trunk/lib/Object/MachOObjectFile.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/MachOObjectFile.cpp?rev=245938&r1=245937&r2=245938&view=diff
==============================================================================
--- llvm/trunk/lib/Object/MachOObjectFile.cpp (original)
+++ llvm/trunk/lib/Object/MachOObjectFile.cpp Tue Aug 25 10:02:23 2015
@@ -2001,6 +2001,24 @@ MachOObjectFile::getVersionMinLoadComman
   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);




More information about the llvm-commits mailing list