REDO_PREBINDING(1)

πŸ“¦ version 1010.6, in nixpkgs unstable

✨ REDO_PREBINDING(1) ✨

okay so bestie, welcome to the redo_prebinding manual page πŸ’… this is the General Commands Manual entry and honestly? it's giving "vintage macOS system tool that still slays." let's get into it πŸŽ€


🌸 NAME 🌸

redo_prebinding β€” redo the prebinding of an executable or dynamic library. no cap, that's the whole vibe. ✨


πŸ¦‹ SYNOPSIS πŸ¦‹

redo_prebinding [-c | -p | -d] [-i] [-z] [-u] [-r rootdir] [-e
executable_path] [-seg_addr_table table_file_name]
[-seg_addr_table_filename pathname] [-seg1addr address] [-o output_file]
[-s] input_file

like, that's a lot of flags but don't panic, we're gonna go through every single one, fr fr 🫢


πŸ’– DESCRIPTION πŸ’–

so Redo_prebinding is used to redo the prebinding of an executable or dynamic library when one of the dependent dynamic libraries changes. think of it like: your library bestie got a glow-up, and now you need to update your whole friend group chat accordingly. 😭

the input file β€” executable or dynamic library β€” must have initially been prebound for this program to redo the prebinding. and also all depended libraries must have their prebinding up to date. so when redoing the prebinding for libraries, they must be done in dependency order. (yes, order matters. main character energy requires structure, periodt. πŸ‘‘)

also, when building executables or dynamic libraries that are to be prebound (with the -prebind options to ld(1) or libtool(1)), the dependent libraries must have their prebinding up to date or the result will not be prebound. like, it simply won't. no notes. πŸ’€

the options allow for different types of checking for use in shell scripts. important: only one of -c, -p or -d can be used at a time. pick one, bestie, you can't have all three. πŸ™ˆ

and if redo_prebinding redoes the prebinding on an input file, it will run /usr/bin/objcunique if it exists on the result. cute little bonus step, iykyk. ✨


πŸ’… OPTIONS πŸ’…

  • -c β€” only check if the file needs to have it's prebinding redone and return status. a 0 exit means the file's prebinding is up to date, 1 means it needs to be redone and 2 means it could not be checked for reasons like a dependent library is missing (an error message is printed in these cases). lowkey the vibe check of this whole tool. πŸ”₯
  • -p β€” check only for prebound files and return status. an exit status of 1 means the file is a Mach-O that could have been prebound and is not otherwise the exit status is 0. iconic binary behavior. ⭐
  • -d β€” check only for dynamic shared library files and return status. an exit status of 0 means the file is a dynamic shared library, 1 means the file is not, 2 means there is some mix in the architectures. messy architecture energy tbh. 😭
  • -i β€” ignore non-prebound files (useful when running on all types of files). like a "not my problem" filter. πŸ™ˆ
  • -z β€” zero out the prebind check sum in the output if it has one. resetting the receipts. 🧚
  • -u β€” unprebind, rather than reprebind (-c, -p, -d, -e ignored). resets or removes prebinding-specific information from the input file. as unprebinding is intended to produce a canonical Mach-O binary, bundles and non-prebound executables and dylibs are acceptable as input. for these files, the unprebind operation will zero library time stamps and version numbers and zero entries in the two-level hints table. this one's doing the most and we respect it. πŸ‘‘
  • -e executable_path β€” replace any dependent library's "@executable_path" prefix with the executable_path argument. path-swapping realness. 🫢
  • -seg_addr_table table_file_name β€” The -seg_addr_table option is used when the input a dynamic library and if specified the table entry for the install_name of the dynamic library is used for checking and the address to relocate the library to as it prefered address. (yes, that's the exact wording, and yes it's a lil grammatically chaotic β€” we don't fix, we just report πŸ’€)
  • -seg_addr_table_filename pathname β€” use pathname instead of the install name of the library for matching an entry in the segment address table. matching but make it specific. πŸŽ€
  • -seg1addr address β€” move the input library to base address address. this option does not apply when -u, -seg_addr_table or -seg_addr_table_filename are specified. read the fine print bestie, it matters. ⭐
  • -r rootdir β€” prepend the rootdir argument to all dependent libraries. path prefix era. 🌸
  • -o output_file β€” write the updated file into output_file rather than back into the input file. non-destructive behavior, we love to see it. πŸ’–
  • -s β€” write the updated file to standard output. let it shine, let it be seen. 🌈

πŸ”₯ DIAGNOSTICS πŸ”₯

with no -c, -p or -d an exit status of 0 means success and 2 means it could not be done for reasons like a dependent library is missing (an error message is printed in these cases). and exit of 3 is for the specific case when the dependent libraries are out of date with respect to each other. drama in the dependency tree, smh. 😭

bestie. pay attention to those exit codes. 0 = slay, 2 = couldn't do it, 3 = your libraries are fighting. πŸ’€

and that's the whole page, bestie!! πŸŽ€<br> written by Apple Computer, Inc., dated March 29, 2004 β€” vintage but still valid, we stan a retro icon πŸ‘‘πŸ’–<br> REDO_PREBINDING(1) out. periodt. πŸ’…βœ¨

πŸ“¦ where this page comes from