Home Man
Today's Posts

Linux & Unix Commands - Search Man Pages

OpenDarwin 7.2.1 - man page for redo_prebinding (opendarwin section 3)

REDO_PREBINDING(3)		     Library Functions Manual		       REDO_PREBINDING(3)

       redo_prebinding library functions

       #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);

       These  functions are intended for use by update_prebinding(1) and Mac OS X Build and Inte-
       gration 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 func-
       tion 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 terminated string with the error  mes-
       sage.   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 depen-
       dent  library  has  a  path  that  starts with @executable_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

       dependent_libs()  takes a file_name of a binary and returns a malloc(3)'ed array of point-
       ers (NULL terminated) to names (also malloc(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_mes-
       sage 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 prebinding on it.  If  out-
       put_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  other-
       wise  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 miss-
       ing 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_PREBINDING_NOT_NEEDED is returned,
       if the binary is not prebound REDO_PREBINDING_NOT_PREBOUND is returned and if the new load
       commands  do  not  fit  in  the	binary	and  it  needs	to   be   rebuilt   REDO_PREBIND-
       ING_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 throt-
       tle 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 indi-
       rectly through *throttle.

       needs_redo_prebinding() takes a file_name and determines if it is a binary and if its pre-
       binding	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_architectures is
       non-zero then the value returned is based on the cputype specified by allow_missing_archi-
       tectures.   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():

	      a binary who's prebinding is up todate.

	      a binary who's prebinding is out of date.

	      a binary, but not built prebound.

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

	      a binary who's prebinding can't be determined because it is malformed, 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.

	      the file is an Mach-O executable.

	      the file is an Mach-O dyanmic library.

	      the file is an Mach-O bundle.

	      the file is an archive.

	      the file is something other than the above files.

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

	      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 prebind_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_prebinding.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 architecture 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 com-
       mand (or zero if it does not have one).

       redo_prebinding(1), update_prebinding(1)

Apple Computer, Inc.			 October 3, 2002		       REDO_PREBINDING(3)

All times are GMT -4. The time now is 10:03 AM.

Unix & Linux Forums Content Copyrightę1993-2018. All Rights Reserved.
Show Password