CHECKSYMS(1)
okay so bestie, we're in the General Commands Manual and this is CHECKSYMS(1) β buckle up, we're doing Mach-O convention checks β¨
πΈ NAME πΈ
checksyms β check a Mach-O production binary for proper conventions π
π¦ SYNOPSIS π¦
Literally this, exactly:
checksyms [-r] [-d] [-t] [-b] [-v] [-] [-arch arch_flag] [-dylib_table
filename] [-seg_addr_table filename] [-seg_addr_table_filename pathname]
file [...]
π DESCRIPTION π
So checksyms performs checks on a Mach-O production binary to see if it follows the proper conventions. If the binary follows the conventions, or is not a binary at all, checksyms(1) exits with zero status. A non-zero exit status means the binary does not follow the conventions for a production binary, no cap π
The conventions include:
- proper stripping of symbols for the file type (and whether it's using the dynamic linker)
- if the file is a dynamic library, it checks for the preferred linked address
- setting of compatibility and current versions
- proper prebinding and
objcuniqueif it uses the dynamic linker - proper code generation if it's a dynamic binary, so that there are no relocation entries in read-only sections
Some or all of the following options may be specified, bestie:
-rβ the binary is expected to do runtime loading of bundles and is allowed to have static symbols. This helps debug bundles using the production binary so that back traces in the debugger show symbol names for static routines. This is the default for dynamic libraries but not the default for executables.-dβ print the detail of why the binary fails the checks.-vβ print a single string token for each of the checks the binary fails. This is used by the verification tools to allow exceptions to specific checks.-tβ allow all symbols except debugging symbols (those created by the compiler's-goption).-bβ check the binaries that use the dynamic linker to see that they do not have relocation entries in read-only sections, are prebound and hadobjcuniquerun on them. This is now the default.-β all of the arguments following this flag are treated as filenames of binaries to check.-arch arch_typeβ specifies the architecture, arch_type, in the file to check. More than one-arch arch_typecan be specified. The default is-arch allwhich checks all architectures in the file. Seearch(3)for the currently known arch_types.-dylib_table filenameβ this option has been removed. In previous versions ofchecksymsit specifies the filename of the table of dynamic libraries and their addresses. If not specified the default is~rc/Data/DylibTable. The format of the table is lines of a dynamic library name and an address in hex separated by spaces and/or tabs.-seg_addr_table filenameβ this option has been removed. In previous versions ofchecksymsit specifies the filename of the segment address table of dynamic library install names and their addresses. The format of this table is lines of two forms. The entries in the table are lines containing either a single hex address and an install name or two hex addresses and an install name. In the first form the single hex address is used for "flat" libraries and is the-seg1addr. In the second form is used for "split" libraries and the first address is the-segs_read_only_addraddress and the second address is the-segs_read_write_addraddress. If the-seg_addr_tableoption is specified this is used instead of the table specified with the-dylib_tableoption. If the environment variableLD_SEG_ADDR_TABLEis set it is also used instead of the table specified with the-dylib_tableoption.-seg_addr_table_filename pathnameβ this option has been removed. In previous versions it instructschecksymsto use pathname instead of the install name of the library for matching an entry in the segment address table.
mwah π β Apple Computer, Inc., February 28, 2019, CHECKSYMS(1) π«Ά
π¦ where this page comes from
- nixpkgs unstable: cctools 1010.6
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms