| Name: Apple cctools |
| Short Name: cctools |
| URL: https://opensource.apple.com/source/cctools/ |
| URL: https://opensource.apple.com/tarballs/cctools/ |
| Version: 855 (from Xcode 5.1) |
| License: APSL 2.0 |
| License File: cctools/APPLE_LICENSE |
| Security Critical: no |
| |
| Description: |
| cctools contains portions of Apple’s compiler toolchain, including common tools |
| like ar, as, nm, strings, and strip, and platform-specific tools like lipo and |
| otool. It also contains support libraries such as libmacho, which contains |
| interfaces for dealing with Mach-O images. |
| |
| libmacho is available on macOS as a runtime library that is part of libSystem, |
| but versions of libmacho included in operating system versions prior to Mac OS X |
| 10.7 did not include the getsectiondata() and getsegmentdata() functions. This |
| library is present here to provide implementations of these functions for |
| systems that do not have them. |
| |
| Crashpad code is not expected to use this library directly. It should use the |
| getsectiondata() and getsegmentdata() wrappers in compat, which will use |
| system-provided implementations if present at runtime, and will otherwise fall |
| back to the implementations in this library. |
| |
| Local Modifications: |
| - Only cctools/APPLE_LICENSE, cctools/libmacho/getsecbyname.c, and |
| cctools/include/mach-o/getsect.h are included. |
| - getsecbyname.c and getsect.h have been trimmed to remove everything other |
| than the getsectiondata() and getsegmentdata() functions. The #include guards |
| in getsect.h have been made unique. |
| - getsectiondata() is renamed to crashpad_getsectiondata(), and |
| getsegmentdata() is renamed to crashpad_getsegmentdata(). |
| - These functions are only declared and defined if the deployment target is |
| older than 10.7. This library is not needed otherwise, because in that case, |
| the system always provides implementations in runtime libraries. |
| - Originally, each of these two functions were implemented twice: once for |
| 32-bit code and once for 64-bit code. Aside from the types and constants |
| used, the two implementations were completely identical. This has been |
| simplified to have a shared implementation that relies on local typedefs and |
| constants being defined properly. This change was only made in |
| getsecbyname.c. getsect.h was not changed to avoid leaking new definitions |
| beyond this header. |