- cpusubtype_findbestarch() in best_arch.c when passed CPU_SUBTYPE_POWERPC_ALL
  as the cpusubtype and only 7440 and 750 were in the fat file nothing was
  selected.  Is this right?

TODO:
- Deal with LC_PREPAGE and unknown load commands that don't need to be swapped.

Changes for the 5.24 release (the cctools-667.2 release):
- Changed get_segalign_from_flag() in arch.c so that if returns 4K for
  CPU_TYPE_POWERPC64 and CPU_TYPE_X86_64 so that the __LINKEDIT segment after
  codesign_allocate(1) does not end up with zerofill (and writeable) pages at
  the end.  Radar bug #5363873.

Changes for the 5.24 release (the cctools-663 release):
- Changed get_macosx_deployment_target() in macosx_deployment_target.c so that
  it now takes a pointer to a struct that it fills in with the major, minor and
  name of the macosx_deployment_target.  Also changed the default to be the
  current version of the machine it is running on.  Radar bug #5132019.

Changes for the 5.24 release (the cctools-658 release):
- Changed symbol_string_at_end() in checkout.c to also set the
  input_indirectsym_pad field in the object structure for relocatable objects
  just as dyld_order() does for fully linked objects.  To deal correctly with
  the fact that 64-bit files may or may not have padding after the indirect
  symbol table entries.  Radar bug #5054452.

Changes for the 5.24 release (the cctools-657 release):
- Fixed a problem with the fix below.  Basically what was needed was to swap
  back the headers of a fat file when ever only some parts were processed or
  stepped over and other parts could be processed.  The fix is the same as below
  but in more places.  This is now done by testing headers_swapped field in the
  ofile struct can calling the new routine swap_back_Mach_O().  Radar bug
  #5055223.

Changes for the 5.24 release (the cctools-656 release):
- Fixed a problem with the fix to Radar bug #4970647.  That fix missed the
  case when an architecture was swap a first time and used then stepped over a
  second time.  The fix was in ofile_process() in ofile.c to also check
  the headers_swapped field in the case the architecture was used to also swap
  it back.  Radar bug #5047924.

Changes for the 5.24 release (the cctools-653 release):
- Updated ofile.c and swap_headers.c to handle the LC_REEXPORT_DYLIB load
  command.  Radar bug #4986624.

Changes for the 5.24 release (the cctools-651 release):
- Changed check_Mach_O() in ofile.c to set the new headers_swapped field in the
  ofile struct.  Then in ofile_process() for looping through a fat file this
  is checked and if TRUE, cleared and the headers are swapped back.
  Radar bug #4970647.

Changes for the 5.24 release (the cctools-645 release):
- Added support for rpath load command.  Radar bug #4822880.
  - Added swap_rpath_command() to bytesex.c .
  - Updated swap_object_headers() in swap_headers.c to support the LC_RPATH
    load command.
  - Added checks in check_Mach_O() in ofile.c to all the LC_RPATH load command.

Changes for the 5.24 release (the cctools-648 release):
- Changed the check in ofile_map_memory(1) for the nfat_arch being too large
  so the check does not overflow and later cause a crash.  Then changed the
  #ifdef'ed OTOOL code to simply allocate the size of the file minus the fat
  header for swapping and printing. Radar bug #4860769.

Changes for the 5.24 release (the cctools-644 release):
- Changed ofile_map() in ofile.c to test if the size of the file attempted to
  be mmap(2)'ed is zero and not call mmap(2).  Radar bug #4795458.
- Added entries in arch_flags[] in arch.c for veo3 & veo4.  Added code for
  CPU_SUBTYPE_VEO_3 and CPU_SUBTYPE_VEO_4 to cpusubtype_findbestarch() and
  cpusubtype_combine() in best_arch.c and to get_arch_from_host() in
  get_arch_from_host.c .  Radar bug #4799550.
- Changed get_stack_addr_from_flag() in arch.c to return a uint64_t and added
  case values for CPU_TYPE_POWERPC64 and CPU_TYPE_X86_64.  Radar bug #4458775.

Changes for the 5.24 release (the cctools-640 release):
- Changed arch.c, best_arch.c, ofile.c, and set_arch_flag_name.c to use
  CPU_SUBTYPE_MASK to mask out the capability bits from the cpusubtype on
  comparisons. Radar bug #4754462.

Changes for the 5.24 release (the cctools-639 release):
- Changed copy_new_symbol_info() in writeout.c to use the input_indirectsym_pad
  from the object struct instead of trying to pad based on the number of
  indirect symbol table entries. Radar bug #4759112.

Changes for the 5.24 release (the cctools-638 release):
- Changed dyld_order() in checkout.c to deal with the fact that 64-bit files may
  or may not have padding after the indirect symbol table entries.  The padding
  in the input file is determined and saved in the new input_indirectsym_pad
  field in the object struct.  Also changed copy_new_symbol_info() in writeout.c
  to pad the indirect symbol table if it has an odd number of entries for 64-bit
  files. Radar bug #4747408.

Changes for the 5.24 release (the cctools-637 release):
- Changed dyld_order() in checkout.c to round the offset after the in indirect
  symbol table entries to a multiple of 8 if it is a 64-bit Mach-O file and
  their are an odd number of indirect symbol table entries.  Radar bug #4737991.

Changes for the 5.24 release (the cctools-626 release):
- Made the needed changes to support the split info.  Radar bug #4695477.
  - Changed check_object() in checkout.c to pick up the LC_SEGMENT_SPLIT_INFO
    command and check for duplicates.
  - Added checks in dyld_order() in checkout.c to check the order of the split
    info data if it is there.
  - Changed copy_new_symbol_info() in writeout.c to copy out and or increment
    the *size passed in for the output_split_info_data_size .
  - Added checks in check_Mach_O() in ofile.c to check the LC_SEGMENT_SPLIT_INFO
    command and check for duplicates.
  - Updated swap_object_headers() in swap_headers.c to support the
    LC_SEGMENT_SPLIT_INFO load command.

Changes for the 5.24 release (the cctools-632 release):
- Ported code the code used by libredo_prebinding.a and libsyminfo.a to be
  compiled for 64-bit hosts.  Radar bug #4407440.
  - Changed the Makefile and added the lib_ofiles and lib_ofiles_install targets
    to build just the dynamic target for use with libredo_prebinding.a and
    libsyminfo.a to be built for all architectures in RC_CFLAGS.
  - Ported writeout.c to by not using ranlib structs since ran_un.ran_name
    can be used when compiling for 64-bit hosts.
    - Changed the code to use the new toc_entry struct added to
      <stuff/breakout.h>. and changed the uses of toc_nranlibs field name to
      ntocs.
    - Also changed the use of SWAP_LONG to SWAP_INT for the size of ranlib
      structs and strings in the table of contents and changed the used of
      sizeof(long) to sizeof(uint32_t).
    - Change the size of an indirect symbol table entries to sizeof(uint32_t)
      from sizeof(unsigned long).
  - Ported bytesex.c by changing SWAP_LONG to SWAP_INT and a number of local
    struct definitions using fields to union with uint32_t instead of unsigned
    long. Change the type of the pointer to indirect symbol table entries
    from unsigned long * to uint32_t in swap_indirect_symbols() and changed
    the count to a uint32_t.
  - Ported get_toc_byte_sex.c, ofile_get_word.c, swap_headers.c and ofile.c by
    changing SWAP_LONG to SWAP_INT and a number unsigned long uses to uint32_t.
  - Also changed ofile.c so temporary_archive_member_warning() in also defined
    when ALIGNMENT_CHECKS_ARCHIVE_64_BIT is defined.
  - Also changed ofile_map() in ofile.c to use mmap() instead of map_fd().
  - Ported dyld_order() and symbol_string_at_end() in checkout.c to change
    a use of unsigned long to uint32_t for the size of indirect symbol table
    entries.

Changes for the 5.24 release (the cctools-627 release):
- As part of the port to unify otool(1) and otool64(1) finished the port of
  libstuff and removed the no longer needed libstuff64 libraries.  Radar bug
  #3903136.
- Fixed a number of place in ofile.c that was not setting ofile->mh64 to NULL
  when it was setting ofile->mh to NULL.  Radar bug #4593267.

Changes for the 5.24 release (the cctools-627 release):
- Changed check_object() in checkout.c so the test for not having an LC_ID_DYLIB
  load command if it is a MH_DYLIB_STUB and has a non-zero number of load
  commands.  Radar bug #4511628.

Changes for the 5.24 release (the cctools-626 release):
- Made the needed changes to support the code signature.  Radar bug #4588023.
  - Changed check_object() in checkout.c to pick up the LC_CODE_SIGNATURE
    command and check for duplicates.
  - Added checks in dyld_order() in checkout.c to check the order of the code
    signature data if it is there.
  - Changed copy_new_symbol_info() in writeout.c to copy out and or increment
    the *size passed in for the output_code_sig_data_size .
  - Added checks in check_Mach_O() in ofile.c to check the LC_CODE_SIGNATURE
    command and check for duplicates.
  - Added swap_linkedit_data_command() to bytesex.c .
  - Updated swap_object_headers() in swap_headers.c to support the
    LC_CODE_SIGNATURE load command.

Changes for the 5.23 release (the cctools-620 release):
- Added the routines swap_x86_float_state64(), swap_x86_state_hdr(),
  swap_x86_exception_state64(), swap_x86_debug_state32(),
  swap_x86_debug_state64() to bytesex.c .  Radar bug #4491230.

Changes for the 5.23 release (the cctools-614 release):
- Changed bytesex.c to add macros that rename structure members of the 
  ppc and i386 thread states for Unix conformance.  Radar bug #4508798.
- Changed swap_headers.c to add macros that rename i386 thread states for
  Unix conformance.  Radar bug #4508798.

Changes for the 5.23 release (the cctools-610 release):
- Added a few ifdef x86_THREAD_STATE64 to a few places in bytesex.c and 
  swap_headers.c to allow it to build on Tiger.  Radar bug #4535019.

Changes for the 5.22 release (the cctools-590.38.3 release):
- Don't consider X86_64_RELOC_SUBTRACTOR relocations to be paired. Radar bug
  #4504190.

Changes for the 5.22 release (the cctools-590.37.3 release):
- When swap_object_headers sees a thread state flavor that it doesn't know
  about, print the flavor number itself in the error message in addition to the
  other information that was already being printed. Radar bug #4491140.
- Correctly swap x86_THREAD_STATE64 states when running on PowerPC.  Also,
  update to the current definition of the x86-64 thread state. Radar bug
  #4491228.

Changes for the 5.22 release (the cctools-590.36.3 release):
- Swap the LC_ROUTINES_64 load command correctly. Radar bug #4451600.

Changes for the 5.22 release (the cctools-590.31.1 release):
- Added support for the x86_64 architecture.  Radar bug #4345090.

Changes for the 5.21 release (the cctools-590.25 release):
- Added more support for DWARF.  Radar bug #4367423.
  - Updated check_Mach_O() in ofile.c to deal with LC_UUID load commands.

Changes for the 5.21 release (the cctools-590.24 release):
- Added support for DWARF.  Radar bug #4367423.
  - Added swap_uuid_command() to bytesex.c .
  - Updated swap_object_headers() in swap_headers.c to deal with LC_UUID load
    commands.

Changes for the 5.20 release (the cctools-590.23 release):
- Changed swap_i386_float_state() in bytesex.c for the current floating point
  i386 thread state (#if i386_THREAD_STATE == 1 case) so that it does swap
  the struct fields if i386_EXCEPTION_STATE_COUNT is defined.  Radar bug
  #4350771.

Changes for the 5.20 release (the cctools-590.21 release):
- Fixed a bug in writeout_to_mem() in writeout.c for the code that was
  staggering the timestamps of dylibs with muliple cpusubtypes.  It needed to
  have code to be able byteswap the load commands because the archs it was
  walking through may have been byte swapped for output.  Radar bug #4265381.
- Fixed a bug in ofile_process() for the #ifdef OTOOL case that needed to have
  code that checked the non-swapped case since the checking code is not called
  to set up the ofile->mh_cputype fields.  Radar bug #4337271.

Changes for the 5.20 release (the cctools-590.20 release):
- Removed the warnings when building. Radar bug #4340147.
  - Added -fno-builtin-round to the Makefile.
  - Removed the const from command_line_macosx_deployment_target in and
    put_macosx_deployment_target() in macosx_deployment_target.c .
  - Added two #undef THREAD_STATE_NONE and two #undef VALID_THREAD_STATE_FLAVOR
    to bytesex.c and swap_headers.c .

Changes for the 5.19 release (the cctools-590.12 release):
- Added the new routine get_segprot_from_flag() to arch.c that is passed an
  arch flag and returns the default segment protection.  Radar bug #4281171.

Changes for the 5.19 release (the cctools-590.11 release):
- Changed swap_i386_float_state() in bytesex.c for the current i386 thread
  states (#if i386_THREAD_STATE == 1 case) so that it does not swap any fields.
  Removed the three added #defined's from the change below now that they are
  no longer needed.  Radar bug #4282026.

Changes for the 5.19 release (the cctools-590.10 release):
- Added three #defined's to bytesex.c:
    #define obsolete1 fpkind
    #define obsolete2 initialized
    #define obsolete3 exc_status
  allow the source to build on Leopard with different fields in the struct
  i386_float_state in <mach-o/i386/thread_status.h> . Radar bug #4279472.

Changes for the 5.19 release (the cctools-590.8 release):
- Changed check_Mach_O() in ofile.c as well as swap_object_headers() in
  swap_headers.c and added an #if to allow the older i386_THREAD_STATE value of
  -1.  Radar bug #4240450.
- Changed the needed code to for the new i386 thread states. Radar bug #4200908.
  - Changed bytesex.c to #if the old swap_i386_thread_fpstate(),
    swap_i386_thread_exceptstate() and swap_i386_thread_cthreadstate() routines
    and added the new swap_i386_float_state() and swap_i386_exception_state()
    routines.
  - Changed swap_object_headers() in swap_headers.c and check_Mach_O() in
    ofile.c to #if the code for the new and old i386 thread states and adding
    code for the new thread states.

Changes for the 5.19 release (the cctools-590.7 release):
- Added the new routine put_macosx_deployment_target() to
  macosx_deployment_target.c to allow the value of MACOSX_DEPLOYMENT_TARGET to
  be set on the argument to the compiler command line flag -macosx_version_min.
  Radar bug #4195253.

Changes for the 5.19 release (the cctools-590.1 release):
- Fixed a bug in setup_symbol_list() in symbol_list.c where if there are more
  than two duplicates in the list only the first duplicate is removed.
  Radar bug #4139106.

Changes for the 5.18 release (the cctools-589 release):
- Added support for the CPU_SUBTYPE_PENTIUM_4 cpusubtype.  Radar bug #4115802
  - Added an entry in the arch_flags[] array in arch.c for pentium4 as:
    { "pentium4",CPU_TYPE_I386, CPU_SUBTYPE_PENTIUM_4 },
  - Added code in get_arch_from_host() in get_arch_from_host.c for the
    CPU_SUBTYPE_PENTIUM_4 cpusubtype.
  - Added a case for CPU_SUBTYPE_PENTIUM_4 in cpusubtype_execute() in
    best_arch.c .
- Changed the Makefile and added a LEGACY macro with two defines to allow
  the code to use the old field name "environ" from the i386 structs.
  Radar bug #4113580.

Changes for the 5.18 release (the cctools-583 release):
- Added the following entry to the table in macosx_deployment_target.c :
    { "10.5", MACOSX_DEPLOYMENT_TARGET_10_5 },
  Radar bug #4098516.
- Changed the Makefile so that when RC_XBS is set to YES then the compiler
  options -MD and -dependency-file as well as the md(1) program are not used.
  Radar bug #4029936.

Changes for the 5.18 release (the cctools-580 release):
- Changed get_macosx_deployment_target() in macosx_deployment_target.c to take
  an additional cpu_type_t parameter.  Then if new cpu_type_t parameter is
  CPU_TYPE_I386 the default is set to 10.4 otherwise it is set to 10.1.
  Radar bug #4081062.

Changes for the 5.17 release (the cctools-574 release):
- Changed the routine cpusubtype_combine() in best_arch.c to combine any i386
  subtype to the ALL subtype.  Radar 4002756.
- Added the routine force_cpusubtype_ALL_for_cputype() to arch.c that is passed
  a cputype and returns TRUE if the that architecture is to force its
  cpusubtypes to be the ALL type.  And the implementation returns TRUE for
  CPU_TYPE_I386 and FALSE for all others.  Radar bug #4002758.

Changes for the 5.17 release (the cctools-572 release):
- Fixed a bug in swap_object_headers() in swap_headers.c which was missing some
  code to handle the ppc64 thread state.  Radar bug #4010859.
- Fixed a bug in check_Mach_O() in ofile.c which was missing the code to handle
  the ppc64 thread state.  Radar bug #3987993.

Changes for the 5.17 release (the cctools-568 release):
- Changed bytesex.c and swap_headers.c to remove multiply defined warnings by
  changing all #import's to #include's and adding #undef's
  for MACHINE_THREAD_STATE and MACHINE_THREAD_STATE_COUNT after including
  <mach/m68k/thread_status.h> and <mach/ppc/thread_status.h>.

Changes for the 5.17 release (the cctools-562 release):
- Changed swap_ppc_thread_state_t() in bytesex.c to use cpu->vrsave and not
  cpu->pad.  Radar bug #3930480.

Changes for the 5.17 release (the cctools-559 release):
- Change ofile_process() to simply treat a dynamic library without modules as
  if the flat_dylib parameter were set.  Radar bug #3883039.
- Added building libstuff_kld.a built for the kernel's kld use.  Radar bug
  #3906133.
  - Changed the code to only compile the needed routines when RLD is defined:
    - best_arch.c only compile cpusubtype_combine() for RLD
    - arch.c to only compile arch_flags[], get_arch_name_from_types(),
      get_arch_family_from_cputype(), get_byte_sex_from_flag() and
      get_segalign_from_flag().
  - Changed the following files and ifndef RLD their entire contents:
    errors.c, execute.c, fatals.c, arch_usage.c, ofile.c, print.c,
    set_arch_flag_name.c, seg_addr_table.c, dylib_table.c, breakout.c,
    writeout.c, checkout.c, fatal_arch.c, dylib_roots.c, SymLoc.c,
    get_arch_from_host.c, symbol_list.c, unix_standard_mode.c,
    vm_flush_cache.c, macosx_deployment_target.c, guess_short_name.c .

Changes for the 5.17 release (the cctools-557 release):
- Removed support for the INTERIM_PPC64.  The changes were to remove the
  #ifdef INTERIM_PPC64 source changes in reloc.c, ofile.c, best_arch.c and
  arch.c.  Radar bug #3600419.

Changes for the 5.17 release (the cctools-554 release):
- Fixed a bug in the swap_segment_64() routine in bytesex.c that was using
  SWAP_LONG for the fileoff and filesize fields when it should have been using
  SWAP_LONG_LONG. Radar bug #3891223.

Changes for the 5.17 release (the cctools-552 release):
- Changed print.c to include stdarg.h .  Radar bug #3640701.
- Added the source file unix_standard_mode.h for the new routine
  get_unix_standard_mode() to know when we are running in UNIX standards
  conformance mode. Radar bug #3852702.
- Picked up the changes to check_for_dylib() in dylib_roots.c to deal with
  both 32-bit and 64-bit Mach-O files.  Radar bug #3861276.

Changes for the 5.17 release (the cctools-551 release):
- Added support for the ppc64 thread state.  Radar bug #3866755.
  - Added swap_ppc_thread_state64_t() to bytesex.c .
  - Added a case statement for swapping a PPC_THREAD_STATE64 to
    swap_headers() in swap_headers.c .
- Changed ofile.c to not produce a warning for archives that have 64-bit Mach-O
  archive members that are 8 byte boundaries.  Radar bug #3818951.

Changes for the 5.17 release (the cctools-549 release):
- Fixed a bug in cpusubtype_combine() in best_arch.c that was missing the case
  for CPU_TYPE_POWERPC64.  Radar bug #3856997.
- Fixed the error handling in the breakout code.  In breakout_internal() at the
  end when it detects an error it calls free_archs() it needed to clear the
  values in *archs and *narchs before returning.  Also in both breakout_mem()
  and breakout() a check for errors != 0 was added and if so the ofile was
  free'ed() and NULL was returned.  Radar bug #3839049.

Changes for the 5.17 release (the cctools-544 release):
- Fixed a bug in ofile_map_from_memory() in ofile.c that was missing an "else"
  before the if statement to check for 64-bit Mach-O files.  Radar bug #3837563.

Changes for the 5.17 release (the cctools-541 release):
- Fixed a bug in reloc_has_pair() in reloc.c that needed a case statement for
  CPU_TYPE_POWERPC64 in all cases.  Radar bug #3829545.
- Fixed a bug in make_table_of_contents() in writeout.c that did not correctly
  set up the sections arrays for both 32-bit and 64-bit Mach-O files.  Radar
  bug #3829545.

Changes for the 5.17 release (the cctools-540 release):
- Fixed a bug in dyld_order() in checkout.c that was not checking which type
  Mach-O file before using the seg_linkedit field.  Radar bug #3829149.

Changes for the 5.17 release (the cctools-539 release):
- Changed to support 32-bit & 64-bit tools that write binaries.  Radar bug
  #3812858.
  - Changed breakout_internal() in breakout.c to set both the mh and the mh64
    fields of the struct object.
  - Changed cksum_object() and dyld_order() in breakout.c to use and set either
    the 32-bit fields or the 64-bit fields.
  - Changed the code in writeout.c to to test the mach header field, mh for
    NULL, to see which type of object it has and then added/modified the code
    to deal with both.  Also changed all rounding to 8 from 4 so members end up 
    on a 8-byte boundary.
- Changed symbol_string_at_end() in checkout.c to allow any object with its
  string table not at the end but rounded to 8 bytes.  To deal with archive
  members that are extracted from archives and end up padded.
- Fixed a warning about temporary_archive_member_warning() in ofile.c being
  defined but not used when ALIGNMENT_CHECKS is not defined.

Changes for the 5.17 release (the cctools-535 release):
- Changed symbol_string_at_end() in checkout.c to deal with archive members that
  are rounded up to 8 bytes.  Since the object file maybe smaller than that the
  check needs to check the rounded size of the string table end.  Then it
  changes the object_size to where the string table ends so tools like strip(1)
  that expect the string table at the end of the object will work.  Radar bug
  #3811489.

Changes for the 5.17 release (the cctools-533 release):
- Fixed bugs in ofile_map_from_memory() and ofile_first_member() that was still
  incorrectly using mach_header_t when it should have been using struct
  mach_header.  That was not correctly changed as part of the changes to
  cctools-533.
- Temporarily changed the alignment errors of 64-bit objects in archives to be
  a warning not an error in ofile.c in many places.  Added the file level static
  boolean, archive_64_bit_align_warning, to be used to cause the warning to be
  printed only once.  Also added temporarily the routine
  temporary_archive_member_warning() to ofile.c .

Changes for the 5.17 release (the cctools-533 release):
- Changes to support 32-bit & 64-bit tools in the same binary.  Radar bug
  #3793394.
  - Changed the code in ofile.c to fill in and deal with the changed struct
    ofile in "stuff/ofile.h" to have both a pointer to a 32-bit and 64-bit
    mach header.  Also to fill in and use the fields mh_cputype, mh_cpusubtype,
    and mh_filetype in the ofile structure.
  - Added new swap_* routines in bytesex.h to have a routine for the
    32-bit and 64-bit structs.
  - Changed the breakout() code and added an ifdef ARCH64 and some code to use
    the ofile->mh64 field to assign to the mh mach_header_t field of the arch
    struct.
  - Changed the writeout() code to use the new macro swap_nlist_t from
    "stuff/target_arch.h" in 4 places.
  - Changed swap_object_headers() in swap_headers.c to take a void * for the
    mach_header and work with both 64-bit and 32-bit Mach-O files.
- Fixed a problem in check_Mach_O() in ofile.c for the INTERIM_PPC64 format that
  was missing a check for CPU_TYPE_POWERPC64 when dealing with 32-bit thread
  commands.   Radar bug #3792737.

Changes for the 5.16 release (the cctools-532 release):
- Made more changes to support 64-bit tools. Radar bug #3600431.
  - Changed arch.c to not ifdef the 64-bit arch types and the 32-bit arch types.
    This is done to allow lipo(1) to use the table of values.
  - Added swap_mach_header_64(), swap_segment_command_64() and swap_section_64()
    routines to byteswap.c .

Changes for the 5.16 release (the cctools-529 release):
- Made changes to support 64-bit tools. Radar bug #3600431.
  - Changed the Makefile to build libstuff64 versions to be linked with
    64-bit tools.  The sources are compiled with -DARCH64 .
  - Changed the Makefile to no longer build with -DINTERIM_PPC64 .
  - Added the include "stuff/target_arch.h" to the following files:
      breakout.c
      bytesex.c
      checkout.c
      get_toc_byte_sex.c
      ofile.c
      ofile_get_word.c
      swap_headers.c
      writeout.c
    and changed the uses of structs, constants and names that are different for
    64-bit files to the typedefs in "stuff/target_arch.h".
  - Added SWAP_LONG_LONG() to bytesex.c.
  - Added bits of ifdef ARCH64 code to bytesex.c to swap the new fields and the
    different sized fields.
  - Added ifdef ARCH64 to arch.c and added two 64-bit arch types, ppc64 and
    ppc970-64 to the arch_flags[] array.
  - Changed the #ifdefs in:
	get_byte_sex_from_flag() in arch.c
	reloc_pair_r_type() in reloc.c
	reloc_has_pair() in reloc.c
    to be #if defined(INTERIM_PPC64) || defined(ARCH64) for CPU_TYPE_POWERPC64.
  - Added ifdef ARCH64 to cpusubtype_findbestarch() in best_arch.c for
    64-bit architectures.

Changes for the 5.16 release (the cctools-528 release):
- Support the new GENERIC_RELOC_LOCAL_SECTDIFF reloc.

Changes for the 5.16 release (the cctools-527 release):
- Support the new PPC_RELOC_LOCAL_SECTDIFF reloc.

Changes for the 5.16 release (the cctools-526 release):
- Changed a few places in ofile.c from %lu to %u to remove warnings for the
  fields that changed in <mach-o/fat.h> from unsigned long to uint32_t.
  Radar bug #3744082.

Changes for the 5.16 release (the cctools-524 release):
- Fixed a bug in check_sort_ranlibs() in writeout.c that caused a crash if
  there are 0 ranlib structs to sort.  Reported in Radar bug #3451378.
- Fixed a bug in cpusubtype_findbestarch() in best_arch.c when trying to pick
  the lowest model i386 fat arch.  The variable lowest_model was initialized to
  ULONG_MAX when it should have been LONG_MAX as it was a signed value. Radar
  bug #3694812.

Changes for the 5.16 release (the cctools-520 release):
- Fixed a bug that caused otool(1) to crash when it was called with a bad fat
  file (a java class file).  The calls to ofile_first_arch() in ofile.c was not
  checking its return value and later causing the code to crash when it should
  have returned in case of an error.  Radar bug #3670740.

Changes for the 5.16 release (the cctools-515 release):
- Added the installGASsrc and fromGASsrc Makefile targets to install and build
  just the need sources to build the PowerPC assembler from the GAS sources:
    bytesex.c
    round.c
  and changed the Copyright in this file to the Apple BSD License.
  Radar bug #3657295.

Changes for the 5.16 release (the cctools-513 release):
- Changed writeout_to_mem() in writeout.c to move the local declrations of:
    long toc_time, timestamp, index;
  to the start of the routine so it would compile on older systems.  Also fixed
  the intenting of the first bit of code in that routine.

Changes for the 5.16 release (the cctools-512 release):
- Fixed a bug in the change made for Radar bug #3176679 in cctools-495.3 where
  the new writeout_to_mem() routine did not pass up the value of the boolean
  seen_archive to the outer routine writeout().  So the outer routine never made
  the call utime() to reset the mod time as the value of seen_archive was always
  FALSE in the outer routine.  The change was add the parameter seen_archive
  as a enum bool * to writeout_to_mem() in writeout.c and set the value
  indirectly.  Then the outer routine writeout() was changed to pass the address
  of its seen_archive variable to writeout_to_mem().  Radar bug #3645280.

Changes for the 5.16 release (the cctools-509 release):
- Added #ifdef INTERIM_PPC64 to the source changes to support the interim ppc64
  file format.  And added -DINTERIM_PPC64 to the Makefile.

Changes for the 5.16 release (the cctools-499.1 release):
- Made changes to support the interim ppc64 file format.  Radar bug  #3562133
  and #3562232.
  - Added an entry in the arch_flags[] array in arch.c for ppc64 as:
      { "ppc64",  CPU_TYPE_POWERPC64, CPU_SUBTYPE_POWERPC64_ALL },
  - Updated get_byte_sex_from_flag() in arch.c to return BIG_ENDIAN_BYTE_SEX
    for CPU_TYPE_POWERPC64.
  - Updated cpusubtype_findbestarch() in best_arch.c for CPU_TYPE_POWERPC64
    and its cpusubtype.

Changes for the 5.13.2 release (the cctools-495.3 release):
- Modified breakout.c to include a breakout_mem() function which will perform
  the breakout on a memory buffer, rather than reading from a file.  The 
  internals of breakout() were moved to breakout_internal() so they could
  be shared by both breakout() and breakout_mem().  Radar bug #3176679.
- Modified writeout.c to include a writeout_to_mem() function which will 
  return a vm_allocate'd buffer of the contents of the output file.  The 
  interanls of writeout() were moved to writeout_to_mem() so that writeout() 
  calls writeout_to_mem(), which produces the contents of the file, and
  writeout() writes it to the output file.  Radar bug #3176679.

Changes for the 5.14 release (the cctools-496 release):
- Added the following entry to the table in macosx_deployment_target.c :
    { "10.4", MACOSX_DEPLOYMENT_TARGET_10_4 },
  Radar bug #3445632.

Changes for the 5.12 release (the cctools-490 release):
- Fixed cpusubtype_findbestarch() in best_arch.c to not select a PowerPC 970
  if not on a PowerPC 970.  And fixed it when passed the family ALL type and
  there is not an exact match to select the cpusubtype's from the "top" of the
  list going all possible subtypes.  Also added the new routine
  cpusubtype_execute() to best_arch.c for use by the dynamic linker.
  Radar bug #3387962.

Changes for the 5.12 release (the cctools-469 release):
- Fixed a problem with the added checks of the of the dylib_module struct in
  ofile.c made in cctools-466 for Radar bug #3208399 where it did not work if
  the file was not in host byte sex.  The fix was to copy the struct and byte
  swap it if needed before doing the checks on the copy of the struct in
  check_dylib_module() in ofile.c .  Radar bug #3228664.

Changes for the 5.12 release (the cctools-467 release):
- Added support for the PPC_RELOC_LO14_SECTDIFF relocation type used with
  double word load/store instructions. Radar bug #3218027.
  - Added tests for PPC_RELOC_LO14_SECTDIFF in both reloc_has_pair() and
    reloc_is_sectdiff() in reloc.c .

Changes for the 5.12 release (the cctools-466 release):
- Fixed the incorrect casts on the comparison of the nlist struct's n_strx field
  where the value being compared to was casted to a long.  The correct fix was
  to cast n_strx to an unsigned long.
- Added the missing checking of the dylib_module struct in ofile.c so that it
  would not return an ofile struct with a bad dylib_module.  Also fixed a number
  of places the routine Mach_O_error() was called to print an error message but
  the code failed to return a failure status.  Radar bug #3208399.

Changes for the 5.12 release (the cctools-464 release):
- Made changes to build cleanly with gcc3.3
  - Removed -Wno-precomp from the Makefile
  - Fixed warnings for "comparison between signed and unsigned" in writeout.c,
    symbol_list.c, ofile_get_word.c, round.c, ofile.c, and best_arch.c .

Changes for the 5.12 release (the cctools-462 release):
- Added support for MH_DYLIB_STUB libraries.  Radar bug #3193744.
  - Did NOT change writeout() in writeout.c to handle the timestamp in 
    MH_DYLIB_STUB filetypes like MH_DYLIB filetypes as the timestamp should
    not be changed or else this would mess up building prebound.
  - Changed the routines in ofile.c to handle MH_DYLIB_STUB filetypes like
    MH_DYLIB filetypes.
  - Changed check_object() in checkout.c to handle MH_DYLIB_STUB filetypes like
    MH_DYLIB filetypes.

Changes for the 5.12 release (the cctools-457 release):
- Changed ofile_map() added ofile_map_from_memory() which is everything from
  the original ofile_map() except mapping the file.  This is needed so the
  NSCreateObjectFileImageFromMemory() api can be implemented.  Radar bug
  #3131622.

Changes for the 5.12 release (the cctools-455 release):
- Changed the code in dylib_roots.c to remove the check that the actual path of
  a binary equals the install name of the dynamic library.  Radar bug #3147668.

Changes for the 5.12 release (the cctools-450 release):
- Changed get_segalign_from_flag() in arch.c to have 4K returned for i386 also.
  Radar bug #3120579.

Changes for the 5.12 release (the cctools-449 release):
- Added the arch flag i686 to be the same as pentpro in arch.c. Radar bug
  #3111977.

Changes for the 5.11 release (the cctools-444 release):
- Added the file symbol_list.c which contains the code from strip.c for the
  symbol lists.  Now also used by ld(1)'s -exported_symbols_list and
  -unexported_symbols_list options.  Radar bug #3083844.
- Picked up fix to LocForDylib() in SymLoc.c that was crashing when the
  DylibProjects directory was empty.  Radar bug #3079374.

Changes for the 5.11 release (the cctools-440 release):
- Fixed the warnings about extra tokens at end of #endif directive in ofile.c
  (Radar bug #3072042).

Changes for the 5.11 release (the cctools-439 release):
- Made the needed changes to arch.c, get_arch_from_host.c, ofile.c, reloc.c,
  swap_headers.c & best_arch.c for VEO support.  Radar bug #3068161.

Changes for the 5.11 release (the cctools-438 release):
- Added the following entry to the table in macosx_deployment_target.c :
    { "10.3", MACOSX_DEPLOYMENT_TARGET_10_3 },
  Radar bug #3049974.

Changes for the 5.10 release (the cctools-416 release):
- Changed writeout() in writeout.c to not update the LC_ID_DYLIB timestamp if
  the new dont_update_LC_ID_DYLIB_timestamp is TRUE.  Radar bug #2914003.

Changes for the 5.10 release (the cctools-414 release):
- Changed the two calls to mach_host_self() in get_arch_from_host.c and
  writeout.c to call mach_port_deallocate() on the port after the calls.  Radar
  bug #2895931.

Changes for the 5.10 release (the cctools-412 release):
- Added the no_error_if_missing parameter to symLocForDylib(), dstLocForDylib()
  and LocForDylib() in SymLoc.c .  In LocForDylib() no call to error() is made
  if the installName can't be found.  Radar bug #2882324.
- Added the no_error_if_missing parameter to get_symfile_for_dylib() and
  get_dstfile_for_dylib() in dylib_roots.c which is pass through to
  symLocForDylib() or dstLocForDylib().  Radar bug #2882324.

Changes for the 5.10 release (the cctools-411 release):
- Added the file macosx_deployment_target.c to libstuff so that both the
  ld(1) code and the seg_addr_table(1) code can use the same code. Radar bug
  #2848945.

Changes for the 5.10 release (the cctools-404 release):
- Changed crc32() in crc32.c to be a __private_extern__.  Radar bug #2859919.

Changes for the 5.10 release (the cctools-400 release):
- Changed the Makefile back to again use the -dependency-file with gcc.
- Added a new throttle parameter to writeout() in writeout.c to allow
  redo_prebinding(3) used with prebinding on demand to throttle back its
  I/O when running in the back ground.  Radar bug #2850642.
- Added code in writeout() in writeout.c to use fcntl() with the F_NOCACHE
  option to not cache the blocks of the output file.

Changes for the 5.10 release (the cctools-397 release):
- Changed where "stuff/bool.h" was included in ofile.c
Radar bug #2831923.

Changes for the 5.10 release (the cctools-394 release):
- Changed the Makefile to not use the -dependency-file with gcc as well as
  mwccppc.
- Added an include for <string.h> in bytesex.c, ofile_get_word.c to remove the
  warning: implicit declaration of function `memcpy'.

Changes for the 5.10 release (the cctools-393 release):
- Added the code needed in check_Mach_O() in ofile.c for the LC_LOAD_WEAK_DYLIB
  variant of the LC_LOAD_DYLIB load command.
- Added the code needed in swap_object_headers() in swap_object_headers.c for
  the LC_LOAD_WEAK_DYLIB variant of the LC_LOAD_DYLIB load command.

Changes for the 5.10 release (the cctools-392 release):
- Added the new parameter use_member_syntax to the ofile_process() in ofile.c. 
  Changed the two calls to ofile_process() in dylib_roots.c to pass FALSE for
  use_member_syntax.  Radar bug #2730127.

Changes for the 5.10 release (the cctools-389 release):
- Changed writeout() in writeout.c to not set the modification time back by
  5 seconds if the file does not contain an archive.  Radar bug #2788034.

Changes for the 5.10 release (the cctools-388 release):
- Changed check_for_install_name() in dylib_roots.c used in seg_addr_table(1)
  so that if the install name starts with @executable_path it is considered ok.
  This will also be a problem for libhotspot/libjvm also, since libhotspot.dylib
  will have a libjvm install_name.

Changes for the 5.10 release (the cctools-387 release):
- Changed writeout() in writeout.c to stagger the time stamps of dynamic
  libraires with multiple cpusubtypes.  This avoids problems with prebinding.
  Radar bug #2676444.

Changes for the 5.10 release (the cctools-386 release):
- Picked up the crc32.c file from the freeBSD code.
- Added the calculate_input_prebind_cksum parameter to breakout() in breakout.c
  and the new routine cksum_object() to calculate the input's check sum for the
  cases that the redo_prebinding code needs it.
- Added logic to check_Mach_O() in ofile.c for checking the new LC_PREBIND_CKSUM
  load command.
- Added swap_prebind_cksum_command() for the new LC_PREBIND_CKSUM command and
  also updated swap_headers().

Changes for the 5.10 release (the cctools-385 release):
- Moved the routines archive_error(), archive_member_error() and
  Mach_O_error() from ofile.c to ofile_error.c so the redo_prebinding library
  can override them.
- Fixed a bug in breakout.c that called realloc() on *archs which could not
  be NULL the first time.  So set *archs to NULL and *narchs to zero in
  breakout.c.
- Added __private_extern__ to free_archs() in breakout.c.
- Added some checks to checkout() in checkout.c to make sure an MH_DYLIB has
  a LC_ID_DYLIB command and the name.offset is valid.

Changes for the 5.9 release (the cctools-381 release):
- Changed check_Mach_O() in ofile.c and ifdef'ed out the check for unknown
  load commands when OFI is defined.  This is needed so that new load commands
  do not cause NSCreateObjectFileImageFromFile() and the like API's to fail
  when a new load command is seen in the image.  The dynamic linker has also
  been changed to look for the new LC_REQ_DYLD bit and cause dyld to refuse to
  use an image if it contains something that dyld must understand to execute
  properly.

Changes for the 5.9 release (the cctools-370 release):
- Added checks in check_object() checkout.c to check that if there is a hints
  command there is a dysymtab command and if the nhints is non-zero it matches
  the nundefsym value.  Also added check in dyld_order() in checkout.c to
  check the order of the local, external and undefined symbol indexes in
  the dysymtab command.
- Fixed bugs in breakout() in breakout.c where if one of the ofile routines
  set errors to non-zero the breakout code continued on and used
  ofile.arch_flag.name which could be NULL when it called savestr() and caused
  a crash.  This happened when an new load command was added and the old code
  did not know about it, printed a message but later crashed.

Changes for the 5.9 release (the cctools-369 release):
- Added code in check_object() in checkout.c to deal with the two-level hints
  command.  Also added code in dyld_order() in checkout.c to deal with the
  hints table itself.
- Changed copy_new_symbol_info() in writeout.c to take a the old and new hints
  command and writeout the hints.

Changes for the 5.9 release (the cctools-367 release):
- Added code in check_Mach_O() in ofile.c to check an LC_SUB_LIBRARY command.
  Added code in swap_object_headers() in swap_headers.c to call
  swap_sub_library_command().  Added swap_sub_library_command() to bytesex.c .
  Radar bug #2697458.
- Added code in check_Mach_O() in ofile.c to check an LC_TWOLEVEL_HINTS command.
  Added code in swap_object_headers() in swap_headers.c to call
  swap_twolevel_hints_command(). Added swap_twolevel_hints_command() and
  swap_twolevel_hint() to bytesex.c .  Radar bug #2558069.
- Fixed a problem with writeout() in writeout.c not deallocating the memory if
  the write() fails.  This is an issue with the redo_prebinding(3) API so it can
  effect update_prebinding(1).  Radar bug #2691920.

Changes for the 5.9 release (the cctools-364 release):
- Changed cpusubtype_combine() in best_arch.c (as well as NXCombineCpuSubtypes()
  in libmacho) for the ppc to select the highest subtype when there is not
  an exact match and neither is a 601.
- Changed cpusubtype_findbestarch() in best_arch.c (as well as
  NXFindBestFatArch() in libmacho) which had a problem with selecting the ppc
  cpusubtype when an exact match could not be found.  See Radar bug #2678019
  against exec(2).

Changes for the 5.9 release (the cctools-360 release):
- Fixed a bug in writeout() that showed up in strip(1) not correctly excluding
  N_SECT symbols marked with the attribute NO_TOC from the the table of
  contents.  Radar bug #2663483. The old libtool/ranlib Radar bug was #2494286.
- Changed the two calls to malloc() in get_arch_from_host.c to savestr() and
  changed the one call to malloc() in arch.c to savestr().  These were
  changed to allocate() because libdyld/ofi.c needs this and overrides
  savestr() so using allocate() would end up getting multiple definitions of
  _savestr (one from ofi.o and one from libstuff(allocate.o)).
- Changed breakout() in breakout.c to allocate and return its ofile struct for
  the arch it returns.  This will allow the redo_prebinding library API to
  call ofile_unmap() on this.
- Changed guess_short_name() to be __private_extern__ in guess_short_name.c .

Changes for the 5.9 release (the cctools-359 release):
- Fixed two places in ofile.c, three in fatal_arch.c and one in writeout.c that
  was using size_ar_name() and not using the member_name_size and member_name
  fields of the ofile struct for printing error messages.
- Added -Wno-long-double to shutup the compiler for
  <architecture/m88k/fp_regs.h>.

Changes for the 5.8 release (the cctools-357 release):
- Added support for the CPU_SUBTYPE_POWERPC_7450 in arch.c, best_arch.c and
  get_arch_from_host.c. Radar bug #2599869.

Changes for the 5.8 release (the cctools-356 release):
- Changed execute.c and ofile.c to include <libc.h> instead of <bsd/libc.h>

Changes for the 5.8 release (the cctools-345 release):
- Fixed a bug in guess_short_name() that showed up in seg_addr_table(1) that
  caused it to crash as it was doing a strcpy for the suffix when it should
  have been doing a strncpy() (Radar bug #2540744).

Changes for the 5.8 release (the cctools-344 release):
- Fixed a bug in swap_object_headers() which was missing the calls to swap
  the swap_sub_umbrella_command() and swap_sub_client_command().
- Changed cpusubtype_findbestarch() in best_arch.c in the loop looking for the
  lowest_model to save the current lowest_model so it finds the lowest_model.

Changes for the 5.8 release (the cctools-342 release):
- Added support for swapping the LC_SUB_CLIENT load command (Radar bug
  #2533649).

Changes for the 5.8 release (the cctools-341 release):
- Added support for swapping the LC_SUB_UMBRELLA load command (Radar bug
  #2530028).
- Pulled get_arch_from_host() out of arch.c and put it into get_arch_from_host.c
  so kld could avoid referencing host_info and mach_host_self.

Changes for the 5.7 release (the cctools-334 release):
- Changed guess_short_name()'s has_suffix argument to return_suffix to a pointer
  to the suffix so checksyms could check for "_debug".

Changes for the 5.7 release (the cctools-332 release):
- Changed the following routines to take a disablewarnings flag which was added
  to seg_addr_table(1): get_symfile_for_dylib() and get_dstfile_for_dylib() in
  dylib_roots.c and dstLocForDylib(), get_dstfile_for_dylib() and LocForDylib()
  in SymLoc.c (Radar bug #2482327).

Changes for the 5.7 release (the cctools-329 release):
- Changed iinit and ninit fields of the struct dylib_module in
  swap_dylib_module() in bytesex.c to iinit_iterm and ninit_nterm.
  Radar bug #2469527.

Changes for the 5.7 release (the cctools-327 release):
- ifdef'ed __GONZO_BUNSEN_BEAKER__ the code in seg_addr_table.c for its use of
  /Local to use /AppleInternal by default.
- ifdef'ed __GONZO_BUNSEN_BEAKER__ the code in and dylib_table.c for its use of
  /Local to use /MacOSX by default.  And added code ifndef'ed
  __GONZO_BUNSEN_BEAKER__ to use /AppleInternal/...

Changes for the 5.6 release (the cctools-324 release):
- Picked up the mods to SymLoc.c from Doug Wiebe in B&I which no longer does
  a chdir().  This allows the -seg_addr_table option to seg_addr_table not to
  be an absolute path.

Changes for the 5.6 release (the cctools-323 release):
- Found the bug in find_dylib_in_root() in dylib_roots.c which was not doing
  an fts_close() and causing "Too many open files" later.

Changes for the 5.6 release (the cctools-322 release):
- Added ifdef'ed for __SPACE__ and created a macro SYSTEM_LIBRARY in
  dylib_table.c in preparation for the directory changes.  /System/Library
  changing to /MacOSX/System.

Changes for the 5.6 release (the cctools-321 release):
- Moved SymLoc.m to SymLoc.c as it contains only 'C' code and the debugger was
  crashing when it was an Objective-C file.

Changes for the 5.6 release (the cctools-320 release):
- Added support for the new LC_SUB_FRAMEWORK load command to support "Guarding
  against direct linking of non-umbrella frameworks".  The files that swap
  load commands, bytesex.c and swap_headers.c, were update.  As part of this
  work the routine guess_short_name() was broken out of seg_addr_table.c into
  guess_short_name.c so it could be used by the static linker.
  Radar bug 2443212.

Changes for the 5.6 release (the cctools-319 release):
- Added the file seg_addr_table.c with the support routines for segment address
  tables.
- Added the file dylib_table.c which broke out some of the code that was used
  in checksyms(l) in to support routines used by it and the new
  seg_addr_table(l) tool.
- Picked up the file SymLoc.m from Doug Wiebe in B&I which returns the SYMROOT
  for a given release (used by the seg_addr_table(l) tool).  It currently uses
  Foundation which would cause build dependencies problems so this can't be
  used in a submission.  Doug is planning to do a version that does not use
  Foundation.
- Added the file dylib_roots.c which looks for a dynamic library in a given
  root (used by the seg_addr_table(l) tool).

Changes for the 5.5 release (the cctools-307 release):
- Added support for the CPU_SUBTYPE_POWERPC_7400 in arch.c and best_arch.c.
  Radar bug #2397523.

Changes for the 5.4 release (the cctools-300 release):
- Added logic to check_Mach_O() in ofile.c for checking the new LC_ROUTINES
  load command.
- Added swap_routines_command() for the new LC_ROUTINES command and also updated
  swap_headers().

Changes for the 5.3 release (the cctools-292 release):
- Added get_segalign_from_flag() to allow setting the default segment alignment
  to 4K for PowerPC and 8K for everything else.  Used by ld(1) in layout.c in
  layout() to fix Radar bug #2277625.

Changes for the 5.3 release (the cctools-286 release):
- Change the use of the i386 cpp macro to __i386__ and ppc to __ppc__

Changes for the 5.3 release, MacOS X bring up (the cctools-282 release):
- Added the source files arch_usage.c ofile.c print.c set_arch_flag_name.c
  to be shipped so that libtool can be built from the source given to MetroWerks
- Changed swap_ppc_thread_state_t() to not use bit fields for srr1, cr and exr
  to match the ppc_thread_state for Rhapsody/MacOS X.
- Changed host_self() and task_self() to mach_host_self() and mach_task_self()
  for MacOS X.  Also included "stuff/openstep_mach.h" for macros to allow it
  to still build on Openstep.  Also changed ifdef's __SLICK__ to __OPENSTEP__.
- Changed the Makefile to allow for RC_OS=macos for MacOS X builds.
- Changed vm_task_t to mach_port_t in vm_flush_cache.c to build for MacOS X.

Changes for the 5.2 release (the cctools-277 release):
- Added default cases for i386 and ppc subtypes to get_arch_from_host() which
  does a sprintf() for the unknown subtypes.  Also added code for unknown
  types to get_arch_name_from_types() insteading of returning "unknown".
  Radar bug #2241690.

Changes for the 5.2 release (the cctools-274 release):
- Removed all uses of CPU_SUBTYPE_586SX.  Added the pentium, pentiumpro,
  pentiumIImodel3 and pentiumIImodel5 subtypes. Updated cpusubtype_combine() and
  cpusubtype_findbestarch() deal with the new intel cpusubtypes. Radar bug
  #2231830.

Changes for the 5.2 release (the cctools-270 release):
- Fixed a bug in get_toc_byte_sex() which did not have code to deal with the
  extended format #1.

Changes for the 5.2 release (the cctools-267 release):
- Added many casts and dummy variables  to deal with MetroWerks compiler
  warnings (the ones with out -Wall). Radar bug #2227678.
- Added support for the 4.4BSD extend format #1 feature where the size of the
  name is in the ar_name field and the name follow the archive header before the
  contents of the member.  A member_name and member_name_size field have been
  added to the ofile struct to support this. Radar bug #1670513.

Changes for the 5.1 release (the cctools-261 release):
- Added the 603e, 603ev, and 750 to the table of arch types.
- Added the case for CPU_SUBTYPE_POWERPC_750 in get_arch_from_host() in arch.c
  (it had support for CPU_SUBTYPE_POWERPC_603e and CPU_SUBTYPE_POWERPC_603ev).
  (Radar 2213821)
- Changed cpusubtype_findbestarch() in best_arch.c for PowerPC subtypes.  If an
  exact match is not found the subtype will be picked from the following order:
	750, 604e, 604, 603ev, 603e, 603, ALL
  Note the 601 is NOT in the list above.  It is only picked via an exact match.
  (Radar 2213821)
- Changed cpusubtype_combine() in best_arch.c for for PowerPC subtypes.
  Combining with the ALL type becomes the other type. Combining anything with
  the 601 becomes 601.  All other non exact matches combine to the ALL type.
  (Radar 2213821)

Changes for the 5.1 release (the cctools-254 release):
- Fixed a bug in swap_dylib_module() where it did not swap the two objc fields.

Changes for the 5.1 release (the cctools-252 release):
- Removed the m98k arch entry from arch.c and reorder the table to put the
  Rhapsody archs first. 

Changes for the 5.1 release (the cctools-247 release):
- Added MKDIRS if code to the Makefile to build native on Rhapsody.
- Changed the Makefile to use gnutar instead of tar because it works on Rhapsody
  where tar does not.
- Changed the Makefile so profiled objects get built for RC_OS teflon.
- Changed the code ifdef __TEFLON__ to ifndef __SLICK__ (where __TEFLON__ will
  nolonger be defined for Rhapsody builds) so the default builds will be native
  Rhapsody builds.  The changes were to execute.c, ofile.c and writeout.c .

Changes for the 5.0 release (the cctools-240 release):
- Moved fatals.c in the Makefile from CFILES2 to CFILES1 so it can be used by
  the GNU assembler source.

Changes for the 5.0 release (the cctools-239 release):
- Fixed a bug in get_arch_from_host() for the family cpusubtype not getting
  set correctly for 603, 604 and 604e

Changes for the 5.0 release (the cctools-235 release):
- Added PPC_RELOC_JBSR to reloc_has_pair() in reloc.c .
- Fixed a warning about testing an unsigned value for less than zero in
  writeout.c

Changes for the 5.0 release (the cctools-230 release):
- Added ppc604e to the arch table and to get_arch_from_host().  This is what
  some kernels on some of Power Mac 8500 is returning today.
- Added a cast to writeout.c to get rid of a warning and fix a bug where it
  was testing ran_off < 0 which is now unsigned.

Changes for the 5.0 release (the cctools-226 release):
- Added ppc604 to the arch table and to get_arch_from_host().  This is what
  the kernel on the Power Mac 8500 is returning.

Changes for the 5.0 release (the cctools-224 release):
- Changed including <bsd/ranlib.h> to <mach-o/ranlib.h> which uses unsigned long
  instead of off_t (64 bits on Teflon).
- Fixed a bug in the __TEFLON__ execute code that was not testing the return
  status for 0.
- Added the routines swap_ppc_float_state_t() and swap_ppc_exception_state_t()
  to swap the other ppc flavors to byteswap.c and swap_headers.c .
- Changed cpusubtype_findbestarch() for PowerPC to deal with the 603 and 604
  types the best I can.
- Changed cpusubtype_combine() for PowerPC to combine any specific cpusubtype
  with the CPU_SUBTYPE_POWERPC_ALL and return the specific cpusubtype.  Made
  a cut at combining the 603 and 604 types.

Changes for the 5.0 release (the cctools-222 release):
- Added get_stack_direction_from_flag(), get_stack_addr_from_flag() and
  get_stack_size_from_flag() routines to arch.c.

Changes for the 5.0 release (the cctools-221.1 and cctools-222 releases):
- Picked up changed to the Makefile to not build profile objects for teflon.
  This is because the PowerPC compiler core dumps with -pg.

Changes for the 5.0 release (the cctools-221 release):
- Picked up the changes for the correct Rhapsody thread state changes into
  ofile.c, bytesex.c and swap_headers.c.

Changes for the 5.0 release (the cctools-215 release):
- Updated reloc_is_sectdiff() and reloc_has_pair() in reloc.c for the PowerPC
  relocation types PPC_RELOC_HI16_SECTDIFF, PPC_RELOC_LO16_SECTDIFF and
  PPC_RELOC_HA16_SECTDIFF.

Changes for the 5.0 release (the cctools-212 release):
- Added the ppc601 and ppc603 specific arch types.  The specific types at this
  point are treated as mutually exclusive and can't combine with each other and
  only can combine with the ALL type.

Changes for the 5.0 release (the cctools-211 release):
- Integrated changes to allow teflon builds (RC_OS=teflon or RC_OS=nextstep) to
  not build shlib in the Makefile.  Also changes in the sources to not
  include <libc.h> for __TEFLON__ builds.

Changes for the 5.0 release (the cctools-210 release):
- Changed everything from using m98k to ppc.

Changes for the 4.0 release (the cctools-193 release):
- Changed the way what appears to be a malformed fat file for files that start
  with the FAT_MAGIC to treat them as unknown files rather than malformed fat
  files.  This fixes the problem checksyms(l) was having with java applets which
  use the same magic number (bug #63886).

Changes for the 4.0 release (the cctools-185 release):
- Changed checkout.c to deal with ld -r files vs. .o files from the assember
  which differ as the indirect symbol table is between the symbol table and
  string table in the ld -r case. This was to fix redo_prebinding(1) but also
  fixes strip.
- Changed checkout.c to deal with segments marked SG_FVMLIB so not to complain
  about them.  This was to fix redo_prebinding(1).
- Changed ofile.c for i860 thread status on non-m68k machines to not check or
  swap the thread status which the struct has different layout on non-m68k
  machines. This was to fix redo_prebinding(1).

Changes for the 4.0 release (the cctools-168 release):
- Change the version numbers of dynamic library to the form X[.Y[.Z]] to match
  how next does versioning of it's projects.  This effected libtool(1), ld(1),
  otool(1), dyld, libstuff(version_number.c) and man pages for ld and libtool
  bug #55627). The change here is the new file version_number.c.

Changes for the 4.0 release (the cctools-166 release):
- Changed the use of the cpp macro DYNAMIC (set by the Makefile) to __DYNAMIC__
  (set by the compiler when -dynamic is in effect).

Changes for the 4.0 release (the cctools-161 release):
- Added in the Makefile passing -DDYNAMIC for things built with -dynamic
  Then ifdef'ed out the const in arch.c for arch_flags[] with DYNAMIC so that
  when this is put in a dynamic shared library it does not have relocation
  entries in a read-only section.

Changes for the 4.0 release (the cctools-154 release):
- To fix a bug in stripping .o files compiled dynamic the routine
  copy_new_symbol_info() needed to base it's copy output on if there was an
  dynamic symbol table command in the object not on if it had MH_DYLDLINK in
  the mach header.  So a pointer to the old dynamic symbol table command is now
  passed and if not null the full dynamic symbol table is copied out.

Changes for the 4.0 release (the cctools-150 release):
- Fixed some problems in ofile_process() with passing the correct arch_name
  argument to processor() for fat files.
- Changed the profiled objects to be compiled with -dynamic.
- Changed everything to use __private_extern__ .

Changes for the 4.0 release (the cctools-149 release):
- Fixed a bug in ofile_process() in ofile.c for #ifdef OTOOL when an arch was
  specified as for cross bytesex.  The problem was the #ifdef OTOOL does not
  swap the mach header and it was being used in ofile_process() to select the
  arch.  Some ifdef'ed OTOOL was added (bug #50350).

Changes for the 4.0 release (the cctools-148 release):
- Changed how the libstuff directory builds.  It now builds 4 libraries.  One
  for the following uses: static, dynamic, profiled and shlib.

Changes for the 4.0 release (the cctools-146 release):
- Fixed a bug in swap_sparc_thread_state_regs() where the reserved field of
  the psw was not included in the swap code (bug #49685).  This was CCC
  approved for 3.3risc and a cctools-142.1 clone with just this fix was
  submitted.

Changes for the 4.0 release (the cctools-145 release):
- Changed writeout() to update the time stamp for dylibs.

Changes for the 4.0 release (the cctools-143 release):
- Added support to loop through the modules of a dylib in ofile_process() when
  the new prameter dylib_flat == FALSE.  This is use in nm(1) to print the
  symbol tables of a dylib.

Changes for the 4.0 release (the cctools-140 release):
- Changed vm_flush_cache() to define __3_3_User_with_hppa__ so it will build
  for 4.0.

Changes for the 4.0 release (the cctools-133 release):
- Picked up the sparc changes to byte_sex.c and swap_headers.c that swaps the
  floating-point sparc thread state.
- Picked up the sparc changes to check_Mach_O() in ofile.c for checking and
  swaping the floating-point thread.
- Fixed a problem in strip for cross byte sex striping when the dynamic
  symbol table info is present.  In strip.c the problem was the new symbolic
  tables were not swapped to the target byte sex.  And in writeout.c in libstuff
  the problem was that parts of the headers were used after they were swapped.

Changes for the 4.0 release (the cctools-132 release):
- Picked up the sparc changes to reloc.c for the sparc relocs.
- Picked up the sparc changes to byte_sex.c and swap_headers.c that swaps the
  sparc thread state.
- Picked up the sparc changes to check_Mach_O() in ofile.c for checking the
  sparc thread state.
- Fixed a logic bug in cpusubtype_findbestarch() where the loops after the
  cases on the cputype were not checking to make sure the cputype of the fat
  arch struct was right before checking the subtype.

Changes for the 3.3 release (the cctools-128 release):
- Fixed a bug in symbol_string_at_end() in checkout.c which was not using the
  object->object_size to test if the LINKEDIT segment covered the end of the
  file.

Changes for the 3.3 release (the cctools-125 release):
- Fixed a bug in get_arch_from_host() in arch.c for the hppa where the family
  cpu_subtype was getting set to a specific subtype CPU_SUBTYPE_HPPA_7100 for
  that host.

Changes for the 3.3 release (the cctools-124 release):
- Added a temporary error message to check_object() in checkout.c to print the
  error "current limitation, can't process files with LC_DYSYMTAB load command"
  so the strip(1), nmedit(1) and indr(l) for now print a reasonable message
  when such a file is used.

Changes for the 3.3 release (the cctools-119 release):
- Picked up first set of changes for sparc target.

Changes for the 3.3 release (the cctools-118 release):
- Fixed a bug that crashed strip when doing a strip -S on a library and a member
  had no symbol table command.  The bug was in writeout.c in libstuff at line
  490 where it indirected thought the pointer to the symbol table command
  without checking if it was NULL.

Changes for the 3.3 release (the cctools-104 release):
- Changed the name of the first parameter of swap_ident_command() from id to
  id_cmd (in bytesex.c).  The compiler is treating this as a reserved word.

Changes for the 3.3 release (the cctools-102 release):
- Integrated in the hppa support.
  Changed the rounding in calc_hppa_HILO() in hppa.h to round to nearest (add
  half then round) from round up.
created libstuff/hppa.c and include/stuff/hppa.h for cctools-102
     Contains the definition of:
	 calc_hppa_HILO()
different libstuff/arch.c (integrated for cctools-102)
     Using cctoolshppa-37.  New stuff for hppa cputype.
different libstuff/best_arch.c (integrated for cctools-102)
     Using cctoolshppa-37.  New stuff for hppa cputype.
different libstuff/bytesex.c (integrated for cctools-102)
     Using cctoolshppa-37.  New stuff for hppa cputype.
different libstuff/ofile.c (integrated for cctools-102)
     Using cctoolshppa-37.  New stuff for hppa cputype.
different libstuff/swap_headers.c (integrated for cctools-102)
     Using cctoolshppa-37.  New stuff for hppa cputype.

Changes for the 3.2 release (the cctools-25 release):
- Added Makefile support for installGNUsrc and fromGNUsrc.

Changes for the 3.1 release (the cctools-22 release):
- Changed ofile_map() when one architecture is specified to first look for that
  specific cpusubtype then the family.  This caused gprof(1) to fail to open
  a fat file (or fat shlibs) that had an i486 subtype (bug #31857).
- Added to arch.c (bug #32553):
    { "any",	CPU_TYPE_ANY,	  CPU_SUBTYPE_MULTIPLE },
    { "little",	CPU_TYPE_ANY,	  CPU_SUBTYPE_LITTLE_ENDIAN },
    { "big",	CPU_TYPE_ANY,	  CPU_SUBTYPE_BIG_ENDIAN },

Changes for the 3.1 release (the cctools-15 release):
- Fixed a bug where cpusubtype_findbestarch() would fail to select an i486
  object from a fat file when a starting with a CPU_SUBTYPE_I386_ALL.
  The fix was that cpusubtype_findbestarch() was changed such that
  previously when it failed it would pick something (architecture dependent)
  that will work for the cputype and will successfully combine when
  cpusubtype_combine() is applied to the two cpusubtypes.

    For the i386 architecture the selection is the lowest in order of 
    CPU_SUBTYPE_I386_ALL, CPU_SUBTYPE_486, CPU_SUBTYPE_486SX, CPU_SUBTYPE_586
    and CPU_SUBTYPE_586SX starting with the given cpusubtype.

    For the m68k architecture (where the cpusubtypes do NOT run on anything
    other than that implementation) the selection favors the
    CPU_SUBTYPE_MC68040 over the CPU_SUBTYPE_MC68030_ONLY when starting
    with the cpusubtype of CPU_SUBTYPE_MC680x0_ALL.
  Bug #30765.
- Removed the kludged mach/m98k/thread_status.h with only an entry point and
  added the code to swap the grf thread with the real entry point.

Changes for the 3.1 release (the cctools-13 release):
- Added the m98k (PowerPC) architecture.  This includes a kludged
  mach/m98k/thread_status.h with only an entry point.

Changes for the 3.1 release (the cctools-10 release):
- Changed the cpusubtypes to use the correct #defines from <mach/machine.h> in
  arch.c, ofile.c and swap_headers.c .  Also added the i486, i486SX, i586, and
  i586SX arch flags and code to back them up.

Changes for the 3.1 release (the cctools-8 release):
- Changed the checking in check_archive to only look at the cputype and not at
  both the cputype and cpusubtype (this will change as the correct handling of
  the cpusubtype is implemented).

Changes for the 3.1 release (the cctools-6 release):
- Fixed a bug in get_arch_from_host() where it did not recognize the 486 cpu
  subtype.
- Hacked in a fix for a basic algorthim flaw in ofile_process() in ofile.c as
  it makes a second pass over the mapped ofile it looses the information as
  to which bytesex the objects were because it swaps the memory in place.
  So a call to ofile_unmap() and ofile_map() were placed after the first
  loop.  (this still needs a better fix).

Changes for the 3.1 release (the cctools-5 release):
- Picked up the lono team mods to ofile.c and swap_headers for the change to
  the i386 thread_status.h.
- Picked up the lono team mods to bytesex.c for some new code to swap 16-bit
  address segments.
- Fixed a bug in ofile_next_member() in ofile.c where if the next member was not
  an object file the fields (object_*, mh, load_commands) were not zeroed out.
  This caused libtool(1) to think an archive member was an object file when it
  was not.

Changes for the 3.1 release (the cctools-4 release):
- Changed the arch name of ix86 to i386.
- Fixed a bug in get_arch_from_host() in arch.c that set the cpusubtype for the
  family arch_flags wrong.  This needed to be set based on the cputype and
  hard coded for each cputype.  The problem was that the 040 cpusubtype was
  being set for the family arch_flags when the 030 cpusubtype was needed.

Changes for the 3.0 release (the -56 compiler release):
- Added hash_string.c from the mkshlib directory to libstuff.

Changes for the 3.0 release (the -56 compiler release):
- Picked up some fixes for ofile.c where host_byte_sex was not set early enough
  in some of the functions.

Changes for the 3.0 release (the -53 compiler release):
- Added SWAP_FLOAT().

Changes for the 3.0 release (the -49 compiler release):
- Changed {BIG,LITTLE}_ENDIAN to __{BIG,LITTEL}_ENDIAN__ as the cc-49 cc driver
  will define them.
- Changed the Makefile to meet the RC api.

Changes for the 3.0 release (the -44 compiler release):
- Created the libstuff directory.
