redo_prebinding man page on OpenDarwin

Man page or keyword search:  
man Server   3202 pages
apropos Keyword Search (all sections)
Output format
OpenDarwin logo
[printable version]

REDO_PREBINDING(3)					    REDO_PREBINDING(3)

NAME
       redo_prebinding library functions

SYNOPSIS
       #include <mach-o/redo_prebinding.h>
       extern char ** dependent_libs(
	    const char *file_name,
	    const char *program_name,
	    char **error_message);
       extern char * install_name(
	    const char *file_name,
	    const char *program_name,
	    char **error_message);
       extern enum redo_prebinding_retval redo_prebinding(
	    const char *file_name,
	    const char *executable_path,
	    const char *root_dir,
	    const char *output_file,
	    const char *program_name,
	    char **error_message,
	    unsigned long slide_to_address,
	    int only_if_needed,
	    int zero_out_prebind_checksum,
	    cpu_type_t allow_missing_architectures,
	    unsigned long *throttle);
       extern enum needs_redo_prebinding_retval needs_redo_prebinding(
	    const char *file_name,
	    const char *executable_path,
	    const char *root_dir,
	    const char *program_name,
	    char **error_message,
	    unsigned long expected_address,
	    cpu_type_t allow_missing_architectures);
       extern enum object_file_type_retval object_file_type(
	    const char *file_name,
	    const char *program_name,
	    char **error_message);
       extern int get_prebind_cksums(
	    const char *file_name,
	    struct prebind_cksum_arch **cksums,
	    unsigned long *ncksums,
	    const char *program_name,
	    char **error_message);

DESCRIPTION
       These functions are intended for use by update_prebinding(1) and Mac OS
       X Build and Integration tools.

       For  all	 of  these  functions  in  the	parameters  program_name   and
       error_message  are  used	 the  same.  For unrecoverable resource errors
       like being unable to allocate memory each function prints a message  to
       stderr  precede	with  program_name  then  calls exit(2) with the value
       EXIT_FAILURE.  If a function is unsuccessful and if error_message  pass
       to it is not NULL it is set to a malloc(3)'ed buffer with a NULL termi‐
       nated string with the error  message.   For  all	 functions  when  they
       return they release all resources (memory, open file descriptors, etc).

       The file_name parameter for these functions may be of the form foo(bar)
       which is NOT interpreted as an archive name and a member name  in  that
       archive.	 As these functions deal with prebinding and prebound binaries
       ready for execution can't be in archives.

       If the executable_path parameter for these functions is not NULL it  is
       used  for  any  dependent  library  has	a  path that starts with @exe‐
       cutable_path.  Then @executable_path is replaced with executable_path.

       If the root_dir parameter is not NULL it is prepended to all the rooted
       dependent library paths.

       dependent_libs()	 takes	a  file_name  of  a  binary and returns a mal‐
       loc(3)'ed array of pointers  (NULL  terminated)	to  names  (also  mal‐
       loc(3)'ed and '\0' terminated names) of all the dependent libraries for
       that binary (not recursive)  for	 all  of  the  architectures  of  that
       binary.	 If  successful	 dependent_libs() returns a non NULL value (at
       minimum a pointer to one NULL pointer). If unsuccessful	dependent_libs
       returns NULL.

       install_name() takes a file_name of a binary and returns a malloc(3)'ed
       pointer to a NULL terminated string containing the  install_name	 value
       for the binary. If unsuccessful install_name() returns NULL.
	In particular, NULL is returned if the binary is not a dylib and there
       is no error_message set.	 If the all of the arch's are dylibs  but  all
       the  install  names don't match NULL is returned and a error_message is
       set.  If some but not all of the archs are dylibs NULL is returned  and
       a error_message is set.

       redo_prebinding() takes a file_name of a binary and redoes the prebind‐
       ing on it.  If output_file is not NULL the update file  is  written  to
       output_file,  if	 not it is written to file_name.  If redo_prebinding()
       is successful it returns REDO_PREBINDING_SUCCESS otherwise  it  returns
       REDO_PREBINDING_FAILURE.	 If the slide_to_address parameter is non-zero
       and the binary is a dynamic library it is relocated to  have  that  has
       its  prefered address.  If the parameter allow_missing_architectures is
       zero and not all architectures can be updated it is not successful  and
       nothing	is  done  and  this  returns  REDO_PREBINDING_FAILURE.	If the
       parameter allow_missing_architectures is non-zero  then	only  problems
       with missing architectures for the architecure of the cputype specified
       by allow_missing_architectures will cause this  call  to	 fail.	 Other
       architectures  that  could not be prebound due to missing architectures
       in depending libraries will not have their prebinding updated but  will
       not  cause  the	call to fail.  If the parameter only_if_needed is non-
       zero the prebinding is checked first and	 only  done  if	 needed.   The
       checking	  includes   checking	the   prefered	 address  against  the
       slide_to_address value if it is non-zero.  If  only_if_needed  is  non-
       zero  and  the  prebinding  does	 not  have  to be redone REDO_PREBIND‐
       ING_NOT_NEEDED is returned, if the binary is not prebound REDO_PREBIND‐
       ING_NOT_PREBOUND is returned and if the new load commands do not fit in
       the binary and it needs to be rebuilt  REDO_PREBINDING_NEEDS_REBUILDING
       is  returned.   If zero_out_prebind_checksum is non-zero then the cksum
       field of the LC_PREBIND_CKSUM load command (if any) is set to  zero  on
       output  (this  should  always  be set by B&I tools and never set by the
       update_prebinding(1) command).  If throttle is non-NULL it points to  a
       value  of  the maximum bytes per second to use for writting the output.
       If the value is ULONG_MAX then the actual bytes per second is  returned
       indirectly through *throttle.

       needs_redo_prebinding()	takes  a  file_name  and determines if it is a
       binary and if its prebinding is uptodate.  It returns one of the return
       values  below  depending	 on the state of the binary and libraries.  If
       the parameter allow_missing_architectures is  zero  then	 architectures
       for  fat	 files	are checked.  If the parameter allow_missing_architec‐
       tures is non-zero then the value returned is based on the cputype spec‐
       ified  by  allow_missing_architectures.	 If  that  architecture is not
       present	then  PREBINDING_UPTODATE  is  returned.   If  the   parameter
       expected_address	 is  not zero and the binary is a dynamic library then
       the library is checked to see if it is at the expected_address  if  not
       the prebinding is assumed to be out of date and PREBINDING_OUTOFDATE is
       returned.

       Return values for needs_redo_prebinding():

       PREBINDING_UPTODATE
	      a binary who's prebinding is up todate.

       PREBINDING_OUTOFDATE
	      a binary who's prebinding is out of date.

       NOT_PREBOUND
	      a binary, but not built prebound.

       NOT_PREBINDABLE
	      not a binary or statically linked, prebinding does not apply.

       PREBINDING_UNKNOWN
	      a binary who's prebinding can't be determined because it is mal‐
	      formed, a library it depends on is missing, etc.

       object_file_type() takes a file_name and determines what type of object
       file it is and returns on the the values below.

       OFT_EXECUTABLE,
	      the file is an Mach-O executable.

       OFT_DYLIB,
	      the file is an Mach-O dyanmic library.

       OFT_BUNDLE,
	      the file is an Mach-O bundle.

       OFT_ARCHIVE,
	      the file is an archive.

       OFT_OTHER,
	      the file is something other than the above files.

       OFT_INCONSISTENT,
	      the file is a fat file and the architectures are not of the same
	      type.

       OFT_FILE_ERROR
	      The file can't be opened, read or malformed

       get_prebind_cksums()  takes  a  file_name  that is a Mach-O file or fat
       file containing Mach-O files and returns a malloc(3)'ed array  of  pre‐
       bind_cksum_arch structures indirectly through the cksums parameter. The
       number of prebind_cksum_arch structures is returned indirectly  through
       the  ncksums  parameter.	 If successful it returns zero else it returns
       non-zero.

       The structure prebind_cksum_arch is  defined  in	 <mach-o/redo_prebind‐
       ing.h> as follows:
	    struct prebind_cksum_arch {
		 cpu_type_t cputype;
		 cpu_subtype_t cpusubtype;
		 unsigned long has_cksum;
		 unsigned long cksum;
	    };

       The cputype and cpusubtype are filled in with the cpu specifier and the
       machine specifier for the architecture of the Mach-O file (or  zero  if
       not a Mach-O file).  The field has_cksum is set to one if the architec‐
       ture as an LC_PREBIND_CKSUM load command and zero otherwise.  The field
       cksum is set to the value of the cksum in LC_PREBIND_CKSUM load command
       (or zero if it does not have one).

SEE ALSO
       redo_prebinding(1), update_prebinding(1)

Apple Computer, Inc.		October 3, 2002		    REDO_PREBINDING(3)
[top]

List of man pages available for OpenDarwin

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net