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.