Private_CompilerTools.html   [plain text]


<HTML>
<!--This file created 4/21/08 10:02 AM by Claris Home Page version 3.0-->
<HEAD>
   <TITLE>Private Compiler Tools Release Notes</TITLE>
   <META NAME=GENERATOR CONTENT="Claris Home Page 3.0">
   <X-CLARIS-WINDOW TOP=92 BOTTOM=981 LEFT=456 RIGHT=1203>
   <X-CLARIS-TAGVIEW MODE=minimal>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<P><FONT SIZE="-1">Mac OS X Xcode 3.1 Developer Release Copyright
2008 by Apple Computer, Inc. All Rights Reserved.</FONT></P>

<H2>Private Mac OS X Xcode 3.1 Developer Release:<BR>
Compiler Tools (cctools-698)</H2>

<P>This file contains release notes for the 5.25 release of the
Compiler Tools for the Mac OS X Xcode 3.1 Developer Release. This
file contains information about the following topics:</P>

<UL>
   <LI>The Mac OS X Mach-O GNU-based assemblers</LI>
   
   <LI>The classic Mac OS X 32-bit Mach-O static link editor</LI>
   
   <LI>Mach-O object tools (<B>nm</B>, <B>otool</B>, and so
   on)&nbsp;</LI>
</UL>

<H2>Notes Specific to Release 5.25 (Mac OS X Xcode 3.1 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-697 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added support to allow libtool(1), and ranlib(1), to work with
   LLVM bitcode files so static archive targets work with LTO. Radar
   bug #5712460.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-696 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools sources to not build the ARM assembler for
   the Opal train. Radar bug #5844124.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-695 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools Makefiles to use -iwithsysroot when
   building libmacho and libstuff.</LI>
   
   <LI>Changed the cctools &lt;mach/arm/thread_status.h&gt; guard to
   match xnu's of _ARM_THREAD_STATUS_H_ .</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-694 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools Makefile to use -iwithsysroot when
   building libkld.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-693 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in strip(1) that caused it to crash on stipping an
   MH_PRELOAD filetype. Radar bug #5834516.</LI>
   
   <LI>Changed the cctools Makefile to build libkld for releases:
   Vail, SugarBowl, BigBear and Homewood.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-692 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Updated otool(1) to print Objective-C 2.0 information for arm
   binaries. Radar bug #5739542.</LI>
   
   <LI>Changed otool(1) to print ABSOLUTE for indirect symbol table
   entries in an i386 binary marked with only INDIRECT_SYMBOL_ABS.
   Radar bug #5829053.</LI>
   
   <LI>Fixed a spurious otool -I error. Radar bug #5728302.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-691 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Updated strip(1) to support binaries that use lazy dylibs.
   Radar bug #5828589.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-690 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added a definition for a new load command for iPhone app
   encryption. Radar bug #5811987.</LI>
   
   <LI>Updated cctools to not choke on iPhone binary with new
   "encrypted binary" load command. Radar bug #5811994.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-689 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools sources to not build the efitools for
   iPhone build as a work around to avioid a compiler problem. Radar
   bug #5826370.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-688 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the arm assembler that incorrectly produced
   "selected processor does not support" error messages when
   -force_cpusubtype_AL was used. Radar bug #5817558</LI>
   
   <LI>Changed the assembler to allow (L3-L10)/2 expressions in .byte
   expressions. Radar bug #5819903.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-687 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added cctools support for lazy dylib loading. Radar bug
   #5760930.</LI>
   
   <LI>Fixed bug in mtoc(1) to correctly pick the next available
   address in a Mach-O file for the .reloc PECOFF section when the
   Mach-O file has a __LINKEDIT segment.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-686 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added checking for undefined symbols (64-bit) in mtoc(1).</LI>
   
   <LI>Added cctools support for lazy dylib loading. Radar bug
   #5760930.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-685 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added the "-section_alignment &lt;hex_value&gt;" option to
   mtoc(1).</LI>
   
   <LI>In mtoc(1) added a check to make sure the headers are not
   mapped on top of its sections in the PECOFF output.</LI>
   
   <LI>Added alternate names for the subsystem arguments in
   mtoc(1).</LI>
   
   <LI>Added checking for undefined symbols (32-bit only so far) in
   mtoc(1).</LI>
   
   <LI>Changed project to not build unneeded support libraries for
   libkld for SnowLeopard. Radar bug #5780592.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-684 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Updated mtoc(1) to deal with MH_EXECUTE file types and MH_PIE
   flag.</LI>
   
   <LI>Again more changes for arm support. Radar bug #5490815</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-683 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Three more changes for arm support. Radar bug #5490815</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-682 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Two more changes for arm support. Radar bug #5490815</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-681 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Still more changes for arm support. Radar bug #5490815</LI>
   
   <LI>Updated cctools support for Mac OS X deployment target support
   and changed the highest know shipping version to 10.6 .</LI>
   
   <LI>Picked up a change to the otool Makefile to compile
   print_objc.o with -fobjc-abi-version=1 .</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-680 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added the -A option to codesign_allocate(1). Rdar bug
   #5681427.</LI>
   
   <LI>Changed codesign_allocate(1) to be a member of
   com.apple.tool.codesign_allocate . Rdar bug #5681503.</LI>
   
   <LI>Added the new mtoc(1) program. Radar bug #5536661,</LI>
   
   <LI>Fixed the SSE4.1 pextrq and pinsrq instructions which did not
   have a REX.W byte.</LI>
   
   <LI>Fixed the SSE4.1 insertps instruction where it had the second
   parameter as a general register not a xmm register. Radar bug
   #5650346.</LI>
   
   <LI>Removed the sources changes to #ifndef __OPEN_SOURCE__ to
   isolate arm sections of cctools sources that was put in for Radar
   bug #5326431.</LI>
   
   <LI>More changes for arm support. Radar bug #5490815</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-679.3 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changes for arm support. Radar bug #5490815.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-679.2 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project to no longer build libkld for
   SnowLeopard. Radar bug #5698612.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-679.1 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with symlist creation failing for some ppc
   projects. Radar bug #5630991.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-679 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Backed out the changed to strip(1) so that it will strip DWARF
   debugging symbols by calling ld(1) to do the stripping for Radar
   bug #5343015. Because of the ld(1) bug 5675774. Radar bug
   #5660086.</LI>
   
   <LI>Fixed a problem with symlist creation failing for some ppc
   projects. Radar bug #5681670.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-678 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem in the strip(1) program which caused it to
   crash when run on a file without a dynamic symbol table that was
   to be fully stripped. The change for Radar bug #5008421, was
   missing a check for a null dynamic symbol table pointer. Radar bug
   #5588769.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-677 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem in the x86_64 assembler caused by the change
   for Radar bug #5122861, which was incorrectly assembling
   rip-relative references. Radar bug #5584168.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-676 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools Makefiles to not use -Wno-long-double and
   -no-cpp-precomp so it will build with gcc-4.2. Radar bug
   #5563553.</LI>
   
   <LI>Fixed a problem in the x86_64 assembler which incorrectly
   added in offsets into pcrel instructions. Radar bug #5326431.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-675 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Added the Logical and and or operators in the assembler. Radar
   bug #4110102.</LI>
   
   <LI>Fixed ranlib(1) to not overwrite files without write
   permission. Radar bug #4242330.</LI>
   
   <LI>Added the .balign assembler directive. Radar bug
   #4352052.</LI>
   
   <LI>Changed the assembler to accept .endmacro as .endm . Radar bug
   #4361968.</LI>
   
   <LI>Changed the assembler to accept carrage returns in the input
   assembly file. Radar bug #4372927.</LI>
   
   <LI>Fixed the assembler so that the value of symbol set with
   initially unresolved subtract expression can be changed. Radar bug
   #4433066.</LI>
   
   <LI>Fixed a bug in otool(1) that was giving a warning about a
   section offset being past end of file for 0-length sections at end
   of file. Radar bug #4455994.</LI>
   
   <LI>Changed the assembler directive .machine to allow the argument
   "all". Radar bug #4512478.</LI>
   
   <LI>Changed the assembler to make a section difference relocable
   subtraction expression using assembler temporay labels where one
   is at the end of the section into an assembly time constant and
   there are no non-assembler temporay labels between them. Radar bug
   #4515996.</LI>
   
   <LI>Fixed a bug in the asembler when it was generating SLINE stabs
   with -g so that the address is at the beginning of the
   instruction. Radar bug #4521858.</LI>
   
   <LI>Fixed the x86_64 assembler to correctly assemble absolute
   64bit addressing. Radar bug #4534958.</LI>
   
   <LI>Fixed some typos in the libtool(1) man page. Radar bug
   #4574762.</LI>
   
   <LI>Added pushfd and popfd as the same as pushf and popf for the
   i386 assembler. Radar bug #4676279.</LI>
   
   <LI>Fixed the -extract_family option in lipo(1) so it produced
   correct output files. Radar bug #4695968.</LI>
   
   <LI>Changed the cctools source to use the prototype of
   _NSetMachExecuteHeader from crt_externs.h . Radar bug
   #4696889.</LI>
   
   <LI>Cleaned up the libtool(1) BUGS section of the man page to
   reflect the current behavior. Radar bug #4708229.</LI>
   
   <LI>Fixed a bug in otool(1) that did not show all bytes of i386
   unknown opcodes. Radar bug #4760658.</LI>
   
   <LI>Added the PowerPC simplified mnemonic "mtvrsave". Radar bug
   #4955676.</LI>
   
   <LI>Fixed a typo in the nmedit(1) man page. Radar bug
   #5068920.</LI>
   
   <LI>Fixed a bug in the x86_64 assembly and dissembly of a
   rip-relative call. Radar bug #5122861.</LI>
   
   <LI>Fixed a bug in otool(1) that did not free memory between
   corefiles causing it to run out of memory and crash. Radar bug
   #5156499.</LI>
   
   <LI>Fixed a typo on the libtool(1) man page. Radar bug
   #5160229.</LI>
   
   <LI>Fixed a bug in otool(1) that was preventing it from printing
   labels in x86_64 disassembly. Radar bug #5186450.</LI>
   
   <LI>Fixed some typos in the redo_prebinding error messages. Radar
   bug #5188349.</LI>
   
   <LI>Changed the assembler to print Apple Inc. not Apple Computer,
   Inc. Radar bug #5197757</LI>
   
   <LI>Fixed a problem with nm(1) that would print architecture is
   missing in some cases. Radar bug #5205751.</LI>
   
   <LI>Added printiing of PECOFF base relocation entries symbolically
   in otool(1). Radar bug #5218665.</LI>
   
   <LI>Added support in the assembler for local labels beyond 9.
   Radar bug #5256532.</LI>
   
   <LI>Changed the x86 assembler to allow the implicit xmm0 first
   register argument to be coded with blendvpd, blendvps and
   pblendvb. Radar bug #5268692.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-674 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed &lt;mach-o/nlist.h&gt; so that it has it is wraped
   with extern "C" for C++ compiles. Radar bug #5419852.</LI>
   
   <LI>Changed strip(1) so that it will strip DWARF debugging symbols
   by calling ld(1) to do the stripping. Radar bug #5343015.</LI>
   
   <LI>Fixed strip(1) to correctly do a full symbol strip on a
   relocatable .o file if it would only have LOCAL indirect symbol
   table and local relocation enties. Radar bug #5008421.</LI>
   
   <LI>Fixed otool(1) to not crash if given a malformed object file
   that had a segment command with a very large number of sections.
   Radar bug #5405675.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-673 for
the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed redo_prebinding to not put LC_PREBOUND_DYLIB commands
   in prebound images if MACOSX_DEPLOYMENT_TARGET is 10.4 or later.
   Radar bug #5350524.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-672 for
the 5.24 Mac OS X Xcode 3.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the sources to #ifndef __OPEN_SOURCE__ to isolate arm
   sections of cctools sources. Radar bug #5326431.</LI>
</UL>

<H2>Notes Specific to Release 5.24 (Mac OS X Xcode 3.0 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-671 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed an issue with the change below so that a common symbol
   continues to have an external relocation entry. Radar bug
   #5259877.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-670 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the x86_64 assembler to use local relocation entries
   in a debug section for a defined symbol. Radar bug #5259877.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-669 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the arm assembler to provide a diagnostic for swp and
   swpb instructions if &lt;Rn&gt; is the same as &lt;Rm&gt; or
   &lt;Rd&gt;. Radar bug #5281523.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-668 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the assembler back to only warn about duplicate macro
   definitions.</LI>
   
   <LI>Fixed problems in the cctools source when compiled for 64-bit
   targets that would cause an undefined symbol for SWAP_LONG.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-667.2 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed codesign_allocate(1) to never update the LC_ID_DYLIB
   timestamps. Radar bug #5374218.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-667.1 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem codesign_allocate(1) that was incorrectly
   rounding up the __LINKEDIT segement for 64-bit Mach-O files to 8K
   not 4K. Radar bug #5363873.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-667 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changes to support the arm architecture were merged in. Radar
   bug #5241042.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-666 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problme with the change below to strip(1)'s -c option
   to always remove the LC_CODE_SIGNATURE load command and signature
   data from the output. Radar bug #5207629.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-665 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed strip(1)'s -c option to always remove the
   LC_CODE_SIGNATURE load command and signature data from the output.
   Radar bug #5207629.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-664 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Added support for the Intel SSE4.1 and SSE4.2 instructions.
   Radar bug #4943015.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-663 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug that would cause an internal error when ranlib(1)
   was used on two or more libraries. Radar bug #5169741.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-662 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed ld_classic(1)'s -macosx_version_min argument and
   MACOSX_DEPLOYMENT_TARGET to support minor version numbers. Radar
   bug #5132019.</LI>
   
   <LI>Changed the as(1) man page's reference to the the assembler
   manual. Radar bug #5143784.</LI>
   
   <LI>Changed libtool(1) to not make the computer unresponsive when
   building large static libraries. Radar bug #5052598.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-661 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the x86_64 assembler(1) to allow the .mod_init_func
   and .mod_term_funcs directives when -static is used. Radar bug
   #5127668.</LI>
   
   <LI>Changed kld(3) to keep the LC_UUID (if any) from the last
   object loaded in the linked output. Radar bug #5137807.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-660 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed strip(1) to not change LC_ID_DYLIB timestamp in
   unprebound dylibs. Radar bug #5093170.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-659 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed the header file &lt;mach-o/swap.h&gt; to include an
   extern "C". Radar bug #5075908.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-658 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed otool(1) to handle the change of the ObjcC 2.0 section
   names for the -ov option. Radar bug #5066149.</LI>
   
   <LI>Fixed otool(1) for disassembly of the MOV instruction with
   64-bit offsets for "accumulator from memory" and "accumulator to
   memory" and also use the mnemonic "movabsl". Radar bug
   #4693534</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-657 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in nmedit(1) and strip(1) where when run on a
   64-bit relocatable object files where the string table was on an 8
   byte offset in the file with padding before it, it would produce a
   corrupt output file. Radar bug #5054452.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-656 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in nm(1) where when run with a -arch flags on a
   fat file archive of the non-native bytesex it crashes. Radar bug
   #5055223.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-655 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in codesign_allocate(1) such that when run on a
   64-bit Mach-O file when the string table offset is not on an 8
   byte boundary the resulting output file is malformed such that the
   symbol names appear incorrect. Radar bug #5047066</LI>
   
   <LI>Added MH_PIE to &lt;mach-o/loader.h&gt;. Radar bug
   #5041291.</LI>
   
   <LI>Fixed a bug in nm(1) where when run with multiple -arch flags
   on a fat file does not print symbol names. Radar bug
   #5047924.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-654 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in strip(1) so that when the -no_uuid option is
   used on a binary with a&nbsp;LC_SEGMENT_SPLIT_INFO load command it
   does not produce a corrupt binary. Radar bug #5033393.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-653 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed libtool(1) to work with Xcode coexistence and correctly
   open files for -lx options based on the -syslibroot and -L flags.
   Radar bug #5029099.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-652 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Updated otool(1) to print the Objective-C garbage collection
   status. Radar bug #4983418.</LI>
   
   <LI>Added support for the LC_REEXPORT_DYLIB load command. Radar
   bug #4986624.</LI>
   
   <LI>Fixed gprof(1) to work with dyld shared cache. Radar bug
   #4960162.</LI>
   
   <LI>Backed out the change for Radar bug #4930693 in kld(1) when it
   called the address_func it is passed the allocated_size of memory
   including the symbol table. Radar bug #4994738</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-651 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Added project version information to libmacho. Radar bug
   #4980378.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-650 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld_classic(1) which was causing a crash when
   linking against a dyanmic library built by the unified linker that
   has an LC_SEGMENT_SPLIT_INFO load command. Radar bug
   #4953247.</LI>
   
   <LI>Fixed a bug in nm(1) that caused it to show the symbols
   swapped when multiple -arch flags were specified for a fat file.
   Radar bug #4970647.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-649 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed kld(1) so when it calls the address_func it is passed
   the allocated_size of memory including the symbol table. Radar bug
   #4930693.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-648 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Added an open source cctools.plist. Radar bug #4898129.</LI>
   
   <LI>Fixed a bug in ld_classic(1) which was getting an internal
   error when the -s option (strip all symbols) was used and there
   was a symbol that was both a private external and marked
   referenced dynamically. Radar bug #4885434.</LI>
   
   <LI>Updated otool(1)'s -ov option to print out the objc 2.0
   metadata in 64-bit objects. Radar bug #4560930.</LI>
   
   <LI>Added S_DTRACE_DOF to &lt;mach-o/loader.h&gt;. Radar bug
   #4918330.</LI>
   
   <LI>Added checks to ld_classic(1) so that you can't create a bad
   .o file with -r when the r_address field of a scattered relocation
   over flows. Radar bug #4921122.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-647 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Enhanced otool(1)'s -s option when printing
   S_MOD_{INIT,TERM}_FUNC_POINTERS section types to print them as
   pointers with the -v option and print symbol names of the pointers
   with the -V option. Radar bug #4880624.</LI>
   
   <LI>Ported gprof(1) to work with 64-bit Mach-O files. Radar bug
   #4601274.</LI>
   
   <LI>Changed the cctools project to now install these private
   release notes in
   /Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/Contents/Resources/Documents/documentation/DeveloperTools
   for Xcode coexistence.</LI>
   
   <LI>Fixed bugs in otool(1), lipo(1), nm(1), and strings(1) that
   caused crashes with malformed fat file when the number of
   architectures in the fat header is a large number.&nbsp; Radar bug
   #4860769.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-646 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed problems with codesign_allocate(1) not correctly
   matching architectures with new&nbsp;capability bits set in the
   cpusubtype. Radar bug #4849153.</LI>
   
   <LI>Changed the cctools project to stop installing
   the&nbsp;deprecated&nbsp;dyld_debug(3) man page. Radar bug
   #4734305.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-645 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the assembler driver, /usr/bin/as, to execute the
   target specific assemblers relative to where the assembler driver
   is installed. Radar bug #4841943.</LI>
   
   <LI>Fixed otool(1)'s Intel disassembler to correctly disassemble
   call &lt;constant&gt;. Radar bug #4523901.</LI>
   
   <LI>Fixed otool(1)'s Intel disassembler to correctly use the rep
   not repz prefix with the instructions ins, outs, movs, lods, and
   stos. Radar bug #4467453.</LI>
   
   <LI>Fixed otool(1)'s 64-bit Intel disassembler to correctly
   disassemble the MOV accumulator to memory operand as a 64-bit
   immediate. Radar bug #4693534.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-644 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed strip(1) and otool(1) to support LC_RPATH
   commands.&nbsp;Radar bug #4822880.</LI>
   
   <LI>Changed ld_classic(1) to support libtool(1) options. Radar bug
   #4758790.</LI>
   
   <LI>Changed the header file &lt;mach-o/getsect.h&gt; to be
   protected by extern "C" for use in C++ apps. Radar bug
   #4814441.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-643 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed otool(1) -c work with 64-bit Mach-O files. &nbsp;Radar
   bug #4458775</LI>
   
   <LI>Added support for the CPU_SUBTYPE_VEO_3 and CPU_SUBTYPE_VEO_4
   cpusubtypes. Radar bug #4799550.</LI>
   
   <LI>Fixed a problem with the libredo_prebinding API's leaking file
   descriptors and mmap(2) mappings. Radar bug #4800981.</LI>
   
   <LI>Fixed a problem with checksyms(l) failing to work with empty
   files. Radar bug #4795458.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-642 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed strip(1) -X on x86_64 objects to silently do nothing.
   Radar bug #4800628.</LI>
   
   <LI>Ported cmpdylib(1) to work with 64-bit Mach-O files. Radar bug
   #4040804.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-641 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed needs_redo_prebinding(3) when passed a Mach-O file
   that only has 64-bit architectures to return NOT_PREBOUND. Radar
   bug #4788385.</LI>
   
   <LI>Fixed otool(1) so it understands the x86 branch
   prediction.&nbsp;Radar bug #4474395</LI>
   
   <LI>Fixed the 64-bit assemblers not allowing a value larger
   than&nbsp;2GB with a .lcomm directive.&nbsp; Radar bug
   #4098028.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-640.1 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the x86_64 assembler to always save assembler
   temporary symbols in cstring literal sections and use external
   relocation entries when they are referenced. Radar bug
   #4765733.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-640 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with NXGetArchInfoFromCpuType(3) and using
   CPU_SUBTYPE_MULTIPLE. Radar bug #4787007.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-639 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Updated the tools to deal with cpusubtypes that have the new
   capability bits set. Radar bug #4754462.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-638 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed problems with the updated strip(1) and nmedit(1) with
   trying to correctly handle 64-bit Mach-O files with an odd number
   of indirect table entires (with or without padding). Radar bug
   #4762627.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-637 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Updated strip(1) and codesign_allocate(1) to correctly handle
   64-bit Mach-O files with an odd number of indirect table entires
   (with or without padding). Radar bug #4747408.</LI>
   
   <LI>Fixed the i386 assembler to not crash or get internal erors
   when .org is used. Radar bug #4750873.</LI>
   
   <LI>Changed the x86_64 assembler to always emit a relocation entry
   for @GOTPCREL reference. Radar bug #4742404,</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-636 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed strip(1) to correctly handle keeping symbols marked as
   weak defintions by default. Radar bug #4732639.</LI>
   
   <LI>Fixed a bug in strip(1) that was incorrectly causing an error
   when creating a stub library and not all the global symbols were
   kept. Radar bug #4742051.</LI>
   
   <LI>Fixed a bug in libtool(1) that caused it to crash when an
   input file had a bad symbol table entry for an N_SECT symbol which
   had a bad section number. Radar bug #4739572.</LI>
   
   <LI>Updated strip(1), codesign_allocate(1) and redo_prebinding(3)
   to correctly handle 64-bit Mach-O files with an odd number of
   indirect table entires. Radar bug #4737991.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-635 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with ld_classing iincorrectly generated a
   warning, ntroduced with the change to 4695477. Radar bug
   #4733384.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-634 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem introduced with the change to 4141844 with the
   Intel assembler not expanding macros correctly. Radar bug
   #4729012.</LI>
   
   <LI>Added the -verify_arch flag to lipo(1). Radar bug
   #4496521.</LI>
   
   <LI>Changed strings(1) to with files that have parenthesis in
   their names. Radar bug #4172811.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-633 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Updated the tools to handle the LC_SEGMENT_SPLIT_INFO load
   command and its data. Radar bug #4695477.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-632 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Ported the code in libredo_prebinding and libsyminfo to work
   for 64-bit hosts and now build them for all architectures. Radar
   bug #4407440.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-631 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug that caused the assembler with -static to produce
   incorrectly assembed files introduced with Radar bug #4096964.
   Radar bug #4700558.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-630 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug that caused the assembler to crash introduced with
   Radar bug #4096964. Radar bug #4685058.</LI>
   
   <LI>Fixed a bug that casued libkld to have undefined symbols
   introduced with Radar bug #4599790. Radar bug #4685060.</LI>
   
   <LI>Changed libtool(1) to not invoke ld64(1). Radar bug
   #4682470.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-629 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug that caused the assembler to crash introduced with
   Radar bug #4096964. Radar bug #4666308.</LI>
   
   <LI>Picked up the changes from cctools-625.1 in Radar bug #4664658
   that were missed. Radar bug #4678307.</LI>
   
   <LI>Fixed a problem with the assembler not returning a failure
   status for bogus arguments introduced with changes in
   cctools-590.31.1 . Radar bug #4674902.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-628 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the codesign_allocate(1) tool that caused it to
   build programs that would not execute. Radar bug #4666308.</LI>
   
   <LI>Changed the x86 assemblers to use optimal NOP's for alignment
   padding in sections containing instructions. Radar bug
   #4096964.</LI>
   
   <LI>Fixed a bug in ld_classic(1) that was misaligning coalesced
   section contents. Radar bug #4599790.</LI>
   
   <LI>Updated the ld_classic(1) man page with the description that
   CPU subtypes get combined. Radar bug #3820769.</LI>
   
   <LI>Added an example to the strip(1) man page on how to create a
   stub library. Radar bug #4399175.</LI>
   
   <LI>Fixed a typo on the ld_classic(1) man page. Radar bug
   #4099445.</LI>
   
   <LI>Added the description of the -arch option to the strip(1) man
   page. Radar bug #4470756.</LI>
   
   <LI>Added the description of the -arch option to the strings(1)
   man page. Radar bug #4416906.</LI>
   
   <LI>Fixed a warning when building the x86_64 assembler. Radar bug
   #4504314.</LI>
   
   <LI>Clarified the error message for unknown architecture in the
   assembler driver. Radar bug #4666302.</LI>
   
   <LI>Updated otool(1) to print MH_DSYM symbolically. Radar bug
   #4511760.</LI>
   
   <LI>Changed strip(1) -R on x86_64 objects to silently do nothing.
   Radar bug #4568747.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-627 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the i386 assembler to allow a prefix with a space
   before the instruction. Radar bug #4141844.</LI>
   
   <LI>Changed the strip(1) tool to support blank stubs. Radar bug
   #4511628.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-626 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Ported otool(1) to work with 64-bit Mach-O files and removed
   otool64(1). Radar bug #3903136 and Radar bug #4593267.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-625 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Added the codesign_allocate(1) tool that allocates space in a
   Mach-O file for code signing data. Updated the other tools to
   allow them to work on Mach-O files with code signing data. Radar
   bug #4588023.</LI>
   
   <LI>Changed the command otool(1) to be build dynamically. Radar
   bug #4624240 and Radar bug #4633942.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-624 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Track symbols by definition order, not value. Radar bug
   #4619741.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-623 for
the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Added new constants and strcutures to &lt;mach-o/loader.h&gt;
   to support Mac OS X 10.5 features. Radar bug #4614861.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-622.1 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project to install the static link editor
   as /usr/bin/ld_classic and changed the man page to ld_classic(1).
   Radar bug #4606627.</LI>
</UL>

<H2>Notes Specific to Release 5.23 (Mac OS X Xcode 2.4 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-622 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Add S_16BYTE_LITERALS as a fixed-size data section. Radar bug
   #4610297.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-621 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>In x86-64 code, synthesize a symbol for each fixup, which
   allows the assembler to determine later whether to require a
   relocation entry for that fixup. Radar bug #4577120.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-620 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed symbol_list_sort_by_value to perform a stable sort.
   Radar bug #4598955.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-619 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Added the routines to byteswap the other x86-64 thread states.
   Radar bug #4491230.</LI>
   
   <LI>Fixed a bug in otool64(1) that truncates high address. Radar
   bug #4591066.</LI>
   
   <LI>Fixed a bug in the x86_64 assembler which would cause it to
   generate invalid relocation entries when there were forward
   references to local symbols. Radar bug #4501115.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-618 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed otool64(1) correctly disassemble call instructions for
   the x86_64 architecture so the symbols has the correct (or no
   offset). Radar bug #4483416.</LI>
   
   <LI>Fixed a bug in the x86_64 assembler that would cause it to
   crash when assembling a call instruction to an absolute address
   (with no symbolic symbol name). Radar bug #4523898.</LI>
   
   <LI>Fixed a bug in ld(1) that incorrectly ignored the argument
   after the -allow_stack_execute option. Radar bug #4571206.</LI>
   
   <LI>Fixed a problem with ld(1) getting an internal error when
   linking objects with DWARF information for weak symbols and
   linking those to shared libraries with non-weak symbols. Radar bug
   #4570143.</LI>
   
   <LI>Fixed a bug in the x86_64 assembler when making a call to an
   assembler tempoary label that generated an incorrect relocation
   entry. Radar bug #4581768.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-617 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed checksyms(1) to not report unprebound executables when
   MACOSX_DEPLOYMENT_TARGET &gt;= 10.4. Radar bug #4110782.</LI>
   
   <LI>Added support for 16 byte literal constant sections. Radar bug
   #4555162.</LI>
   
   <LI>Changed the x86 assembler to not create a spurious undefined
   symbol _GLOBAL_OFFSET_TABLE_ when the source makes no reference to
   the symbol. Radar bug #4534951.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-616 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed the disassembly of i386 instructions in otool(1) like
   sete so they don't get dissassembled with a suffix. Radar bug
   #3873844.</LI>
   
   <LI>Fixed the disassembly of x86_64 move instructions in
   otool64(1) that did not used numbered registers. Radar bug
   #4555277.</LI>
   
   <LI>Fixed the disassembly of i386 instructions in otool(1) like
   pushq which was disassembled as pushl. Radar bug #4563547.</LI>
   
   <LI>Changed ld(1) to ignore ranlib "out of date" errors. Radar bug
   #4462449.</LI>
   
   <LI>Changed lipo(1) to not set the the timestamp of universal file
   containing static libraries o the earliest of the timestamps of
   the thin libraries. Radar bug #4492604.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-615 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>The x86-64 assembler was fixed so it does not corrupt line
   information for x86_64. Radar bug #4498034.</LI>
   
   <LI>The tool pagestuff(1) has now been ported to work on 64-bit
   binaries. Radar bug #4375624.</LI>
   
   <LI>The tool nmedit(1) has been updated to work with 64-bit
   binaries that have refereces to global coalesced symbols that are
   to be maded private symbols. Radar bug #4414533.</LI>
   
   <LI>The missing 64-bit swap routines have been added to libmacho
   which is part of libSystem. Radar bug #4358209.</LI>
   
   <LI>The tool lipo(1) was changed to hard code the segment
   alignment for ppc, ppc64, i386 and x86_64 architecutes to 4096 so
   that when creating universal files it always uses that segment
   alignment. Radar bug #4178258.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-614 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed the assembler's .comm directive so it would correctly
   take values greater than 32-bits.&nbsp; Radar bug #4177397.</LI>
   
   <LI>The x86-64 assembler now implements the GOT_LOAD relocation
   entry type. Radar bug #4486815.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-613 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Made the needed changes to the source code and project to
   build with UNIX conformance header.&nbsp; Radar bug #4508798.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-612 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the x86_64 assembler in that was not generating
   a relocation entries to non-local symbols that were PC-relative
   when it should.&nbsp; Radar bug #4545597.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-611 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed strip(1) so that using the -x option on an x86_64
   object file does nothing.&nbsp; Radar bug #4541291.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-610 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the x86_64 assembler in the way it generates
   relocation entries to "fixed-size-data" sections.&nbsp; Radar bug
   #4536738.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-609 for
the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>

<UL>
   <LI>Changed the sources so they can build on Tiger. Radar bug
   #4535019.</LI>
   
   <LI>Added support for the Intel Vanderpool instructions. Picked up
   from cctools-590.43. Radar bug #4534436.</LI>
   
   <LI>Fixed a bug in ld(1) that caused it to crash when using the -Y
   flag to trace undefined symbols. Picked up from cctools-590.42.
   Radar bug #4521358.</LI>
   
   <LI>Fixed a bug in the redo_prebinding code that was causing a
   memory leak.. Picked up from cctools-590.23.6. Radar bug
   #4503576.</LI>
   
   <LI>Fixed a bug in the redo_prebinding code that unnecessarily
   calling chmod(2) and chown(2) when no output_file is specified.
   Picked up from cctools-590.23.6. Radar bug #4503724.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.4
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>The sources for cctools-590.41.4 were moved from the
   Mustard_bringup_branch to the trunk's top of tree. It is the same
   except for the version number changing to cctools-609.</LI>
</UL>

<H2>Notes Specific to Release 5.22 (Mac OS X Xcode 2.3.1 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.3
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Change the previous fix to not reference the reserved1 field
   when fixing up indirect symbols in the non-lazy symbol pointer
   section. Radar bug #4522347.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.2
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed nmedit(1) so that it sets the value of symbol pointers
   when it changes the indirect symbol table entries for them into
   INDIRECT_SYMBOL_LOCAL. The change was in check_indirect_symtab()
   in symbols.c and a bit of code was added to take the n_value from
   the symbol table entry swap it if needed and write into the
   section contents for that symbol pointer. The additional
   parameters contents and host_byte_sex were added to the routine
   and pass from the two places it was called. Radar bug
   #4514531.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.1
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>When stripping coalesced symbols from 64-bit files, only save
   symbols which are used as weak definitions. Radar bug
   #4487972.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.38.3
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Ignore multiple -syslibroot flags if they specify the same
   argument. Radar bug #4354876.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.38.2
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Force GOT and GOT_LOAD relocations to be PC-relative, as they
   always should be, so we don't eliminate them later in the
   assembler. Radar bug #4500790.</LI>
   
   <LI>Don't consider X86_64_RELOC_SUBTRACTOR relocations to be
   paired. Radar bug #4504190.</LI>
   
   <LI>Fix a typo for 64-bit code in an error case in strip(1) which
   would cause it to crash. Radar bug #4502835.</LI>
   
   <LI>Add a new -arch_blank option to lipo(1). Radar bug
   #4473483.</LI>
   
   <LI>Support 64-bit constants in .code64 blocks in x86-64 assembly.
   Radar bug #4439905.</LI>
   
   <LI>Ignore stabs when fixing up x86-64 symbols in the assembler.
   Radar bug #4502759.</LI>
   
   <LI>Accept 'LL' and 'ULL' as suffixes for constants in assembly
   code. Radar bug #4496022.</LI>
   
   <LI>Get RIP-relative relocations correct for local symbols in
   non-fixed-size-data sections. Radar bug #4497536.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.38.1
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Don't convert external relocation entries to internal ones
   when looking at x86-64 relocation entries in nmedit(1). Radar bug
   #4497429.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.37.3
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Merged in cctools-590.38.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.37.2
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Add back support for the E9 form of the jmp instruction for
   x86-64 disassembly. Radar bug #4489937.</LI>
   
   <LI>Use a 'q' suffix rather than an 'l' suffix when disassembling
   call and jmp instructions for x86-64. Radar bug #4483621.</LI>
   
   <LI>Get offsets right for RIP-relative non-external relocations in
   x86-64 code. Radar bug #4486817.</LI>
   
   <LI>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.</LI>
   
   <LI>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.</LI>
   
   <LI>Handle symbols with NULL names when fixing up x86-64 symbols.
   Radar bug #4475602.</LI>
   
   <LI>Fix a regression in the assembler which prevented it from
   reading 8-bit characters. Radar bug #4488556.</LI>
   
   <LI>Improve the comments in the x86-64 reloc.h. Radar bug
   #4488180.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.37.1
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Don't go down the scattered relocation code path in the
   assembler for x86-64 relocation entries. Radar bug #4486807.</LI>
   
   <LI>Don't allow illegal section types for x86-64 assembly. Radar
   bug #4475470.</LI>
   
   <LI>Support 32-bit difference GOTPCREL syntax in x86-64 assembly.
   Radar bug #4485082.</LI>
   
   <LI>Generate the right relocation entry type for .long GOTPCREL
   expressions. Radar bug #4486764.</LI>
   
   <LI>Fix two typos in the ld(1) man page. Radar bug #4099445.</LI>
   
   <LI>Add an extern "C" block to redo_prebinding.h. Radar bug
   #4319807.</LI>
   
   <LI>Cleaned up some binutils merge issues in as/i386.c. Radar bug
   #4422698.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.36.3
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Don't allow illegal section types in x86-64 assembly. Radar
   bug #4475470.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.36.2
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Add support for the new relocation entry types for x86-64.
   Radar bug #4475165.</LI>
   
   <LI>Don't include symbol offsets in fixups for external symbols
   for x86-64 and don't fix up x86_64 symbols in sections that always
   contain fixed-size data. Also, rename i386_fixup_symbol to
   x86_64_fixup_symbol because it's only used for x86_64 code. Radar
   bug #4475152.</LI>
   
   <LI>Print %cs, %fs, and %gs as 64-bit values in x86_64 thread
   states in otool. Radar bug #4468148.</LI>
   
   <LI>Disassemble pushq instructions with extended x86_64 registers
   correctly. Radar bug #4476218.</LI>
   
   <LI>Swap the LC_ROUTINES_64 load command correctly. Radar bug
   #4451600.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.36.1
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Add #defines to ensure that libmacho builds on systems with
   POSIX conformant headers. Radar bug #4471574.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.34.1
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fix suffixes in x86-64 disassembly for push, pop, and moves to
   and from control and debug registers, as well as disassembly of
   short jumps. Radar bug #4467441.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.31.4
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Improve the message that appears when we try to assemble
   32-bit signed static relocations in x86-64 code. Radar bug
   #4434039.</LI>
   
   <LI>Revert the 4-byte alignment change in lipo from the previous
   release. Radar bug #4428605.</LI>
   
   <LI>Disassemble x86-64 instructions with SIB bytes correctly.
   Radar bug #4436608.</LI>
   
   <LI>Disassemble x86-64-specific instructions properly and don't
   recognize i386-specific instructions when disassembling x86-64
   code. Radar bug #4437391.</LI>
   
   <LI>Disassemble the movslq instruction correctly for x86-64. Radar
   bug #4437197.</LI>
   
   <LI>Fixed addends for relocation entries for RIP-relative x86-64
   instructions. Radar bug #4440315.</LI>
   
   <LI>Eliminated extraneous suffixes from disassembly of some i386
   and x86-64 instructions. Radar bug #4441526.</LI>
   
   <LI>Fixed x86-64 disassembly for moves to and from control and
   debug registers. Radar bug #4439907.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.31.2
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Modified lipo to only require 4-byte alignment for load
   commands. Radar bug #4428605.</LI>
   
   <LI>Added x86_64 support to the relocation entry functions in
   misc/reloc.c, used by strip and other tools. Radar bug
   #4430570.</LI>
   
   <LI>Converted more warnings to errors in the assembler, as
   required by the as_warn changes in cctools-590.31.1. Radar bug
   #4429135.</LI>
   
   <LI>Correctly generate x86_64 relocation entries for files
   containing common symbols and for local symbols that resolve to
   the same non-local symbol. Radar bug #4427629.</LI>
   
   <LI>Fix a typo in mach-o/reloc.h. Radar bug #3754196.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.31.1
for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed an incorrect merge of i386 relocation entry generation
   for intersegment jumps. Radar bug #4421123.</LI>
   
   <LI>Added support for printing x86_64 thread states to otool64.
   Radar bug #4424303.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.31
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Added support for the x86_64 architecture to all of the tools.
   Radar bug #4345090.</LI>
   
   <LI>Merged the i386 assembler from GNU binutils 2.16.1 into the
   i386 Mach-O assembler sources. Radar bugs #4178064, #4215749,
   #4299651, #4299664, #4359724.</LI>
   
   <LI>Added support for the Merom New Instructions to the i386
   assembler and disassembler. Radar bug #4407298.</LI>
   
   <LI>Improved otool's output for a number of i386
   instructions.</LI>
   
   <LI>Changed as_warn to be a warning rather than an error, removed
   as_warning, changed as_warning calls to as_warn, and changed
   as_warn calls which expected to be errors to as_bad or as_fatal as
   appropriate. This matches GNU binutils.</LI>
   
   <LI>Changed ld to invoke ld64 without any extra arguments when
   invoked for a 64-bit architecture.</LI>
</UL>

<H2>Notes Specific to Release 5.21 (Mac OS X Xcode 2.3 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.40
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that caused it to generate an incorrect
   error about an attempt to redefine ___dso_handle when
   -bundle_loader was used. Radar bug #4482300.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.39
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in pagestuff(1) that caused it to crash with a
   dSYM file. Radar bug #4495141.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.38
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that caused it to generate spurious
   tracing of indirect undefined symbols. Radar bug #4495010.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.37
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that caused a warning message that it
   could not understand DWARF debug information from empty files.
   Radar bug #4492686.</LI>
   
   <LI>Fixed a bug in ld(1) that produce the error message "internal
   error: output_local_symbols() inconsistent local symbol count"
   when there were multiple defined symbols from .o files with DWARF
   debugging information and the -m option was used. Radar bug
   #4487503.</LI>
   
   <LI>Fixed a bug in ld(1) that produce the error message "internal
   error: output_local_symbols() inconsistent local symbol count"
   when there were common symbols from .o files with DWARF debugging
   information and the common symbols got discarded for a true
   definition in a shared library. Radar bug #4446605.</LI>
   
   <LI>Changed ld(1) to allow the -Y flag to appear multiple times.
   Radar bug #4461031.</LI>
   
   <LI>Changed ld(1) to not cause an error if symbols listed in the
   file for the -unexported_symbols_list option are not found in the
   linked objects. Radar bug #4465511.</LI>
   
   <LI>Changed the compiler tools source to compile with the lastest
   conformance headers. Radar bug #4438650.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.36
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem using a relocatable expression with an
   absolute symbol who's value came from a .set directive and an
   expression of the form "symbol1 + constant - symbol2" where the
   constant was non-zero. Radar bug #4473241.</LI>
   
   <LI>Changed the static linker to not remove the contents of a
   section created from a file with -sectcreate when -dead_strip is
   specified. Radar bug #4439885.</LI>
   
   <LI>Fixed a bug in the static linker when the ___dso_handle linker
   defined symbol in an executable is not exported using
   -exported_symbol_list which resulted in an internal error. Radar
   bug #4461173.</LI>
   
   <LI>Fixed a bug in the 32-bit assemblers when a symbol's value was
   used in an expression it was not being signed extended correctly.
   This caused problems because expressions are internally
   represented as 64-bit values so if the expression's sign was
   tested it would not correctly be negitive in those cases. Radar
   bug #4461836.</LI>
   
   <LI>Added a synonym for the i386 assembler for the "fisttp"
   instruction without a suffix that is the same as "fisttps". Radar
   bug #4462289.</LI>
   
   <LI>Changed libtool to pass the -t flag on to ld(1). Radar bug
   #4213190.</LI>
   
   <LI>Changed the assembler to allow a string that has a single
   quote escaped with a backslash. Radar bug #4391495.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.35
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Changed the linker defined symbol __dso_handle to
   ___dso_handle.(three leading underbars). Radar bug #3992244.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.34
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Added the linker defined symbol __dso_handle for all linked
   images types that can be used with the dynamic liker. Radar bug
   #3992244.</LI>
   
   <LI>Added the MH_DSYM filetype constant to
   &lt;mach-o/loader.h&gt;. Radar bug #4443871.</LI>
   
   <LI>Added a warning to nmedit(1) when a global coalesced symbol is
   seen in a final linked image that it can't be turned into a staitc
   symbol and suggest the use of ld(1)'s -exported_symbols_list
   option. Radar bug #4269492.</LI>
   
   <LI>Changed seg_hack(1) to not affect debug sections. Radar bug
   #4421656.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.33
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Changed nm(1) to not exit with a non-zero status when run on a
   file with no symbols. Radar bug #4421611.</LI>
   
   <LI>Fixed a bug in the assembler that was not correctly handling
   constants as 64-bit values. Radar bug #4434572.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.32
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Suppress compilation directory SO stab when none is
   provided/necessary and append '/' to it otherwise. Radar bug
   #4426731.</LI>
   
   <LI>Fix another bug in the DWARF debug map code that could produce
   'inconsistent local symbol count'. Radar bug #4428677.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.31
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed two bugs in the DWARF debug map code that could produce
   the message 'inconsistent local symbol count'. Radar bug #441933
   and bug #4421606.</LI>
   
   <LI>Don't produce debug map symbols for sections with
   S_ATTR_STRIP_STATIC_SYMS set.</LI>
   
   <LI>Added support for the debug map to nmedit. Radar bug
   #4421583.</LI>
   
   <LI>cctools will now build without using buildit again! Radar bug
   #4402489.</LI>
   
   <LI>Added support for logging of command-line options to stderr
   with LD_PRINT_OPTIONS.</LI>
   
   <LI>Changed XBS environment variables to begin with LD instead of
   RC. Radar bug #4420393.</LI>
   
   <LI>Updated XBS logging output to use string XBS instead of Build
   &amp; Integration. Radar Bug #4214105.</LI>
   
   <LI>Added support for XBS logging output directly to a file. Radar
   bug #4214101.</LI>
   
   <LI>Added the environment variable LD_LIBRARY_PATH as a colon
   separated set of paths to be searched just before the default list
   of paths. Radar bug #4314159.</LI>
   
   <LI>Changed the assemblers to allow the .quad directive with the
   32-bit assemblers. Radar bug #4227961.</LI>
   
   <LI>Picked up the changed in the source code of cctools-590.23.4
   to add macros that rename structure members of the
   ppc_thread_state_t for building with Unix conformance headers.
   Radar bug #4340681.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.30
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that caused it to crash when the argument
   to -init or -e was an undefined symbol. Radar bug #4401068.</LI>
   
   <LI>Changed ld(1) to not create an LC_UUID load command unless an
   input file contains a debug section or an LC_UUID load command.
   Also added the -no_uuid option to ld(1) to always suppress the
   creation of the LC_UUID load command. Radar bug #4415529.</LI>
   
   <LI>Added the -no_uuid option to strip(1) to remove any LC_UUID
   load commands. Radar bug #4415536.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.29
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Change output_local_symbols in symbols.c to give the N_OSO
   stab in the DWARF map a n_desc of 1. Radar bug #4414139.</LI>
   
   <LI>Add support for generating the DWARF debug map. Radar bugs
   #4370126 and #4409967.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.28
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Removed the check in the static linker to produce an error if
   there is a relocation entry for a global coalesced symbol and
   non-zero offset. Radar bug #4405403.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.27
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that caused it to crash when linking for
   the non-host bytesex and an input file has an LC_UUID load
   command. Radar bug #4401375.</LI>
   
   <LI>Added a check to the static linker to produce an error if
   there is a relocation entry for a global coalesced symbol and
   non-zero offset. Radar bug #4213478.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.26
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Changed the assembler to allow the .set direcitve to be used
   with a subtract expression between two symbols where one of the
   symbols is not defined at the point of the .set directive. Radar
   bug #4390251.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.25
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that did not ignore the uuid load command
   in .o files. Radar bug #4388766.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.24
for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>

<UL>
   <LI>Added support for the debug attribute and other DWARF support.
   Radar bug #3415593.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.23
for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>

<UL>
   <LI>Added support for the debug attribute and .debug_note asembler
   directive in the assembler. Radar bug #4367423.</LI>
</UL>

<H2>Notes Specific to Release 5.20 (Mac OS X Xcode 2.2.1 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.22
for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed the routines that byteswap the i386 floating point
   thread state. Radar bug #4350771.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.21
for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) code that caused it to crash when linking
   Objective-C code. Radar bug #4348548.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.20
for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the libkld code that caused it to crash using
   the kld_forget_symbol() api. Radar bug #4346485.</LI>
   
   <LI>Fixed a bug in strip(1) that caused it to crash when stripping
   a dynamic library with multiple cpusubtypes on a host machine with
   different byte sex, Radar bug #4265381.</LI>
   
   <LI>Fixed a bug otool(1) when a -arch flag was specified on a thin
   binary which caused an incorrect error about the architecture not
   being present. Radar bug #4337271.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.19
for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the redo_prebinding code for the new self
   (dyld) modifying Intel stubs that was not correctly setting the
   jmp instruction target for symbols defined in a shared library.
   Radar bug #4335281.</LI>
   
   <LI>Fixed a bug in ld(1) that was causing an internal error if
   both -s and -dead_strip were used and there were dead private
   extern symbols. Radar bug #4286691.</LI>
   
   <LI>Fixed a bug in ld(1) when -w was used that did not suppress
   printing the list of multiply defined symbols from dylibs. Radar
   bug #4334705.</LI>
   
   <LI>Cleaned up the cctools source code so it will build cleanly
   without warnings. Radar bug #4340147.</LI>
   
   <LI>Fixed a problem in the cctools source that would not allow it
   to build on Leopard9A68. Radar bug #4342523.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.18
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Made changes to improve the performance of the static link
   editor. Radar bug 4299546.</LI>
</UL>

<H2>Notes Specific to Release 5.19 (Mac OS X Xcode 2.2 Developer
Release)</H2>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>The static link editor now supports the new option -Sp to strip,
edit and add debugging symbols so the debugger can used most of the
debugging symbols from the object files.</P>

<P>The ar(1) tool has the new -S option to suppress building the
table of contents.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.17
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in nmedit(1) which caused it to produced a bad
   relocation entry when there was one for a global coalesced symbol
   defined in the file being changed into a static. Radar bug
   4318688.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.16
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in strip(1) which caused it to produced a bad
   indirect symbol table entry when there was more than one non-lazy
   pointer section with the same indirect symbol defined in the file
   being stripped. Radar bug 4316021.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.15
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed ld(1) so that the -Sp option discards all type stabs.
   Radar bug 4312007.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.14
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed ld(1) so that the -Sp option discards unnamed type
   stabs. Radar bug 4305465.</LI>
   
   <LI>Added support for encrypted binaries. Radar bug #4298526.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.13
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Made changes to the cctools source to allow it to build on the
   current Mac OS X version for Intel. Radar bug 4303606.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.12
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) when using -dead_strip that incorrectly
   removed local symbols for coalesced sections. This caused
   debugging C++ templements not to work. Radar bug #4293942.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.11
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Made changes to support non executable stacks. Radar bug
   4281171.</LI>
   
   <LI>Added the assembler directives.secure_log_unique and
   .secure_log_reset . Radar bug #4255881.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.10
for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Made changes to the cctools source to allow it to build on the
   what will ship for Mac OS X 10.5. Radar bug 4282026.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.9 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Added support for the new self (dyld) modifying Intel stubs.
   Radar bug #4202415.</LI>
   
   <LI>Fixed the PowerPC assembler so it will correctly assembly
   conditional branch instructions that use the count register or
   link register that have prediction. Radar bug #4274713.</LI>
   
   <LI>Fixed ld(1) so that the -Sp option correctly keeps C++ scoped
   type stabs. Radar bug #4233860.</LI>
   
   <LI>Added the i386 pushfd/popfd mnemonics as synonyms for
   pushf/popf. Radar bug #4272274.</LI>
   
   <LI>Made changes to the cctools source to allow it to build on the
   current Mac OS X 10.5 9A40. Radar bug 4279472.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.8 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Improved ld(1')'s implementaion of -Sp to be faster. Radar bug
   #4157062.</LI>
   
   <LI>Changed ld(1) to cause it to not use a weak symbol from a
   shared library but rather on in a .o file being linked even if it
   is linked in afterwards. Radar bug #4231836.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.7 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed the tools to understand the new non-general register
   thread states for i386. Radar bug #4200908.</LI>
   
   <LI>Changed the tools to understand both the new and old general
   register thread state for i386. Radar bug #4240450 .</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.6 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed ld(1')'s implementaion of -dead_strip to be faster
   especially with large .o file created with ld -r. Radar bug
   #4228195.</LI>
   
   <LI>Changed ld(1) so that dead code C++ with exeception
   information will be stripped with -dead_strip. Radar bug
   #4213358</LI>
   
   <LI>Added the -macosx_version_min command line option to ld(1) to
   override the MACOSX_DEPLOYMENT_TARGET environment variable. Radar
   bug #4195253.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.5 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed ld(1) to not delete type stabs in groups of stabs
   paired by N_BNSYM/N_ENSYM stabs that are for deleted coalesced
   symbols or dead code stripped symbols. Radar bug #4205997.</LI>
   
   <LI>Fixed a problem when the -Sp below was added that caused
   libkld to have incorrect undefined references. Radar bug
   #4220100.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.4 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>The static link editor now supports the new option -Sp to
   strip, edit and add debugging symbols so the debugger can used
   most of the debugging symbols from the object files. Radar bug
   #4202462.</LI>
   
   <LI>The static link editor now does not cause an error on an empty
   archive thinking it is malformed. Radar bug #4201492.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.3 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>The static link editor was change to not issue a warning
   message about both NEXT_ROOT being set and -syslibroot being
   specified unless the two values are different. Radar bug
   #3593340.</LI>
   
   <LI>The warning message the static link editor issues about a
   missing indirectly referenced dynamic library now includes the
   name of the library that made the reference. Radar bug
   #4106804.</LI>
   
   <LI>Fixed a bug in the i386 assembler that did not assembler the
   outw and inw instructions correctly. Radar bug #4110183.</LI>
   
   <LI>Added the -S option to ar(1) to suppress creating the table of
   contents. Radar bug #4130034.</LI>
   
   <LI>The man pages have been updated to not use the term fat files
   but changed to use the term universal files. Radar bug
   #4171207.</LI>
   
   <LI>Fixed a bug in the static link editor that could incorrectly
   issue a mismatching weak reference error message when a
   -weak_framework flag was used. Radar bug #4180599.</LI>
   
   <LI>Fixed a bug in the i386 assembler that did not assemble the
   "fsubrp %st(i)" instruction correctly. Radar bug #4182849.</LI>
   
   <LI>Fixed the i386 assembler so that the -n option would work and
   not cause a crash. Radar bug #4192255.</LI>
   
   <LI>Changed the PowerPC assembler to allow the dcbzl instruction
   without the -force_cpusubtype_ALL or -arch ppc64. Radar bug
   #4181833.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.2 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed as(1) now sets the n_value field of BINCL stabs to be
   the BINCL/EINCL checksum. Radar bug #4181871.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590.1 for
the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>

<UL>
   <LI>Changed ld(1) to now unique the BINCL/EXCL strings, which
   reduces the size of final linked images built with -gfull. Radar
   bug #4151821.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-590 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in processing ld(1) symbols lists for flags such
   as -unexported_symbols where if more than two duplicates are on
   the list only one of the duplicates are removed. Radar bug
   #4139106.</LI>
   
   <LI>Fixed the assembler so that when a .private_extern appears
   before a .zerofill for a symbol it correctly gets created as a
   private extern symbol. Radar bug #4156921.</LI>
</UL>

<H2>Notes Specific to Release 5.18 (Mac OS X Xcode 2.1 Developer
Release)</H2>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>The tools now have support for the handful of x86 sse3
instructions.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-589 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the static linker to prepend the value of -syslibroot
   to all absolute search paths of -L and -F if they exist. Radar bug
   #4127020.</LI>
   
   <LI>Added code to libredo_prebinding when undoing the prebinding,
   to reset the (__DATA,__dyld) section contents to a canonical
   value. Radar bug #4126660.</LI>
   
   <LI>Changed the code to libredo_prebinding when undoing the
   prebinding,, to reset the values of symbol pointers to symbols
   defined in the image depending on if either MH_WEAK_DEFINES or
   MH_BINDS_TO_WEAK is set to work with the Tiger dyld. Radar bug
   #4126666.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-588 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Added support for the CPU_SUBTYPE_PENTIUM_4 cpusubtype and the
   -arch pentium4 to be used with the tools. Radar bug #4115802.</LI>
   
   <LI>Changed the cctools project to allow it to build with the
   changes to the i386 header files with the field names "environ"
   changed and also build on releases without that change. Radar bug
   #4113580.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-587 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Added code to libredo_prebinding to provide fix-ups to work
   around the problems with the FCS Tiger dyld's prebinding
   incorrectly changing some stab's addresses. Radar bug
   #4113681.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-586 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Added code to libredo_prebinding to provide fix-ups to work
   around the problems with the FCS Tiger dyld's prebinding
   incorrectly changing some absolute symbols addresses and not
   updateding the objc_module_info_addr field in the module table.
   Radar bug #4108651.</LI>
   
   <LI>Fixed the libredo_prebinding code to not change the time stamp
   of 64-bit Mach-O files. Radar bug #4105452.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-585 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with the libsyminfo.a build that was
   incorrectly built with -static. Radar bug #4105797.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-584 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with the libkld.a build that had an undefined
   symbol _get_macosx_deployment_target. Radar bug #4100992.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-583 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in assembling the i386 movd instructions with MMX
   register to memory forms that encoded the operands in the wrong
   order. Radar bug #4098884 (aka #4100636)</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-582 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Added the value 10.5 to be one of the known values allowed for
   environment variable MACOSX_DEPLOYMENT_TARGET (Radar bug
   #4098516).</LI>
   
   <LI>Changed the cctools project so it does not use the -MD
   compiler option when RC_XBS is YES so that it will build with
   gcc-5000 series compilers and multiple -arch options. Radar bug
   #4029936.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-581 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the ppc64 assembler that incorrectly caused an
   error for instructions like fsqrt that said the
   -force_cpusubtype_ALL option was needed. Radar bug #4092588.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-580 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in assembling the i386 movq instructions with
   register to register forms that encoded the operands in the wrong
   order. Radar bug #4089432.</LI>
   
   <LI>Fixed a bug in ld(1) introduced in cctools-580 in the handling
   of MACOSX_DEPLOYMENT_TARGET which would cause errors when options
   that required specific values were being checked. Radar bug
   #4092246.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-579 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that would incorrectly
   produce a "mismatching weak references" error when a symbol
   defined in a dylib is first linked in followed by an undefined
   weak reference from a .o file. Radar bug #4016228.</LI>
   
   <LI>Changed the PowerPC assembler to accept "mtocrf" as a synonym
   for "mtcrf" and accept "mfocrf" as a synonym for "mfcr". And when
   these mnemonic is used the argument must have exactly one bit set.
   Also changed otool(1)'s disassembler to use mtocrf/mfocrf when bit
   11 is set. Radar bug #4034280.</LI>
   
   <LI>Changed the cctools project to also use gcc-3.5 when
   RC_USE_GCC35_FOR_PPC64 is YES. Radar bug #4066237.</LI>
   
   <LI>Changed the i386 disassembler to use 32-bit values for
   negitive constants who's width is less than 32-bits. Radar bug
   #4079507.</LI>
   
   <LI>Change ld(1) to default MACOSX_DEPLOYMENT_TARGET to 10.4 for
   x86 architectures. Radar bug #4081062.</LI>
   
   <LI>Fixed the assembly of the i386 ud2 instruction to use the 0x0f
   0x0b opcodes. Radar bug #4085845.</LI>
   
   <LI>Changed the i386 disassembler to use the 0x0f 0x0b opcodes for
   the i386 ud2 instruction. Radar bug #4085846.</LI>
   
   <LI>Fixed the as(1) man page path to the assembler manual is
   correct. Radar bug #4088403.</LI>
   
   <LI>Fixed a bug in the Panther dynamic linker that would cause
   programs to crash that were buildt with -bind_at_load that had
   images with weak references to symbols. Radar bug #4062410.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-578 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project to build with RC_RELEASE being
   Saffron like Tiger so the 3-way fat libmacho objects are compiled
   with gcc-3.5.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-577 for
the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>

<UL>
   <LI>Added support to the x86 assembler and disassembler for the
   sse3 instructions. (Radar bug #4014327).</LI>
   
   <LI>Fixed ld(1) when running on x86 machines to ignore 64-bit
   Mach-O files when -no_arch_warnings is specified. (Radar bug
   #4014404).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-576 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the libredo_prebinding(3) code that was casuing
   an incorrect error message that file was malformed and an
   r_address field was bad. (Radar bug #4054854).</LI>
</UL>

<H2>Notes Specific to Release 5.17 (Mac OS X Xcode 2.0 Developer
Release)</H2>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3><FONT SIZE="+1">The support for 64-bit tools for
Tiger.</FONT></H3>

<P>The current version of cctools has tools needed to do the
development of binaries for 64-bit systems. The only tools that are
not seamless and handle both 32-bit and 64-bit objects are otool(1)
and ld(1). The cctools project provides an otool64(1) for 64-bit
objects. More fixes and changes to the tools are expected in releases
to follow.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-575 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the ld(1) man page noting 64-bit differences. (Radar
   bug #3853561).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-574 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that when building a two-level namespace
   image and linking against flat namespace shared libraries it could
   result in undefined symbol errors from references from the flat
   namespace shared libraries. (Radar bug #4022543).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-573 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the x86 assembler to have -force_cpusubtype_ALL as the
   default. (Radar bug #4002758).</LI>
   
   <LI>Changed the static linler when linking x86 objects to have
   -force_cpusubtype_ALL as the default. (Radar bug #4002756).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-572 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>No changes, there was a filesystem problem with the submission
   to B&amp;I of cctools-572 so a cctools-573 was resubmitted to fix
   that.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-571 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug that will now allow MallocScribble to be on and
   ld(1) not to crash. (Radar bug #3980535).</LI>
   
   <LI>Fixed a bug that caused nm(1) to crash for ppc64 binaries when
   run on Darwin Intel. (Radar bug #3987993).</LI>
   
   <LI>Fixed a typo in the lipo(1) man page that incorrectly
   referenced VAX and Mips architectures. (Radar bug #4007112).</LI>
   
   <LI>Fixed a bug in the assemblers that incorrectly removed
   /dev/null when the it was used as the output file. (Radar bug
   #4007180).</LI>
   
   <LI>Fixed a bug that caused libkld.dylib to be built with no
   exported symbols when built with gcc-4.0. (Radar bug
   #4008570).</LI>
   
   <LI>Fixed a bug that caused strip(1) to crash for ppc64 binaries
   when run on Darwin Intel. (Radar bug #4010859).</LI>
   
   <LI>Fixed a bug in the assembler that cause it to crash with 8-bit
   characters input that had the high bit set. (Radar bug
   #3943609).</LI>
   
   <LI>Changed the output of nm(1) with the -P option to print the
   size field as zero. (Radar bug #3652346).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-570 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project so it will build in the SUPanWheat
   release train. (Radar bug #3979451).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-569 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the assembler that caused it to incorrectly
   generate an error for a symbol being already defined if the .desc
   directive was used to set the REFERENCED_DYNAMICALLY bit before
   the label was seen. (Radar bug #3975121).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-568 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that caused it to generate an
   internal error for the count of relocation entries. (Radar bug
   #3934341).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-567 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The interposing section type was added. (Radar bug
   #3965794).</LI>
   
   <LI>A bug in the 32-bit Mach-O static link editor was fixed which
   was incorrectly generating a error of the form: "illegal reference
   for -dynamic code (reference to a coalesced section ..." when it
   should not have been. (Radar bug #3961903).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-566 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The unneeded 64-bit Mach-O assembler driver, /usr/bin/as64,
   has been removed. (Radar bug #3953127).</LI>
   
   <LI>A man page for otool64(1) has been added that simply sources
   the otool(1) man page. (Radar bug #3954720).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-565 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The tool strings(1) has been updated to work with 64-bit
   Mach-O files. (Radar bug #3943477).</LI>
   
   <LI>Fixed another bug in nmedit(1) that cause it to make fat
   dylibs with 64-bit Mach-O files to render the 64-bit Mach-O dylib
   unusable. (Radar bug #3949527).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-564 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in nmedit(1) with the -p option that cause it to
   crash with 64-bit Mach-O files. (Radar bug #3945219).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-563 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project source to no longer install the
   header file &lt;mach-o/dyld_debug.h&gt;. (Radar bug
   #3937664).</LI>
   
   <LI>Fixed a bug in nmedit(1) that cause it to make fat dylibs with
   64-bit Mach-O files to render the 64-bit Mach-O dylib unlinkable.
   (Radar bug #3940965).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-562 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed bugs in the 32-bit static link editor with respect to
   private extern common symbols. (Radar bug #3928792),</LI>
   
   <LI>Changed the redo_prebinding(1)(3) code on how it sets the
   values of the two pointers in the (__DATA,__dyld) section. (Radar
   bug #3828403).</LI>
   
   <LI>Made enhancements to 32-bit static link editor to support dyld
   coalescing symbols across dylibs.(Radat bug #3933777).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-561 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project source to be compatible with the
   upcoming UNIX03-333 branch of xnu. (Radar bug #3930480).</LI>
   
   <LI>Changed install_name_tool (1) to to work with both 64-bit and
   32-bit Mach-O files. (Radar bug #3930775).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-560 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in nmedit(1) that would produce malformed output
   files with bad symbol tables from dynamic shared librarie files
   without a module table. (Radar bug #3926028).</LI>
   
   <LI>Changed ld(1) to disable prebinding when the environment
   variable MACOSX_DEPLOYMENT_TARGET &gt;= 10.4 for anything that is
   not a split shared library. (Radar bug #3924730).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-559 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the constant FAT_CIGAM in &lt;mach-o/fat.h&gt; to be a
   real constant and not use NXSwapInt(). (Radar bug #3914142).</LI>
   
   <LI>Changed strip(1) to follow symlinks and not replace them with
   the stripped file they are pointing to. (Radar bug #3889109)</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-558 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with building libkld that cause the kernel to
   fail to link. (Radar bug #3906133).</LI>
   
   <LI>Fixed a problem with a strip(1) fix that caused it to print
   extra newlines. (Radar bug #3907726).</LI>
   
   <LI>Fixed a problem with the assembler not allowing altivec
   instructions with ppc64 assembly files. (Radar bug #3906004).</LI>
   
   <LI>Fixed a problem with strip(1) and the -c option that did not
   correctly set the filetype for stub libraries. (Radar bug
   #3909472).</LI>
   
   <LI>Changed nm(1) to deal with dynamic shared libraries without
   module tables. (Radar bug #3883039).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-557 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The tool seg_addr_table(1) has been changed to not emit split
   addresses for libraries built nonsplit. (Radar bug #3903547).</LI>
   
   <LI>A fix to otool(1), for the option to print the hints table,
   -H, when it was used without the verbose option, -v, was made to
   remove an incorrect warning about Inconsistent mh_sizeofcmds".
   (Radar bug #3902811).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-556 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The tool size(1) has been updated to work with 64-bit Mach-O
   files. (Radar bug #3900014).</LI>
   
   <LI>The sources of the cctools project have been change to remove
   the old support for the WWDC 2004 interim 64-bit format. (Radar
   bug #3600419).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-555 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Added the -syslibroot &lt;argument&gt; option to ld(1) as
   another way to specifiy NEXT_ROOT. (Radar bug #3886145).</LI>
   
   <LI>Changed ranlib(1) with the -q option not to print a warning
   about empty archives. (Radar bug #3893339).</LI>
   
   <LI>Changed ranlib(1) with the -q option not to add a table of
   contents when the archive contains no objects. (Radar bug
   #3893392).</LI>
   
   <LI>Change the way ld(1) lays out dyld to make the first address
   of the first section remain semi-constant. (Radar bug
   #3893651).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-554 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with libkld having an undefined symbol
   _pass2_nsect_merged_symbol_section_type introduced by the change
   in Radar bug #3884596 for ld(1)'s checking of illegal references
   to coalesced sections that did not correctly flag an illegal
   reference. (Radar bug #3894721).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-553 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in strings(1) -a option that was failing to print
   the last character of a string a the end of a section. (Radar bug
   #3766901).</LI>
   
   <LI>Changed ranlib(1) when used witht the -q option to not print
   warnings about empty libraries. (Radar bug #3878332).</LI>
   
   <LI>Changed strip(1) to better handle filenames of PATH_MAX .
   (Radar bug #3878381).</LI>
   
   <LI>Changed nm(1) to take the a -- argument that treats all
   remaining arguments as file names, make the default format for the
   -P option hex, and print the pathname on each line for the -A
   option. (Radar bug #3878451).</LI>
   
   <LI>Fixed a bug in ld(1) checking of illegal references to
   coalesced sections that did not correctly flag an illegal
   reference. (Radar bug #3884596).</LI>
   
   <LI>Fixed a bug in otool(1) that did not print symbol names when
   disassembling. (Radar bug #3889188).</LI>
   
   <LI>Fixed a bug in the ppc64 assembler that would produce an
   object file with bad fileoff/filesize values in the LC_SEGMENT_64
   load command. (Radar bug #3891223).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-552 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The static linker, ld(1), now support the environment variable
   LD_UNPREBOUND_LIBRARIES which is the name of a file containing
   dynamic library install names not to prebind. Also supports the
   environment variable LD_SPLITSEGS_NEW_LIBRARIES to build libraries
   not in the seg_addr_table as split. (Radar bug #3875865).</LI>
   
   <LI>Fixed a bug in the nmedit(1) tools that incorrectly produced
   errors about symbols having bad n_sect values. (Radar bug
   #3880780).</LI>
   
   <LI>Made changes to the seg_addr_table(1) tools for the Mac OS X
   10.4 prebinding. (Radar bug #3871826).</LI>
   
   <LI>Changed the redo_prebinding code to ignore 64-bit Mach-O
   files. (Radar bug #3877703).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-551 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The tool strip(1) how has the "--" option which treats all
   arguments after it as files. (Radar bug #3571788).</LI>
   
   <LI>The cctools project now builds with a stdio.h that does not
   include stdarg.h. (Radar bug #3640701).</LI>
   
   <LI>The strings(1) command now has the UNIX standard conformance
   -n and -t options (see the man page for more details). (Radar bug
   #3644256).</LI>
   
   <LI>The nm(1) command now has the UNIX standard conformance -A and
   -P options (see the man page for more details). (Radar bug
   #3652346).</LI>
   
   <LI>The ld(1) command now does not ignore the umask(2) value when
   creating output files. (Radar bug #3761943).</LI>
   
   <LI>The ld(1) command no longer overwrites non-writeable files.
   (Radar bug #3762029).</LI>
   
   <LI>The ar(1) command will now produce archives libraries that
   ld(1) will process without running ranlib(1) if the archive
   members are not fat .o files. (Radar bug #3762136).</LI>
   
   <LI>The ld(1) command now writes its diagnostics to stderr.(Radar
   bug #3762151).</LI>
   
   <LI>The strip(1) command no longer overwrites non-writeable files
   (Radar bug #3852702).</LI>
   
   <LI>The nm(1) command's usage line now matches the SYNOPSIS of the
   nm(1) man page. (Radar bug #3856321).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-550 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Sped up the 32-bit Mach-O static link editor, ld(1), symbol
   searching. (Radar bug #3836837).</LI>
   
   <LI>Changed otool64(1) to symbolically print the PowerPC 64-bit
   thread state. (Radar bug #3866755)</LI>
   
   <LI>Fixed a bug in the undo prebinding code that would not
   correctly set the MH_ALLMODSBOUND flag in the mach header when it
   should have. (Radar bug #3864573).</LI>
   
   <LI>Changed the 32-bit Mach-O static link editor, ld(1), to remove
   symbol stubs and lazy pointers when linking the dynamic linker,
   (Radar bug #3863439).</LI>
   
   <LI>Changed ranlib(1) to not produce a waning about 64-bit Mach-O
   files not on 8 byte offsets. (Radar bug #3818951).</LI>
   
   <LI>Changed the PowerPC assembler to not treat the instruction
   stfiwx as optional so it will assemble without the
   -force_cpusubtype_ALL option. (Radar bug #3841472).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-549 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed libsyminfo to work with both 64-bit and 32-bit Mach-O
   files. (Radar bug #3854972).</LI>
   
   <LI>Changed the seg_addr_table(1) tools to ignore 64-bit Mach-O
   files. (Radar bug #3861276).</LI>
   
   <LI>Changed nm(1) to to work with both 64-bit and 32-bit Mach-O
   files and removed the nm64(1) tool. (Radar bug #3859090).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-548 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ghe the get_prebind_cksums(3) API that would
   cause it to crash on corrupt input. (Radar bug #3839049)</LI>
   
   <LI>Made a changed to ld(1) when the -dead_strip option is used
   that improves debugging with -O3 compiled files. (Radar bug
   #3839049).</LI>
   
   <LI>Changed ld(1) to disable prebinding when the environment
   variable LD_PREBIND_SPLITSEGS_ONLY for anything that is not a
   split shared library. (Radar bug #3855581).</LI>
   
   <LI>Fixed the ppc64 assembler so it will accept the <B>.machine
   ppc970-64</B> directive. (Radar bug #3856997).</LI>
   
   <LI>Changed libsyminfo to not crash if presented with a 64-bit
   Mach-O file. (Radar bug #3854972).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-547 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in tool tool strip(1) that caused it to not
   correctly update the indirect symbol table entries in 64-bit
   Mach-O files (Radar bug #3848104).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-546 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Ported the libredo_prebinding code to not creash when it sees
   a 64-bit Mach-O files (Radar bug #3851599).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-546 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Ported the libmacho code for libSystem to work with both
   64-bit and 32-bit Mach-O files. (Radar bug #3780704).</LI>
   
   <LI>Fixed a bug in otool64(1) that did not correctly print the
   cpusubtype for -arch ppc970-64 objects. (Radar bug #3825281).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-544 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in tool tool strip(1) that caused it to corrupt
   64-bit Mach-O files and archives containing 64-bit Mach-O files
   (Radar bug #3836060).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-543 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the libdyld code that would cause it to not
   load any fat bundles. (Radar bug #3837563).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-542 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that would cause it to crash on i386
   machines. (Radar bug #3830818).</LI>
   
   <LI>Fixed a regression in the tool nmedit(1) from the changes put
   in for 3812858 that manifiested it self the same as 3806356.
   (Radar bug #3833852).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-541 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in tool tool strip(1) that caused it to corrupt
   the __LINKEDIT section in 64-bit Mach-O files. (Radar bug
   #3831401).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-540 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in tha tool strip(1) that cause it to produce an
   internal eroor for 64-bit Mach-O files. (Radar bug #3829545).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-539 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the tool strip(1) that cause it to produce an
   incorrect malformed object file eroor for 64-bit Mach-O files.
   (Radar bug #3829149).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-538 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The tool strip(1) was changed to understand both 32-bit and
   64-bit Mach-O files. (Radar bug #3812858).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-537 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>As part of the transition, ld(1) now executes /usr/bin/ld64 if
   a "-arch ppc64" is seen anywhere on the command line. (Radar bug
   #3823359).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-536 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fix a bug in libtool(1)/ranlib(1) that caused it to grow the
   size of member names. (Radar bug #3817546).</LI>
   
   <LI>Changed the redo_prebinding(3) API to return
   REDO_PREBINDING_SUCCESS any time a new file is created. (Radar bug
   #3818477).</LI>
   
   <LI>Changed ld(1) to ignore 64-bit Mach-O files when
   -no_arch_warnings is specified. (Radar bug #3815344).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-535 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fix a bug in the PowerPC assembler that produced an incorrect
   expression out of range error. (Radar bug #3813143).</LI>
   
   <LI>Fix a bug in the i386 assembler that produced an incorrect "no
   opcode suffix given; can't determine immediate size" error and use
   larger instructions that it should. (Radar bug #3813924).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-534 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fix problems with strip(1) not being able to process static
   libraries produced by libtool(1) that had archive members on 8
   byte boundaries. (Radar bug #3811489).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-533 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixing libtool(1) and ranlib(1) to correctly place 64-bit
   Mach-O files on 8 byte boundaries. (Radar bug #3808740).</LI>
   
   <LI>The cctools-534 sources no longer installs its libdyld
   archives for libSystem builds. (Radar bug #3780216).</LI>
   
   <LI>The lipo(1) -info and -detailed_info options now work for
   64-bit Mach-O files. (Radar buf #3793539).</LI>
   
   <LI>The value of CPU_TYPE_POWERPC64 has been changed to include a
   CPU_IS64BIT (0x1000000) and is that or'ed with the old value of
   CPU_TYPE_POWERPC. (Radar bug #3806447).</LI>
   
   <LI>libtool(1) now runs ld64(1) when for 64-bit architectures.
   (Radar bug #3807911).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-532 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed libtool(1) and ranlib(1) to understand both 32-bit and
   64-bit Mach-O files and removed the creation of libtool64(1) and
   ranlib64(1). (Radar bug #3793394).</LI>
   
   <LI>The cctools-533 souces were changed to no longer use the
   obsolete NX*Zone routines. (Radar bug #3461591).</LI>
   
   <LI>Changed ld(1) to allow more padding of load commands so that
   output files linked with -prebind can be successfully re-prebound.
   (Radar bug #3784597).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-531 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed lipo(1) understands both 32-bit and 64-bit Mach-O
   files . (Radar bug #3600431).</LI>
   
   <LI>Fixed the cctools sources so that it would build with the
   gcc-3.5 compiler. (Radar bug #3751608).</LI>
   
   <LI>Removed the -mc68000 and -mc68010 options should from as man
   page. (Radar bug #3704760).</LI>
   
   <LI>Changed the constants MH_CIGAM and MH_CIGAM_64 in
   &lt;mach-o/loader.h&gt; to be real constants not use NXSwapInt().
   (Radar bug #3762888).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-530 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Added libtool64(1) and an ranlib64(1) which are the
   development tools targeting 64-bit systems . (Radar bug
   #3600431).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-529 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The redo_prebinding code now sets the first two pointers in
   the __dyld section. (Radar bug #3751608).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-528.5 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed nmedit(1) to allow it to handle changing global
   coalesced symbols into static symbols when they have a pcrel
   relocation entry to them. (Radar bug #3806356).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-528.5 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Added as64(1), otool64(1) and an nm64(1) which are the
   development tools targeting 64-bit systems . (Radar bug
   #3600431).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-528.4 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with the seg_addr_table(1) tool that did not
   correctly set the read-write address of split libraries that
   overlapped. (Radar bug #3767036).</LI>
   
   <LI>Changed the cctools-528.5 sources to assume a Mac OS 10.3
   build when RC_RELEASE is set to MuonSeed.</LI>
   
   <LI>Fixed a problem with the assembler's .machine directive that
   did not correctly allow altivec instructions to be assembled.
   (Radar bug #3492132).</LI>
   
   <LI>Changed the undo_prebinding code to so it correctly adjusts
   relocation entries of nonprebound dylibs. (Radar bug #
   3652989).</LI>
   
   <LI>Fixed a bug in ld(1) that caused it to crash when tracing
   undefined symbols with the -Y option, which was introduced in
   cctools-528.3 with the change to Radar 3737622. (Radar bug
   #3797052).</LI>
   
   <LI>Fixed a problem with ld(1)'s -dead_strip option producing
   binaries that gdb(1) was having trouble debugging. (Radar bug
   #3739451).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-528.3 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>Changed the filesize and fileoff fields of the struct
   segment_command_64 structure to be 64-bits. (Radar bug
   #3781406).</LI>
   
   <LI>Fixed a build problem building libkld for the kernel. (Radar
   bug #3782212).</LI>
   
   <LI>Changed the assember to not use the new section difference
   relocations to local symbols when -static is specified, which
   allows kernel extensions to be compatible for linking on older
   systems. (Radar bug #3753904).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-528.2 for
the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>

<UL>
   <LI>The static link editor no longer searches indirectly
   referenced shared libraries when -twolevel_namespace is in effect.
   (Radar bug #3737622).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-528 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Allowed duplicate symbols in kexts. (Radar bug #3633627).</LI>
   
   <LI>Fixed handling of forward labels in the 64-bit assembler.
   (Radar bug #3757398).</LI>
</UL>

<H2>Notes Specific to Release 5.16 (Mac OS X Xcode 1.5 Developer
Release)</H2>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3><FONT SIZE="+1">The static linker has an option to do dead code
stripping</FONT></H3>

<P>See the Public release notes for the details.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-527 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Added support for section difference relocations to local
   symbols inside procedures referenced by a globally visible
   coalesced symbol, on i386. (Radar bug #3744821).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-526 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Added the structures for 64-bit Mach-O files to the Mach-O
   headers. (Radar bug #3742429).</LI>
   
   <LI>The assembler was made faster. (Radar bug #3739375).</LI>
   
   <LI>The checksymb(1) tool once again has a what(1) string. (Radar
   bug #3746707).</LI>
   
   <LI>Added support for section difference relocations to local
   symbols inside procedures referenced by a globally visible
   coalesced symbol, on powerpc. (Radar bug #3744821).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-525 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a missed worded linker error message where the
   -flat_namespace flag is mentioned as -flatname_space. (Radar bug
   #3743186).</LI>
   
   <LI>Changed the Mach-O headers need to be 64-bit clean. (Radar bug
   #3742429).</LI>
   
   <LI>Changed the cctools sources to compile without warnings and
   the 64-bit clean Mach-O headers. (Radar bug #3744082).</LI>
   
   <LI>Fixed the mispelling of 'meaningless' in linker error message.
   (Radar bug #3739217).</LI>
   
   <LI>Added the -V flag to libtool(1) to print its version
   information. (Radar bug #3738616).</LI>
   
   <LI>Added support for the i386 3DNow! instructions to the
   assembler and otool(1)'s disassembler. (Radar bug #3737535).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-524 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Changed the static link editor, ld(1), to link output files
   for use by the dynamic linker faster. (Radar bug #3728427).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-523 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Changed the static link editor, ld(1), to not create scattered
   relocation entried in output files for use with the dynamic
   linker. And also to disable prebinding when the output is too
   large that it would run into the limitation of the 24-bit
   r_address field of scattered relocation entries. (Radar bug
   #3451378).</LI>
   
   <LI>Fixed the otool(1) command's <B>-fv</B> output so that it does
   not print <I>(illegal duplicate architecture)</I> and take a long
   time producing the output on a two-way fat file. (Radar bug
   #3709358).</LI>
   
   <LI>Fixed the strip(1) command that caused it to crash when run
   with no options on a the dynamic linker.(Radar bug #3697374).</LI>
   
   <LI>Fixed a bug in selecting an i386 architecture from fat file
   that only contained a i686 architecture which would cause ld(1) to
   think the file was a bad Mach-O file. (Radar bug #3694812).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-522 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the Power PC assembler that would cause it to
   incorrectly assemble lwa instructions. Radar bug #3687246.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-521 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the interum ppc64 assembler that would cause it
   to incorrectly generate an error about a missing expression. Radar
   bug #3682374.</LI>
   
   <LI>Changed how otool(1) gets built so it will build in the
   current B&amp;I Tiger BuildRoot with libc changes from 3535291.
   Radar bug #3685865.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-520 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Changed where the public release notes get installed. They are
   now installed in the directory /Developer/ADC Reference
   Library/releasenotes/DeveloperTools. Radar bug #3678389.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-519 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Added the cmovnz instruction as an equivalent to cmovne for
   the i386 assrmbler. Radar bug #3345900.</LI>
   
   <LI>Fixed otool(1)'s disassembly of the i386 assrmbler movdq2q
   instruction. (Radar bug #3488840).</LI>
   
   <LI>Fixed otool(1)'s disassembling the move word to accumulator
   i386 nstructions. (Radar bug #3515794).</LI>
   
   <LI>Fixed typos in the ld(1) man page. (Radar bug #3545222).</LI>
   
   <LI>Fixed a bug in ld(1)'s relocation of jbsr pseudo instructions
   in multi-module dynamic libraries which was are not correctly
   setting to branch to the true target when the branch reaches.
   (Radar bug #3545578).</LI>
   
   <LI>Added the -v flag to ld(1) to print its version information.
   (Radar bug #3557760).</LI>
   
   <LI>Fixed libtool(1)'s printing of logging file names when -static
   is used when the environment variable RC_TRACE_ARCHIVES is set so
   that it prints out the path returned by realpath(3). (Radar bug
   #3585834).</LI>
   
   <LI>Fixed libsyminfo so it will not crash if it encounters a
   binary that contains an unknown architecture. (Radar bug
   #3590209)</LI>
   
   <LI>Fixed the kld(3) man page to correctly reference kextload(8)
   not the obsoleted kmodload(8). (Radar bug #3633604).</LI>
   
   <LI>Fixed the strip(1) command when run with no options on a
   dynamic library so that it does not produce a malformed
   file.(Radar bug #3641669).</LI>
   
   <LI>Fixed a bug in otool(1) that caused it to crash when run on
   Java class files. (Radar bug #3670740).</LI>
   
   <LI>Fixed a bug in ld(1) when the -dead_strip option that was
   always stripping static symbols in symbol stub and symbol pointer
   sections. (Radar bug #3669400)</LI>
   
   <LI>Changed libtool(1) to take and pass along ld(1)'s
   -executable_path flag. (Radar bug #3489733).</LI>
   
   <LI>Added the.machine directive to the assembler. (Radar bug
   #3492132)</LI>
   
   <LI>Fixed a bug in ld(1) when -x and -bundle were used when
   linking objects with private extern coalesced symbols. This would
   result in bad bundle output files that would crash when used.
   (Radar bug #3464004).</LI>
   
   <LI>Fixed a bug in ld(1) when -s was used on an executable output
   file that could produce bad indirect symbol table entries. (Radar
   bug #3534709).</LI>
   
   <LI>Changed the PowerPC assembler to allow the streaming dcbt
   instructions without the -force_cpusubtype_ALL flag. (Radar bug
   #3468847).</LI>
   
   <LI>Changed ld(1) when the -sectorder option is used so that the
   symbols not listed in the order file will be linked in the order
   they appeared in the input .o files. (Radar bug #3382272).</LI>
   
   <LI>Fixed a bug in the assembler that could cause it to generate
   bad relocation entries if the .o file had a relocatable item after
   more than 16megs of code or data in the same section. (Radar bug
   #3604972).</LI>
   
   <LI>Changed ld(1)'s -sectorder file format to treat lines that
   start with a # as a comment. (Radar bug #3360823)</LI>
   
   <LI>Changed the i386 assembler to allow the prefetcht0,
   prefetcht1, prefetcht2 and prefetchnta instructions without the
   -force_cpusubtype_ALL flag. (Radar bug #3500323).</LI>
   
   <LI>Fixed a typo in install_name_tool(1) man page. (Radar bug
   #3501918).</LI>
   
   <LI>Changed the PowerPC assembler to allow the frsqrte and fres
   instructions without the -force_cpusubtype_ALL flag. (Radar bug
   #3519365).</LI>
   
   <LI>Fixed a memory leak in libsyminfo. (Radar bug #3554267).</LI>
   
   <LI>Removed a warning in the static linker, ld(1), when the
   -dead_strip option is used that generated a warning saying that
   -gused was used to compile a .o file and -gfull should be used
   even though -gfull was used. (Radar bug #3663248).</LI>
   
   <LI>Fixed a bug in the assembler when a .private_extern directive
   for a symbol was seen before an assignment of the symbol to an
   absolute value that resulted in the symbol not being marked as a
   private extern symbol. (Radar bug #3660818).</LI>
   
   <LI>Changed the tools that produce archive table of contents,
   libtool(1) and ranlib(1), as well as the static linker, ld(1), to
   no longer warn about creating or using an archive with multiple
   members defining the same symbol. (Radar bug #3653845).</LI>
   
   <LI>Fixed a bug with ld(1) -s produced executables having invalid
   indirect symbol table entries for stripped symbols.(Radar bug
   #3534709).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-518 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with the cctools project not installing all of
   its man pages.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-517 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with the cctools project not installing all of
   its man pages when RC_RELEASE is not set.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-516 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a problem with the cctools project not installing all of
   its headers when RC_RELEASE is not set.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-515 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed the cctools project to for the change in Radar bug
   #3639836 to install the dynamic linker and other pieces for the
   MuonPrime RC_RELEASE. (Radar bug #3657739).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-514 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Added the installGASsrc and fromGASsrc Makefile targets to
   install and build just the PowerPC assembler from the GAS sources.
   (Radar bug #3657295).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-513 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a build problem with cctools' "mach/machine.h" header
   file not containing the typedef for cpu_threadtype_t.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-512 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Changed the cctools project to no longer install the dynamic
   linker, /usr/lib/dyld, and the header files &lt;mach-o/dyld.h&gt;,
   &lt;mach-o/dyld_gdb.h&gt; and &lt;mach-o/dyld_priv.h&gt; as well
   as the man pages dyld(1), dyld(3), NSModule(3),
   NSObjectFileImage(3) and NSObjectFileImage_priv(3). (Radar bug
   #3639836).</LI>
   
   <LI>Integrated the changes from cctools-495.8 in Mac OS X 10.3.4
   (Radar bug #3650224).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-511 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed bug in the static linker that cause it to crash when the
   -dead_strip option was used with -preload output files. (Radar bug
   #3649317).</LI>
   
   <LI>Fixed a bug that cuased strip(1) an other tools that created
   archive libraries to not correctly set the time stamp on the
   archive resulting in ld(1) thinking the archive's table of
   contents was out of date. (Radar bug #3645280).</LI>
   
   <LI>Fixed bug in the static linker that caused it to generate an
   internal error when referencing an undefined symbol from a
   coalesced section that is defined in another .o file as a global
   coalesced symbol. (Radar bug #3644011).</LI>
   
   <LI>Removed a debugging print statement in ld(1) (Radar bug
   #3643349).</LI>
   
   <LI>Fixed bug in the static linker when the -dead_strip option was
   used that caused it to generate an internal error (Radar bug
   #3643111).</LI>
   
   <LI>Fixed bug in the static linker when the -dead_strip option and
   the -s option was used that caused it to generate an internal
   error (Radar bug #3639490).</LI>
   
   <LI>Change the compiler tools project to install the
   redo_prebinding(3) man page as a local man page. (Radar bug
   #3638779).</LI>
   
   <LI>Fixed the compiler tools release notes for -arch ppc64 to say
   -dynamic binaries are not supported. (Radar bug #3638698).</LI>
   
   <LI>Integrated the changes from cctools-495.7 in Mac OS X 10.3.4
   (Radar bug #3629498).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-510 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed bug in the static linker when the -dead_strip option
   that caused some things not to be aligned correctly. This would
   happen for things that used assembler temporary labels such as
   compiler generated altivec constants (Radar bug #3625632).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-509 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Integrated the changes from cctools-495.6 in Mac OS X 10.3.4
   (Radar bug #3630920).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-508 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Integrated the changes from cctools-499.4 for the interium
   -arch ppc64 architecture.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-507 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Integrated the changes from cctools-495.&#91;345&#93; in Mac
   OS X 10.3.4.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-506 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed another bug in the static linker when the -dead_strip
   option is used with object files containing multiple gobal symbols
   at the same address. This too caused ld(1) produce files that
   would crash due to incorrectly dead stripping (Radar bug
   #3625582).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-505 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker when the -dead_strip option
   is used with object files containing multiple gobal symbols at the
   same address. This caused ld(1) produce files that would crash due
   to incorrectly dead stripping (Radar bug #3625582).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-504 for
the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker when the -dead_strip option
   is used with object files containing indirect symbol table entries
   that are INDIRECT_SYMBOL_LOCAL or INDIRECT_SYMBOL_ABS that caused
   ld(1) to crash or produce files that would crash due to
   incorrectly dead stripping live blocks (Radar bug #3625527)</LI>
   
   <LI>Fixed a bug in the static linker when the -dead_strip option
   is used with C++ that caused it to incorrectly point an error
   message about an illegal reference into a stub section (Radar bug
   #3625527).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-503 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Added the environment variable LD_DEAD_STRIP_DYLIB which
   causes -dead_strip to specified for all ld(1) commands that have
   the -dylib option specified.</LI>
   
   <LI>Fixed a problem with the cctools source that would not build
   the kld libraries (Radar bug #3625471).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-502 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Fixed problems linking with the kld libraries getting
   undefined symbols caused by the changes to the code base for dead
   code stripping. (Radar bug #2284500).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-501 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor with the use of
   -dead_strip and -prebind that caused an internal error. (Radar bug
   #2284500).</LI>
   
   <LI>Fixed a bug in the static link editor with the use of
   -dead_strip that in some cases would incorrectly produce a warning
   message about "symbol appears more than once in the same file".
   (Radar bug #2284500).</LI>
   
   <LI>Fixed a bug where common symbols were not correctly dead
   stripped if a -sectorder file was not used. (Radar bug
   #2284500).</LI>
   
   <LI>Added support for -dead_strip for i386 and m68k
   architectures.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-500 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Added support for the new <B>subsections_via_symbols</B>
   assembler directive to mark objects ok to divide their section
   contents via symbols. Objects without this mark have their
   sections kept whole if anything in the section is live. (Radar bug
   #2284500).</LI>
   
   <LI>Fixed a bug in the assembler that would cause an incorrect
   symbol re-definition error if a .no_dead_strip directive was used
   before a .comm directive for the same symbol. (Radar bug
   #2284500).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-499.4 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Added dead code stripping to the static linker, ld(1), with
   the new flag <B>-dead_strip</B> (see the Public release notes for
   the details ). Also the new flag
   <B>-no_dead_strip_inits_and_terms</B> causes all constructors and
   destructors to never be dead code stripped. (Radar bug
   #2284500).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-499.3 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Removed the partial support for -arch ppc64-970.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-499.2 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker, ld(1), that caused it to
   generate an error message about malformed objects when linking
   ppc64 objects with -r. (Radar bug #3594978).</LI>
   
   <LI>Fixed a bug in the assembler with handling of integer
   expressions when hosted on i386. (Radar bug #3591543).</LI>
   
   <LI>Added a definition of _NSGetProgname() in dyld to resolve a
   dyld link failure due to changes in Libc-327. (Radar bug
   #3593079).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-499.1 for
the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>

<UL>
   <LI>Added a dummy definition of __cxa_finalize() in dyld to
   resolve a dyld link failure due to changes in Libc-326. (Radar bug
   #3586910).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-499 for
the 5.15 Mac OS X Xcode 1.2 release)</FONT></H5>

<UL>
   <LI>Added support for the interium -arch ppc64 architecture (LP64
   code gen in a Mach-O 32-bit file). (Radar bugs #3562133 and
   #3562232).</LI>
</UL>

<H2>Notes Specific to Release 5.15 (Mac OS X Xcode 1.2 Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-498 for
the 5.14 Mac OS X December 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker, ld(1), that caused it to
   generate an internal error message about the count of local
   relocation entries does not matching when jbsr pseudo instructions
   were used when creating a dynamic library. (Radar bug
   #3518096).</LI>
</UL>

<H2>Notes Specific to Release 5.14 (Mac OS X December 2003 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-497 for
the 5.14 Mac OS X December 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the PowerPC pseudo-instruction <B>jmp</B> as the
   non-linking form of <B>jbsr</B>. (Radar bug #3458928).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-496 for
the 5.14 Mac OS X December 2003 Developer release) </FONT></H5>

<UL>
   <LI>Changed the assembler to accept the --gstabs option to be the
   same as the -g option and treat the --gdwarf2 option as an unknown
   option. (Radar bug #3411071).</LI>
   
   <LI>Change the libtool(1) command to pass the
   -prebind_allow_overlap on to ld(1). (Radar bug #3452484).</LI>
   
   <LI>Fixed a bug in the static linker, ld(1), that caused it to
   generate an error message about relocation entries in read-only
   sections when jbsr pseudo instructions were used when creating a
   dynamic library. (Radar bug #3452964).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Added the value 10.4 to be one of the known values allowed for
   environment variable MACOSX_DEPLOYMENT_TARGET (Radar bug
   #3445632).</LI>
   
   <LI>Changed the cctools project to include the FSF COPYING file at
   the top level of the assembler. (Radar bug #3443583).</LI>
   
   <LI>Changed seg_addr_table(3) so it does not reserves more space
   than necessary for flat dylibs. (Radar bug #3440884).</LI>
   
   <LI>Changed NSModule(3) man page so NSLinkModule states you need
   to pass the image path as the module name if you want to use
   gdb(1) on it (Radar bug #3408768).</LI>
   
   <LI>Changed the header file &lt;mach-o/dyld.h&gt; so the API's
   introduced in 10.3 are marked with the AvailabilityMacros (Radar
   bug #3401910).</LI>
   
   <LI>Changed ld(1) to call realpath(3) on the filenames printed
   with RC_TRACE_ARCHIVES. (Radar bug #3443289).</LI>
</UL>

<H2>Notes Specific to Release 5.13.2 (Mac OS X 10.3.4 Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495.7 for
the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug that was caused by the changes to dyld in
   cctools-495.3 for Radar bug #3622330 that would cause undefined
   symbols errors. (Radar bug #3650224).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495.6 for
the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug that was caused by the changes to dyld in
   cctools-495.3 for Radar bug #3622330 that would not correctly
   fully bind symbols and modules. (Radar bug #3629498).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495.5 for
the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug that was caused by the changes to dyld in
   cctools-495.3 for Radar bug #3622330 that would cause private
   bundles to fail to load if they had mutiply defined symbols (Radar
   bug #3626905).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495.4 for
the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>

<UL>
   <LI>Fixes a bug that was caused by the changes to dyld in
   cctools-495.3 for Radar bug #3622330 that would cause a crash in
   apps that were built ld(1) -s and the un fixed bug 3534709. The
   work around for this bug had a logic error (Radar bug
   #3627380).</LI>
   
   <LI>Fixed a bug that was caused by the changes to dyld in
   cctools-495.3 for Radar bug #3622330 that would cause a crash in
   dyld when there were unused non-lazy symbols in a multi-module
   dynamic library (Radar bug #3625797).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495.3 for
the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>

<UL>
   <LI>Changes were made to dyld that improve launch times. (Radar
   bug #3622330).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495.2 for
the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>

<UL>
   <LI>Added the <I>unprebind</I>(3) API to libredo_prebinding and
   the <B>-u</B> option to the <I>redo_prebinding</I>(1) command.
   (Radar bug #3176679).</LI>
   
   <LI>Added the <B>-seg1addr</B> <I>hex_addeess</I> option to to the
   <I>redo_prebinding</I>(1) command to specify the address of a
   dynamic shared library. (Radar bug #3176679).</LI>
   
   <LI>Added the <B>-s</B> option to to the <I>redo_prebinding</I>(1)
   command to cause it to write its output to standard output, rather
   than to an output file. (Radar bug #3176679).</LI>
</UL>

<H2>Notes Specific to Release 5.13.1 (Mac OS X 10.3.3 Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-495 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in dyld that was causing it not to trigger
   fix_prebinding. (Radar bug #3489918).</LI>
</UL>

<H2>Notes Specific to Release 5.13 (Mac OS X 10.3)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-494 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Changed the default headerpad in ld(1) when it creates a
   prebound executable to be 3 times instead of 6 times the size of
   its LC_PREBOUND_DYLIB load commands so it has a better chance of
   its prebinding being able to be redone if the dependent libaries
   change and does not increase the size of the file as much. (Radar
   bug #3410151).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-493 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Changed the default headerpad in ld(1) when it creates a
   prebound executable to be 6 times the size of its
   LC_PREBOUND_DYLIB load commands so it has a better chance of its
   prebinding being able to be redone if the dependent libaries
   change. (Radar bug #3410151).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-492 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the redo_prebinding(1)(3) code that would cause
   an error if an indirectly dependent library changed its install
   name. (Radar bug #3408696).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-491 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Changed the seg_addr_table(1) tool to assign addresses for
   _debug and _profile libraries addresses to start at 0x40000000
   through lower addresses. (Radar bug #3360593).</LI>
   
   <LI>Fixed a bug in the seg_addr_table(1) tool where the bounds
   checking of an assigned address would be allowed when it shouldn't
   have been if the library entirely fit inside a reserved region.
   (Radar bug #3359505).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-490 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker in the code that implements
   of the API NSLookupSymbolInImage() that can cause it to crash when
   looking up a symbol in a bundle when another thread is still
   loading that bundle. (Radar bug #3393517).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-489 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed problems dealing with ppc970 cpusubtype binaries being
   incorrectly selected when not on a G5 for execution and not being
   selected when building and linking with a fat file containing only
   a ppc970 object file. (Radar bug #3387962).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-488 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Change the code for otool(1) to have stub versions of the
   notify API so it will build. (Radar bug #3378781).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-487 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a problem with the ld(1) man page where the description
   of -weak_framework got incorrectly inserted in the description of
   -framework. (Radar bug #3375695).</LI>
   
   <LI>Updated the source code in the cctools project to the APSL
   2.0. (Radar bug #3369348).</LI>
   
   <LI>Change the code in the dynamic linker to define its own
   version of gettimeofday() so it will build with the latest Libc
   and Libnotify projects. (Radar bug #3375399).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-485 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that would cause incorrectly
   relocate items causing the program to crash. (Radar bug
   #3364959).</LI>
   
   <LI>Fixed a bug in the PowerPC assembler that would cause it to
   print an error message when it sees a 64-bit compare instruction
   or optional instructions the 970 implements even though <B>-arch
   ppc970</B> was specified. (Radar bug #3364523).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-485 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Added the environment variable
   DYLD_PRINT_LIBRARIES_POST_LAUNCH as an option to the dynamic
   linker that cause it to print out the dynamic libraries that are
   loaded after the program reaches its entry point. (Radar bug
   #3342354).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-484 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed some bugs in the static linker that would cause it to
   not mark an umbrella library or framework weak when it was linked
   with -weak_framework when the program used symbols just from the
   umbrella framework's sub-frameworks. (Radar bug #3337262).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-483 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that would cause it to print
   an error message when the argument to -bundle_loader contained a
   non default stack. (Radar bug #3329902).</LI>
   
   <LI>Fixed a bug in the dynamic linker that would cause it to crash
   if a weak library in an umbrella library or framework was missing.
   (Radar bug #3328875).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-482 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that would cause it to print
   a malloc(3) warning if a -lx option were used when the string x
   ends in a dot followed by a single character. (Radar bug
   #3285575).</LI>
   
   <LI>Fixed a bug in the libtool(1) command when using the
   -weak_framework and -weak_library options that was causing it to
   incorrecly produce an error. (Radar bug #3318491).</LI>
   
   <LI>Change the libtool(1) command to pass the ld(1) -m option on
   to ld(1). (Radar bug #3305123)</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-481 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Added the SPI NSFindSectionAndOffsetInObjectFileImage() to the
   new file &lt;mach-o/dyld_priv.h&gt;. (Radar bug #3318440).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-480 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the optimization of trying to use prebound
   libraries post-launch into programs that were built with
   -prebind_all_twolevel_modules when loading bundles that was taking
   uneeded time. (Radar bug #3303038).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-479 for
the 5.13 Mac OS X 10.3 release) </FONT></H5>

<UL>
   <LI>Changed the kld(3) and rld(3) load calls to zero out the
   alignment of existing sections before loading the specified
   objects takes place. (Radar bug #3261751).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-478 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the <B>-executable_path</B> <I>path_name</I> option to
   the static linker where <I>path_name</I> is is used to replace
   @executable_path for dependent libraries. (Radar bug
   #3278995).</LI>
   
   <LI>Fixed the error message in dyld for multiply defined symbols
   to use the physical name not the logical name of the modules
   defining the symbols. (Radar bug #3295565).</LI>
</UL>

<H2>Notes Specific to Release 5.12 (Mac OS X June 2003 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-477 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in dyld that was causing things to be doublely
   relocated and causing programs to crash. (Radar bug
   #3274768).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-476 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the new PowerPC assembler mnemonic "dcbzl" to be the
   same as "dcbz128" and changed the assembler to disassemble this as
   "dcbzl". (Radar bug #3270067).</LI>
   
   <LI>Added the kld_set_link_options() to the kld library to contol
   the stripping of the generated files. (Radar bug #3270588).</LI>
   
   <LI>Changed the source of the cctools project to allow it to build
   with Libc-302 by stubbing out the functions __fpclassifyd(), for
   PowerPC and __fpclassify() for i386. (Radar bug #3271830).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-475 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the otool(1)'s i386 disassembly of some of the
   movq instructions where it was not printing the mnemonic. (Radar
   bug #3268255).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-474 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Updated the assembler man page, as(1) and the arch(3) man
   page. (Radar bug #3265334).</LI>
   
   <LI>Fixed The Data Cache Block Touch Instruction variant with the
   TH field so it is 4 bits and marked as a 64-bit instruction.
   (Radar bug #3265411).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-473 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug the libredo_prebinding(3) code that caused it to
   leak memory when run on system with partially fat files. (Radar
   bug #3144803).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-472 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug the static linker that can cause it to crash when
   linking with large dynamic libraries. (Radar bug #3255992).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-471 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed the libkld routines so that symbol files for kernel
   extensions for i386 can be built on ppc. (Radar bug
   #3251273).</LI>
   
   <LI>Fixed a bug in the i386 assembler where it used the incorrect
   operand for the movq instruction so that the source &amp;
   destination got reversed. (Radar bug #3250086).</LI>
   
   <LI>Fixed a bug in the seg_addr_table(1) tools that when the
   -relayout option is used it did not set the &lt;&lt;&lt; Next
   split address to assign &gt;&gt;&gt; properly. . (Radar bug
   #3245958).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-470 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that caused it to crash if a
   symbol is undefined that is using -undefined dynamic_lookup when
   trying to print out the name of the undefined symbol. (Radar bug
   #3246167).</LI>
   
   <LI>Fixed a bug in the kld libraries where the code that was not
   ignoring the alignment of non-regular non-zerofill sections from
   the base file. (Radar bug #3245534).</LI>
   
   <LI>Backed out the change made in ld(1) to call _exit instead of
   exit() done for Radar bug #3245341 as it does not correctly flush
   the output buffers. (Radar bug #3245341).</LI>
   
   <LI>Changed the dynamic linker so that when the private
   LINK_OPTION_RELOC_JUST_THIS_MODULE option to NSLinkModule() is
   used the undefined handler gets the last undefined symbol not the
   first. (Radar bug #3243939).</LI>
   
   <LI>Fixed a bug in the dynamic linker where it incorrectly stopped
   trying to use prebound libraries after a launch if a plugin was
   loaded that was out of date with respect to its libraries. (Radar
   bug #3243961).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-469 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the private LINK_OPTION_RELOC_JUST_THIS_MODULE option to
   NSLinkModule() to be used by ZeroLink to improve the performance
   by avoid spending time filling in the indirect symbol pointers for
   anything but the new image. (Radar bug #3235113).</LI>
   
   <LI>Added the strip(1) option <B>-c</B> to create create stub
   libraries from dynamic libraries by stripping the section
   contents. (Radar bug #3235093).</LI>
   
   <LI>Improved the interface between the dynamic linker and debugger
   so that the debugger spends less time reading the state of the
   dynamic linker, especially for ZeroLink. (Radar bug
   #3233782).</LI>
   
   <LI>Added the ld(1) option <B>-search_paths_first</B> . When
   specified and <B>-dynamic</B> is in effect this casuses ld(1) to
   search for files for <B>-l</B><I>x</I> arguments in each library
   search path for libx.dylib then libx.a before searching the next
   library search path. (Radar bug #3176974).</LI>
   
   <LI>Changed ld(1) to call _exit instead of exit(). (Radar bug
   #3245341).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-468 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the ld(1) options <B>-weak_framework</B>,
   <B>-weak_library</B> and <B>-weak-l</B> to force a dynamic library
   and all references to it to be marked as weak imports. (Radar bug
   #3069758).</LI>
   
   <LI>Changed the dynamic linker's internal inline strcmp to have
   the correct GNU asm constrains. (Radar bug #3225099)</LI>
   
   <LI>Fixed a bug in seg_addr_table(1) that caused it to crash
   introduced in cctools-464. (Radar bug #3225931).</LI>
   
   <LI>Fixed a bug in the assembler's .p2align directive when used
   with no fill expression that did not fill with no-op instructions
   when appropriate. (Radar bug #3227897).</LI>
   
   <LI>Fixed a problem with the fix to Radar bug #3208399 that caused
   an incorrect "malformed object" error on a dynamic shared library
   with the opposite byte sex of the host machine. (Radar bug
   #3228664).</LI>
   
   <LI>Added private callbacks in the dynamic linker so ZeroLink can
   help locate definitions faster. (Radar bug #3229077).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-467 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the compiler tools that caused the static link
   editor, ld(1), to mess up the static branches that were predicted
   using the Y-bit in cases it changed the sign of the displacement.
   (Radar bug #3223045).</LI>
   
   <LI>Fixed a bug in the static link editor, ld(1), when linking
   against stub libraries it would incorrectly record the dependent
   libraries of the stub libraries. This caused library ordinals for
   undefined symbols to be incorrect causing the program to fail to
   run with an error from the dynamic linker saying it can't find a
   symbol from the incorrecly recorded library. (Radar bug
   #3220772).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-466 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Changed the assember to allow .section directives with
   diffenent attributes. (Radar bug #3218644).</LI>
   
   <LI>Changed the compiler tools to allow section difference
   relocations with PowerPC load/store double instructions. (Radar
   bug #3218027).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-465 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in nm(1), and other object tools, that could cause
   it to crash on a malformed dynamic library with bad module table
   entries. (Radar bug #3208399).</LI>
   
   <LI>Added the <B>-undefined dynamic_lookup</B> option to
   <I>ld</I>(1) to allow two-level namespace images to have their
   remaining undefined symbols marked to be dynamically looked up at
   runtime. This option is only allowed when MACOSX_DEPLOYMENT_TARGET
   is set to <B>10.3</B> or greater (since this requires a new
   version of dyld). As such this option is not described yet in the
   public compiler tools release notes. (Radar bug #3210803).</LI>
   
   <LI>Fixed the problem with gprof(1) crashing introduced when
   fixing warnings in the code in cctools-464 (Radar bug
   #3212306).</LI>
   
   <LI>Added the <B>-undefined define_a_way</B> option to
   <I>ld</I>(1) as a work a round to not having dead-code stripping
   that also strips out references to undefined symbols from the dead
   code. Which leads to link time failures due to undefined symbols.
   With this option <I>ld</I>(1) defines the remaining undefined
   symbols as private definitions and allows the link to succeed. The
   program then runs as long as it does not use any of the undefined
   symbols. (Radar bug #3216770).</LI>
   
   <LI>Fixed a bug in <I>libtool</I>(1) when the <B>-static</B>
   option is used to create an archive library that caused it to
   crash when the input object files do not contain symbols that will
   be in the archive table of contents. (Radar bug #3217471).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-465 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the .p2align&#91;wl&#93; directives to the assembler
   which take the form:
   
   <UL>
      <LI>.p2align&#91;wl&#93; align, &#91;fill&#91;,
      max_bytes_to_fill&#93;&#93;</LI>
   </UL>
   
   <P>and allows a maximum number of bytes to fill to be specified.
   (Radar bug #3207027).</P></LI>
   
   <LI>Fixed a bug in otool(1)'s disassembly of "movd -12(%ebp),
   %mm0" which was disassembling incorrectly without the
   displacement. (Radar bug #3206331).</LI>
   
   <LI>Changed the dynamic link editor to align its stack on a 16
   byte (SSE2) boundary. (Radar bug #3204580).</LI>
   
   <LI>Changed the static link editor's handing of begin include/end
   include stab groups (BINCL/ENCL) such that if the starting BINCL
   has a non-zero checksum it is preserved and then the static link
   editor does not calculate the a checksum for the group. (Radar bug
   #3201935).</LI>
   
   <LI>Fixed the assembler's
   
   <UL>
      <LI>.fill repeat_expression , fill_size , fill_expression</LI>
   </UL>
   
   <P>directive where for a fill_size of anything but 1 it was is
   broken. (Radar bug #3201031).</P></LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-464 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a spelling error in &lt;mach-o/loader.h&gt; in the
   MH_NOMULTIDEFS comment. (Radar bug #3198288).</LI>
   
   <LI>Added the API NSHasModInitObjectFileImage() to
   &lt;mach-o/dyld.h&gt;. (Radar bug #3196951).</LI>
   
   <LI>Updated the cctools-464 project to build with gcc-3.3.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-462 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added support for dynamic shared library stubs. (Radar bug
   #3193744).</LI>
   
   <LI>Implemented the NSGetSectionDataInObjectFileImage() API which
   was previously stubbed out. (Radar bug #3194204).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-461 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Added the new NSLINKMODULE_OPTION_TRAILING_PHYS_NAME option to
   the NSLinkModule(3) to allow ZeroLink so it can specify both the
   logical name of the image and the physical name of the object file
   . (Radar bug #3190599).</LI>
   
   <LI>Fixed a problem with the static linker not correctly detecting
   the case when the relocated displacement of 14-bit PowerPC branch
   instruction did not reach. (Radar bug #3190434).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-460 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in install_name_tool(1) that caused it to crash
   when changing the shared library names to shorter names. (Radar
   bug #3161586).</LI>
   
   <LI>Changed the assembler to allow for the code generation for
   fix-n-continue to use symbol pointers for local symbols. (Radar
   bug #3182683).</LI>
   
   <LI>Added the new NSLINKMODULE_OPTION_DONT_CALL_MOD_INIT_ROUTINES
   option to the NSLinkModule(3) to not run module initializers to be
   used for fix-n-continue. (Radar bug #3183011).</LI>
   
   <LI>Fixed the building of libdyld so that it can be linked against
   without getting an out of date table of contents error. (Radar bug
   #3183053).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-459 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Install the Tachyon special pre-release of dyld for zero-link
   in
   /System/Library/PrivateFrameworks/ZeroLink.framework/Versions/A/Resources/dyld.
   (Radar bug #3180833).</LI>
   
   <LI>Implemented the following API's<BR>
   NSSymbolDefinitionCountInObjectFileImage<BR>
   NSSymbolDefinitionNameInObjectFileImage<BR>
   NSSymbolReferenceCountInObjectFileImage<BR>
   NSSymbolReferenceNameInObjectFileImage<BR>
   NSIsSymbolDefinedInObjectFileImage<BR>
   which were previously stubbed out. (Radar bug #3179011).</LI>
   
   <LI>Fixed a bug in the dynamic linker so that when the undefined
   handler loaded the needed symbol it would correctly check to see
   if there were any more undefined symbols and if not resume the
   program instead of exit. (Radar bug #3178607).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-457 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Change the i386 assembler to not treat the pause instruction
   as optional so it can be assembled without requiring
   -force_cpusubtype_ALL (Radar bug #3173226).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-456 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Implemented NSCreateObjectFileImageFromMemory() which was
   previously stubbed out. (Radar bug #3131622).</LI>
   
   <LI>Fixed a bug in the static link editor that was not removing
   the symbol stubs of private extern coalesced symbols when creating
   a single module dynamic library. (Radar bug #3163714).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-455 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Changed the environment variable XBS_TRACE_BUNDLE_LOADER to
   LD_TRACE_BUNDLE_LOADER. Radar bug #3152604).</LI>
   
   <LI>Picked up the internal libsyminfo library which has API to
   extract export/import information from Mach-O files. (Radar bug
   #3145742).</LI>
   
   <LI>Backed out the change to the dynamic linker to force any
   module containing an initialization or termination routine to be
   fully bound when any symbol in the module is bound. This caused
   launch time regressions in programs not built with
   -prebind_all_twolevel_modules. (Radar bug #3158070).</LI>
   
   <LI>Fixed a bug in the dynamic linker that caused loading a bundle
   into a program that is built with -prebind_all_twolevel_modules to
   crash. (Radar bug #3148967).</LI>
   
   <LI>Fixed a bug in the redo_prebinding(3) API that incorrectly
   caused a error return in the case that there is a fat file that
   the architecture we don't care about which depends on a library in
   another fat file and the time stamps for the libraries don't match
   instead of ignoring it as it should. (Radar bug #3144552).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-454 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Changed the seg_addr_table(1) tool to no longer require that
   the actual path of a dynamic library equals the install name of
   the dynamic library (Radar bug #3147668).</LI>
   
   <LI>Fixed a bug in the redo_prebinding code that would cause it to
   not correctly set the bits in the linked_module bit vector for
   modules referenced via private externs (Radar bug #3126383).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-453 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in otool(1)'s i386 disassembler when disassembling
   an instruction with a bad segment register encoding that caused it
   to crash (Radar bug #3144846).</LI>
   
   <LI>Fixed a bug in ld(1) when using the -m flag when there are
   multiply defined private external symbols that cause an internal
   error. (Radar bug #3143764).</LI>
   
   <LI>Change the assembler's .include directive to automatically
   find files in the same directotry as the file including it if
   assembled in a different directory (Radar bug #3139454).</LI>
   
   <LI>Change the assembler to no longer have a fixed sized input
   buffer so it can assembler the very long stabs lines generated by
   the compiler (Radar bug #3138898).</LI>
   
   <LI>Updated the prebinding release notes to reflect the change of
   the range of split address libraries from 10.1 to 10,2. (Radar bug
   #3135553).</LI>
   
   <LI>Fixed a bug in the seg_addr_table(1) tool that did not
   correctly generate an error message when a split library was
   allocated an address in the alternate area. (Radar bug
   #3138181).</LI>
   
   <LI>Fixed a bug in ld(1) when using the -i flag with a private
   external symbol that cause an internal error. (Radar bug
   #3134759).</LI>
   
   <LI>Changed the dynamic linker to force any module containing an
   initialization or termination routine to be fully bound when any
   symbol in the module is bound. The effect this will have is that
   if a C++ executable has a constructor the entire program will be
   fully bound at launch time. (Radar bug #3016816).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-452 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Changed the dyld's dyld_mach_thread_self() to match the
   updated system's implementation to check if the port is not
   MACH_PORT_NULL before deallocating the port (Radar bug
   #3133910).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-451 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the bug fix for Radar bug #3124262 (below in
   cctools-451). This caused fix_prebinding to crash (Radar bug
   #3133589).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-450 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the redo_prebinding code that would cause it to
   loose the -prebind_all_twolevel_modules state if the binary had a
   new dependency (Radar bug #3124262).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-449 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the assembler that was incorrectly causing an
   error message for a section difference expresion using a symbol at
   the end of a section for a .lcomm symbol (Radar bug
   #3123561).</LI>
   
   <LI>Changed the static linker's default segment alignment for the
   i386 architecture is 4K instead of 8K (Radar bug #3120579).</LI>
   
   <LI>Fixed the i386 assembler so that the i386 movd instructions
   using GPR registers are assembled correctly (Radar bug
   #3117280).</LI>
   
   <LI>Fixed otool's disassembler so that the i386 movd instructions
   using GPR registers is correctly disassembled (Radar bug
   #3117176).</LI>
   
   <LI>Fixed the i386 assembler so that it will assemble mov to/from
   segment register instructions in 32-bit mode (Radar bug
   #3114720).</LI>
   
   <LI>Fixed the cctools Makefile so that the project can be built
   when in a directory which has a space in the name (Radar bug
   #3114622).</LI>
   
   <LI>Fixed ld(1)'s -S symbol stripping option to strip symbols in
   sections marked with the section attribute
   S_ATTR_STRIP_STATIC_SYMS (Radar bug #3114458).</LI>
   
   <LI>Fixed ld(1)'s -x symbol stripping option to strip private
   externs symbol that get turned into statics (Radar bug
   #3114182).</LI>
   
   <LI>Changed the ar(1) tool to deal with creating files on NFS
   servers that support file locking (Radar bug #3105943)</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-448 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Changed the i386 assembler use the ALL subtype even if a
   processor specific instruction is used. And added the -arch i686
   flag to be the same as -arch pentpro flag (Radar bug
   #3111977)</LI>
   
   <LI>Fixed a memory leak in the dynamic linker with the
   NSUnLinkModule() API that leaked the memory for the moduleName
   parameter of the NSLinkModule() API (Radar bug #3073359).</LI>
   
   <LI>Changed the dynamic linker to use the prebinding of dynamic
   libraries loaded via runtime APIs if possible (Radar bug
   #3055389).</LI>
   
   <LI>Changed the gprof(1) man page to include "dyld(1) and the
   DYLD_IMAGE_SUFFIX environment variable" in the SEE ALSO section
   (Radar bug #2572028).</LI>
   
   <LI>Changed the assembler to generate an error message for a
   subtraction expression that uses a label at the end of a section
   and suggest how to create an assembly time constant expression
   (Radar bug #2259427).</LI>
   
   <LI>Changed the assembler error message for a non-relocatable
   subtraction expression to print the file and line number along
   with which symbol is undefined (Radar bug #2254439).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-447 for
the 5.12 MacOS June 2003 Developer release) </FONT></H5>

<UL>
   <LI>Fixed nm(1) to print the OPT for the N_OPT stab gcc2_compiled.
   stab produced by the compiler (Radar bug #3104328).</LI>
   
   <LI>Fixed ld(1)'s -x option to strip out all stabs including the
   N_OPT gcc2_compiled. stab produced by the compiler (Radar bug
   #3104019).</LI>
   
   <LI>Changed the dynamic linker to make the internal routine
   relocate_symbol_pointers more efficient (Radar bug #3102491).</LI>
   
   <LI>Backed out the change in the dynamic linker to force any
   module containing an initialization or termination routine to be
   fully bound when any symbol in the module is bound. The original
   Radar bug was #3016816 but this change caused a preformance
   regression (Radar bug #3101666).</LI>
   
   <LI>Fixed the i386 assembler so it assembles the cmpxchg8b
   instruction correctly (Radar bug #3099684).</LI>
   
   <LI>Added the _dyld_get_image_header_containing_address() SPI that
   returns a pointer to the mach header if the address is a dyld
   image. See the dyld(3) man page for more detailes (Radar bug
   #2967928).</LI>
   
   <LI>Changed the dynamic linker to not leak memory when using the
   NSADDIMAGE_OPTION_WITH_SEARCHING option with NSAddImage() and
   loading a malformed library (Radar bug #2956804).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-446 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Changed the NXGetArchInfoFromName() API to work with VEO
   binaries (Radar bug #3096745).</LI>
   
   <LI>Changed the dynamic linker to make the API
   _dyld_image_containing_address more efficient (Radar bug
   #3096691).</LI>
   
   <LI>Fixed a bug in the static link editor that was causing dynamic
   libraries that had nothing referenced in them that also were used
   indirectly that did have symbols indirectly referenced in them to
   be marked as weak libraries when they shouldn't have been, (Radar
   bug #3094497).</LI>
   
   <LI>Changed the dynamic linker to not cause fix_prebinding to be
   notified if the problem dynamic library is non-prebound (Radar bug
   #3091026).</LI>
   
   <LI>Changed the assembler to pad sections containing instructions
   with nops (Radar bug #3073763).</LI>
   
   <LI>Added the SPI _dyld_all_twolevel_modules_prebound() that can
   be used to check if all libraries are currently being used as
   two-level namespace libraires, are prebound and all modules in
   them are bound (Radar bug #3055372).</LI>
   
   <LI>Added the <B>-noprebind_all_twolevel_modules</B> flag that
   overrides the setting of the environment variable
   LD_PREBIND_ALL_TWOLEVEL_MODULES static linker (Radar bug
   #3055372).</LI>
   
   <LI>Changed the dynamic linker to force any module containing an
   initialization or termination routine to be fully bound when any
   symbol in the module is bound. The effect this will have is that
   if a C++ executable has a constructor the entire program will be
   fully bound at launch time. (Radar bug #3016816).</LI>
</UL>

<H2>Notes Specific to Release 5.11 (Mac OS X November 2002 Developer
Release)</H2>

<H5><FONT SIZE="+1">Changes since the last release (cctools-445 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that caused it to crash when
   an export lists was specified that did not include common symbols
   that was not dynamically referenced. (Radar bug #3088916).</LI>
   
   <LI>Changed the static linker so that the <B>-s</B> option can
   when used building an executable that uses the dynamic linker that
   results in the same size output as <I>strip</I>(1) with no options
   (Radar bug #3089997).</LI>
   
   <LI>Changed libtool(1) so that it passes the -x option to the
   static linker (Radar bug #3088301).</LI>
   
   <LI>Changed the i386 assembler so that it allows all of the
   supported operands to the cmpxchg8b (Radar bug #3089041).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-444 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Changed the static linker so that the <B>-s</B> option can be
   used when building an executable that uses the dynamic linker that
   results in the same output as <I>strip</I>(1) with no options
   (Radar bug #2545288).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-443 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Export lists can now be specified to the static link editor
   with the new options <B>-exported_symbols_list </B><I>filename
   </I>and<I> </I><B>-unexported_symbols_list </B><I>filename</I>.
   See the ld(1) man page for more details. (Radar bug
   #3083844).</LI>
   
   <LI>Fixed a bug in the seg_addr_table(1) tool that was causing it
   to crash when the -release does not have a DylibProjects file in
   its directory. (Radar bug #3079374).</LI>
   
   <LI>Fixed a bug in the static linker when doing an ld(1) -r
   building kexts where a jbsr to a symbol that is undefined in
   output file is relocated wrong (Radar bug #3054747).</LI>
   
   <LI>Fixed the formating on the arch(3) man page (Radar bug
   #2903710).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-442 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>The static link editor can now build dynamic libraries as a
   single module with the new option -single_moule. The default
   remains the same and can explicitly specified with -multi_module.
   (Radar bug #3080780).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-441 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Fixed the ld(1) man page to not reference the obsolete
   CALL_ON_MODULE_BIND pragma where it now references the current
   CALL_ON_LOAD pragma (Radar bug #3078181).</LI>
   
   <LI>Changed where the i386 assembler gets installed so it will be
   on the developer CD and not in the Local package (Radar bug
   #3074138).</LI>
   
   <LI>Changed the i386 assembler to take an fxch instruction with no
   operands (Radar bug #3073760).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-439 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Fixed the headers (and source code) so that they won't get the
   "extra tokens at end of #endif directive" warnings (Radar bug
   #3072042).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-438 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Added support for the VEO cpu type (Radar bug #3068161).</LI>
   
   <LI>Added the install_name(3) API for extracting install_name
   value from dylibs to libredo_prebinding (Radar bug #3065586).</LI>
   
   <LI>Changed the needs_redo_prebinding(3) API to check all archs if
   allow_missing_archs is zero (Radar bug #3065577).</LI>
   
   <LI>Changed the libtool(1) command to allow the -no_arch_warnings
   option as a no-op when -dynamic is specified (Radar bug
   #3064819).</LI>
   
   <LI>Changed the static link editor to remove partial output files
   when coredumping (Radar bug #3062745).</LI>
   
   <LI>Made a fix to the a bug fix in cctools-436 for Radar bug
   #3037279 in the static link editor that was not removing a symbol
   stubs for private weak definitions (Radar bug #3054990).</LI>
   
   <LI>Fixed a bug in the static link editor that fail to mark a
   dynamic library weak if all of the references to it were weak when
   the library had internal references (Radar bug #3051119).</LI>
   
   <LI>Updated the code in the make_dyld_image_data_writable(3) dyld
   debug API to use the dyld preferred address in Mac OS X 10.2 as
   its initial guess when scaning memory looking for dyld (Radar bug
   #3042819).</LI>
   
   <LI>Removed the support for the dyld DYLD_MEM_PROTECT feature
   (Radar bug #3035901).</LI>
   
   <LI>Added support for the Intel SSE2/SSE/MMX instructions in
   otool(1)'s disassembler (Radar bug #2972491).</LI>
   
   <LI>Finished the support for the Intel SSE2/SSE/MMX instructions
   in the assembler (Radar bug #2972486).</LI>
   
   <LI>Added the .align32 assembler directive that takes a 32bit fill
   value for use by the compiler with -falign-loops. (Radar bug
   #2680692).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-437 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Added the value 10.3 to be one of the known values allowed for
   environment variable MACOSX_DEPLOYMENT_TARGET (Radar bug
   #3049974).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-436 for
the 5.11 MacOS November 2002 Developer release) </FONT></H5>

<UL>
   <LI>Added most of the Intel SSE2/SSE/MMX instructions to the
   assembler (Radar bug #2972486).</LI>
   
   <LI>Fixed many bugs in ld(1) and kld(3) having to do with the
   relocation of the PowerPC pseudo instruction jbsr which are
   generated with the compiler -mlong_branch option (Radar bug
   #3046962).</LI>
   
   <LI>Changed the cctools project to not build a -static compiled
   libredo_prebinding library (Radar bug #3000895).</LI>
   
   <LI>Updated the nm(1) tool to print the new stab entry containing
   full compiler flags, compiler version and the optimization level
   (Radar bug #3000792).</LI>
   
   <LI>Fixed a bug the static link editor that can cause it to crash
   when dealing with a truncated dynamic library (Radar bug
   #2999466).</LI>
   
   <LI>Fixed the static link editor error message handling of an
   archive that does not have the needed architecture when the
   -no_arch_warnings is used (Radar bug #2986587).</LI>
   
   <LI>Fixed a crash that can occur in the nmedit(1) tool if the list
   of symbols contains duplicate symbol names (Radar bug
   #2962899).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-435 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug the static link editor that was incorrectly
   removing a symbol stub for a weak definition (Radar bug
   #3037279).</LI>
</UL>

<H1>Notes Specific to Release 5.10 (Mac OS X 10.2)</H1>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3><FONT SIZE="+1">The dynamic linker now supports weak references
and weak dylibs</FONT></H3>

<P>The dynamic linker now supports weak symbol references and weak
dymamic libraries. When creating a binary with the static link editor
if all the symbols referenced from a given dependent dynamic library
are weak references then the library is marked weak. When the binary
is used at execution time and a weak library is missing the dynamic
linker will not cause an error. For all weak symbols that are missing
execution time the dynamic linker uses zero as their address. This
allows a weak symbol's address to be tested for zero at runtime
allowing the code to avoid using the weak symbol when it is missing.
Binaries that use weak references require a dynamic linker from Mac
OS X 10.2 or later.</P>

<P>To indicate a symbol is to be a weak reference the
__attribute((weak_import)) is used on the prototype of the symbol.
When a binary is created by the static link editor normally the all
the undefined symbol references of the object files being linked
should be consistent for each undefined symbol. That is all undefined
symbols should either be weak or non-weak references. If they are not
by default this is treated as an error and can be changed with the
ld(1) <B>-weak_reference_mismatches</B> <I>treatment</I> flag (see
the ld(1) man page for more details).</P>

<P>Weak referenced symbols and weak libraries are only created in the
output by the static link editor, <I>ld</I>(1), when the
MACOSX_DEPLOYMENT_TARGET environment variable is set to 10.2. If not
a warning is generated when a weak reference would be in the output
and it is not marked weak. Note the default for the
MACOSX_DEPLOYMENT_TARGET environment variable 10.1 so weak referenced
symbols and weak libraries are not created by default. See the
<I>ld</I>(1) man page for more information on the
MACOSX_DEPLOYMENT_TARGET environment variable.</P>

<H3><FONT SIZE="+1">redo_prebinding can now slide dylibs</FONT></H3>

<P>The <I>redo_prebinding</I>(1) command and the
<I>redo_prebinding</I>(3) API now can slide dymamic libraries to new
prefered addresses (see the man page for more details).</P>

<H3><FONT SIZE="+1">Support for weak definitions in coalesced
sections</FONT></H3>

<P>There is now support for the <I>.weak_definition</I>
<B>symbol_name</B> assembler directive for symbols in a coalesced
section. This is used by the C++ compiler to support explicit
template instantiation. The assembler symtax for this is:</P>

<BLOCKQUOTE>.section __TEXT, __template, coalesced<BR>
   .private_extern _template_func<BR>
   .weak_definition _template_func<BR>
   _template_func:<BR>
   li r3,1<BR>
   blr</BLOCKQUOTE>

<P>The compiler uses a coalesced section with the
<I>.weak_definition</I> directive for implicitly instantiated
templates. And uses a regualr section (.text, .data, etc) for an
explicit template instantiation.</P>

<P>The static link editor then discards all of the copies of a weak
symbol in a coalesced section if the same symbol is defined in
another section. If there exists only definitions of the weak symbols
in a coalesced section then the one from the first object file being
linked will be used and the others will be discarded.</P>

<P>The support for flat namespace images using weak symbols from a
coalesced section is likely to be buggy as the semantics for it and
lazy binding are not well defined.</P>

<H5><FONT SIZE="+1">Changes since the last releases (cctools-434 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Change redo_prebinding(1)(3) to not attempt to redo the
   prebinding on any file that has a resource fork. (Radar bug
   #2987656).</LI>
   
   <LI>Fixed a bug in the redo_prebinding(3) APIs of
   get_prebind_cksums() and object_file_type() where its error
   handling code was causing a crash in processing the error. (Radar
   bug #2992414).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last releases (cctools-433 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the nmedit(1) tool when the -p option was used
   that incorrectly changed the indirect symbol table entries to be
   marked as INDIRECT_SYMBOL_LOCAL which it shouldn't do when the -p
   option is used. (Radar bug #2986703).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last releases (cctools-432 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the dynamic linker handling of global coalesced
   symbols in two-level prebound images to be faster. (Radar bug
   #2951657).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last releases (cctools-431 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Change libtool(1) when the -static is in effect to not copy a
   dynamic library file that is on the command line into the output
   file. (Radar bug #2970223).</LI>
   
   <LI>Fixed a bug in the static link editor that was incorrectly
   setting the weak definition bit on an undefined symbol. (Radar bug
   #2969501).</LI>
   
   <LI>Fixed a bug in the static link editor that was incorrectly
   produce the error message "illegal reference to symbol defined in
   indirectly referenced dynamic library" when the -r option was
   used. (Radar bug #2969437).</LI>
   
   <LI>Fixed a crash in the static link editor that was introduced
   with the change for Radar bug #2969353. (Radar bug #2969353).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last releases (cctools-430 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor that caused it to
   produce the internal error message:
   
   <P>ld: internal error: output_section() count of external
   relocation entries does not match</P>
   
   <P>when the input object files contained a reference to a
   coalesced symbol and a definition of the symbol in a different
   object file and -bundle was used.(Radar bug #2963045).</P></LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last releases (cctools-427,8,9
for the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the nmedit(1) tool so that with the -s option when run
   on MH_OBJECT files it turns global coalesced symbols into static
   symbols. (Radar bug #2957909).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-426 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker, ld(1), when creating a
   two-level namespace image where it was producing a bad image when
   a symbol from an object was discared and became an illegal
   reference to an indirectly referenced dylib. (Radar bug
   #2956332).</LI>
   
   <LI>Changed the nmedit(1) tool so that with the -p option it turns
   global coalesced symbols into private extern symbols. (Radar bug
   #2956057).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-425 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>The fix below in the static linker, ld(1), was still
   incomplete. If multiple weak private externs are seen then a
   non-weak global symbol was seen it was also have the same problem.
   (Radar bug #2952209).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-424 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>The fix below in the static linker, ld(1), was incomplete. If
   the second symbol came from a dynamic library or the
   -bundle_loader argument it was also have the same problem. (Radar
   bug #2952209).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-423 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker, ld(1), when creating a
   dynamic library. The bug was when the static linker first sees a
   weak private extern symbol from an object file, which is later
   discarded for a non-weak symbol the resulting dynamic library has
   the wrong reference type for the symbol in the module created for
   the object file with the weak private extern symbol. This would
   result in a error of the form: (Radar bug #2952209).
   
   <UL>
      <LI>ld: /usr/local/lib/private/libstdc++.dylib(strstream.o)
      isym field (2683) of reference table entry 609 for private
      reference not in the local symbols for any module</LI>
   </UL>
   </LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-422 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Re-fixed a bug in the dynamic linker that caused it to crash
   if it loaded an image with a zero sized segment. (Radar bug
   #2931784).</LI>
   
   <LI>Changed the dynamic linker's default error handling to cause a
   break point trap instead of exiting. (Radar bug #2405619).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-421 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a small memory leak when malformed library is loaded via
   a search path in the dynamic linker. (Radar bug #2914747).</LI>
   
   <LI>Added some pentium pro instructions to the Intel assembler and
   disassembler in otool(1). (Radar bug #2928507).</LI>
   
   <LI>Added the section attribute strip_static_syms to be used by
   the compiler for the C++ exception frame section. This will cause
   the static symbols in that section to be stripped by the strip(1)
   tool when they are in a binary built for the dynamic linker.
   (Radar bug #2945659).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-420 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the dynamic linker to use the mach service interface
   for the prebinding on demand feature to allow dyld to send a mach
   message to a server registered with the bootstrap port. (Radar bug
   #2944779).</LI>
   
   <LI>Changed the dynamic linker to not trigger the prebinding on
   demand feature when the program is not using the system shared
   regions. (Radar bug #2942209).</LI>
   
   <LI>Added the new -nofixprebinding option to ld(1) to be used when
   building the tool fix_prebinding(1). Since this is likely not to
   be needed by any other program it will need to be passed to ld(1)
   via the -Wl,-nofixprebinding compiler driver flag. (Radar bug
   #2941669).</LI>
   
   <LI>Added the new -relayout_nonsplit option to the
   seg_addr_table(1) tool that could be run in tandem with the
   -update_overlaps option to assign new addresses to all flat
   libraries and fix up any overlaps found in the split region.
   (Radar bug #2935630).</LI>
   
   <LI>Fixed a bug in the redo_prebinding(3) APIs where calling a
   sequence of the redo_prebinding(3) APIs caused one of the later
   API to give the wrong answer. (Radar bug #2933102).</LI>
   
   <LI>Changed the libkld libraries to not call the routine
   reset_prebound_undefines() to avoid a possible kernel panic.
   (Radar bug #2931331).</LI>
   
   <LI>Changed the way the gprof(1) tool reads the gmon.out file to
   be faster. (Radar bug #2876478).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-419 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a problem introduced in cctools-419 where the libkld
   libraries had an undefined symbol for get_output_section. (Radar
   bug #2936244</LI>
   
   <LI>Changed the libtool(1) command to take and pass through the
   ld(1) -M option. (Radar bug #2935497).</LI>
   
   <LI>Updated the size(1) man page in include the description of te
   -arch flag that was missing from the man page. (Radar bug
   #2934869).</LI>
   
   <LI>Changed the return values for redo_prebinding(3) API's for
   statically linked executables. So needs_redo_prebinding(3) returns
   NOT_PREBINDABLE and redo_prebinding(3) when the only_if_needed
   parameter is non-zero returns REDO_PREBINDING_NOT_NEEDED. (Radar
   bug #2934831).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-418 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that caused it to crash if
   it loaded an image with a zero sized segment. (Radar bug
   #2931784).</LI>
   
   <LI>Fixed a bug in the static link editor that caused it to
   produce a bad object file with the -r option if the input object
   files contained a weak coalesced symbol and a non-weak symbol that
   has a reference to the symbol coalesced symbol. (Radar bug
   #2931708).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-417 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the assembler to not cause an error if a section
   attribute is used with out -dynamic. (Radar bug #2929120).</LI>
   
   <LI>Changed the dynamic linker to ignore any filename that is
   matched when using a DYLD PATH environment variable that is a
   directory. (Radar bug #2917660).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-416 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that would cause incorrect
   "illegal reference" error messages (Radar bug #2925564).</LI>
   
   <LI>Changed the compiler tools project to build a -static compiled
   version of libredo_prebinding for fix_prebinding(1) to link with
   when it is compiled -static. (Radar bug #2922145).</LI>
   
   <LI>Changed the dynamic linker to never run fix_prebinding(1) when
   any of its DYLD PATH or INSERT environment variables are set.
   (Radar bug #2921735).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-415 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the static linker to not generate multiply defined
   warnings and errors when one of the multiple symbols comes from a
   indirectly referenced dynamic library (Radar bug #2921080).</LI>
   
   <LI>Changed the support for weak coalesced symbols to not use the
   <I>weak_definitions</I> attribute for coalesced sections but use a
   <I>.weak_definition</I> <B>symbol_name</B> assembler directive
   (see the notes above for the new features) (Radar bug
   #2919646).</LI>
   
   <LI>Fixed a bug in ld(1) where it was incorrectly generating a
   warning message about archives that did not match the -arch flag
   when the -no_arch_warnings flag was specified.(Radar bug
   #2918296).</LI>
   
   <LI>Fixed a bug in the redo_prebinding(3) API when the
   allow_missing_architectures prarmeter was non-zero and one of the
   dependent library's architecture was missing. The code incorrectly
   updated the timestamp in the dylib for all architectutes when it
   should not have done this for architectures it did not update the
   prebinding. (Radar bug #2914003).</LI>
   
   <LI>Fixed a bug in the PowerPC assembler that did not correctly
   generate an error when a 5 parameter instruction had more than 5
   parameters (Radar bug #2911611).</LI>
   
   <LI>Added the -m option to otool(1) to not treat the filenames
   containing parenthesis as archive and an archive member syntax
   Radar bug #2904708).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-414 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that would cause incorrect
   "illegal reference to a coalesced section" error messages when a
   symbol from a regular section is used in place of discarded symbol
   in a coalesced section with the weak_definitions attribute (Radar
   bug #2911339).</LI>
   
   <LI>Changed the i386 assembler to assemble fildll and fistpll as
   fildq and fistpq (Radar bug #2909568).</LI>
   
   <LI>Changed the incomplete implementation of dlopen()'s dlsym()
   routine to append '_' to names passed to it (Radar bug
   #2908831).</LI>
   
   <LI>Fixed a bug in the redo_prebinding(1)(3) code where it would
   not preserve all two-level modules as linked if an executable was
   built with -prebind_all_twolevel_modules flag (Radar bug
   #2909518).</LI>
   
   <LI>Fixed a bug in the dynamic linker that would caused undefined
   symbol errors from sub-libraries when the DYLD_IMAGE_SUFFIX
   environment variable is used (Radar bug #2906863).</LI>
   
   <LI>Fixed a bug in the PowerPC assembler that did not correctly
   set the branch hints bit for some conditional branches (Radar bug
   #2905071).</LI>
   
   <LI>Re-fixed a bug in the dynamic linker where it would get a
   malloc(3) double free(3) error with the NSAddImage(3) API when the
   NSADDIMAGE_OPTION_WITH_SEARCHING is specified and the library was
   searched for and found to already be loaded. (Radar bug
   #2892860).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-413 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added support for weak_definitions in coalesced sections (see
   the notes above for the new features). (Radar bug #2898558).</LI>
   
   <LI>The DYLD_TRACE variable has been turned back off by default
   (Radar bug #2859113).</LI>
   
   <LI>Fixed a bug in the dynamic linker where it would get a
   malloc(3) double free(3) error with the NSAddImage(3) API when the
   NSADDIMAGE_OPTION_WITH_SEARCHING is specified and the library was
   searched for and found to already be loaded. (Radar bug
   #2892860).</LI>
   
   <LI>Fixed a bug in needs_redo_prebinding(3), and
   redo_prebinding(1)(3) where it would not determine the file needs
   to be rebuilt when its dependent libraries install names changed
   (Radar bug #2894021).</LI>
   
   <LI>Fixed some bugs in the cctools code base where there could be
   a possible leak of a Mach privileged host port. (Radar bug
   #2895931).</LI>
   
   <LI>Changed the <I>seg_addr_table</I>(1) tool's default starting
   address for allocating flat shared libraries to 0x8fe00000 not
   0x7fe00000. Also changed the default address of dyld to 0x8fe00000
   not 0x7fe00000. (Radar bug #2897418).</LI>
   
   <LI>Added a check in the static link editor, ld(1), to not allow a
   shared library to be linked against another shared library that
   has the same install name.. (Radar bug #2890446).</LI>
   
   <LI>Fixed a bug in the PowerPC assembler in the range checking for
   16 bit branch displacements so the maximum negative range is not
   treated as an error. (Radar bug #2890217).</LI>
   
   <LI>Changed the <I>dyld</I>(1) man page to be clearer on what the
   otool -L option does. (Radar bug #2710374).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-412 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed the <I>seg_addr_table</I>(1) tool's default starting
   address for allocating flat shared libraries to 0x7fe00000 not
   0x7ffc0000. Also changed the default address of dyld to 0x7fe00000
   not 0x7ffc0000. (Fix to Radar bug #2848945).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-411 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the cctools project to no longer build the file(1)
   command. This is now done by the by the System Commands project.
   (Radar bug #2883427).</LI>
   
   <LI>Fixed a bug in the dynamic link editor's error handling of
   unknown load commands with the LC_REQ_DYLD bit set. This only
   showed up with RETURN_ON_ERROR options to the dyld APIs. (Radar
   bug #2882932).</LI>
   
   <LI>Fixed some some problems with mutiple calls to the
   redo_prebinding(3) routines that did not correctly reset the
   initial state later calls did not work correctly. (Radar bug
   #2882844).</LI>
   
   <LI>Changed the dynamic link editor's internal handling of the
   DYLD_INSERT_LIBRARIES string to match what gdb(1) wants. It now
   copies the string and replaces the colon characters with null
   characters. (Radar bug #2882739).</LI>
   
   <LI>Changed the static link editor, <I>ld</I>(1), to generate an
   error message when too many sections are used. (Radar bug
   #2882553).</LI>
   
   <LI>Changed the seg_addr_table(1) command to not cause an error
   when dylibs in the seg_addr_table are not found when the tool is
   run in the -update or -update_overlaps mode. (Radar bug
   #2882324).</LI>
   
   <LI>Added the -sect_diff_relocs flag and LD_SECT_DIFF_RELOCS
   environment variable to ld(1) to allow checking that things were
   compiled with -mdynamic-no-pic (see the man page for more
   details). (Radar bug #2870529).</LI>
   
   <LI>Changed the strings(1) command to process non-object files by
   default as if the '-' (single dash) option were given. (Radar bug
   #2868578).</LI>
   
   <LI>Fixed some spelling errors in the dyld(1), dylibprof(1), ld(1)
   and nmedit(1). (Radar bugs #2854497, #2854501, #2854516 and
   #2854539).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-410 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the <I>seg_addr_table</I>(1) tool's default address
   ranges for allocating shared libraries (see the
   <I>seg_addr_table</I>(1) man page for details). Also changed the
   default address of dyld to 0x7ffc0000. Once the shared libaries
   have been moved to the new addresses this will allow a larger
   maximum limit for malloc()'s by a program (Radar bug
   #2848945).</LI>
   
   <LI>Removed the dummy versions of __isinfd(), __isnand() and
   __inf() from dyld as these were put back in libc.a .</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-409 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed dyld to defined dummy versions of __isinfd(),
   __isnand() and __inf() deal with these symbols being moved out of
   libc.a</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-408 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added the second prototype of prebinding on demand code to
   dyld. This still uses vfork and execl to run
   /usr/bin/fix_prebinding for binaries that were launch and the
   prebinding information could not be used (Radar bug
   #2870411).</LI>
   
   <LI>Fixed a case where __initialize_Cplusplus() fails to call the
   library's initializers (Radar bug #2869388).</LI>
   
   <LI>Fixed a spelling error in man page for libtool (Radar bug
   #2856089) and one in the ld man page (Radar bug #2775049).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-407 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added the first prototype of prebinding on demand code to
   dyld. This uses vfork and execl to run /usr/bin/fix_prebinding for
   binaries that were launch and the prebinding information could not
   be used (Radar bug #2866348).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-406 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Removed the proto type support for -run_init_lazily which was
   trying to allow a shared library routine to be marked to have its
   initialization routine run on first use of the library by the
   program rather than at program start up when the program is
   launched prebound. This prototype code caused a second thread to
   be created to handle the memory exception. Since the support for
   doing this without a second thread is not to be done (see Radar
   bug #2552042) this prototype code has been removed (Radar bug
   #2864021).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-405 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed <I>dependent_libs</I>(3) to work for MH_BUNDLE type
   objects (Radar bug #2862297).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-404 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the change to <I>strip</I>(1) introduced in
   cctools-404 fix (Radar bug #2860291).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-403 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the change to <I>strip</I>(1) introduced in
   cctools-402 that was causing some symbols not to be saved and
   generating an errror message stating "symbols referenced by
   indirect symbol table entries that can't be stripped" (Radar bug
   #2860291).</LI>
   
   <LI>Fixed the <I>libredo_prebinding.a</I> library to not export
   the <I>_crc32</I> symbol (Radar bug #2859919).</LI>
   
   <LI>Fixed a bug in <I>NSLookupSymbolInImage</I>(3) when that
   caused it to crash when the image was the executable or a bundle
   (not a shared library) when the symbol being looked up was not
   found (Radar bug #2857197).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-402 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the cctools project to conform to the Darwin Makefile
   API so that "make" builds everything and "make install" builds
   everything and installs things into "/" (or into the value of
   $(DSTROOT) if set) (Radar bug #2859138).</LI>
   
   <LI>Fixed a bug in the <I>needs_redo_prebinding</I>(3) API when
   the allow_missing_architectures parameter was set that did not
   check the specified architecture and returned the wrong value
   (Radar bug #2836068).</LI>
   
   <LI>Changed the use of #import to #include in the header files
   mach-o/i386/swap.h and mach-o/ppc/swap.h (Radar bug
   #2778821).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-401 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed <I>strip</I>(1) to strip private externs that were
   turned into statics that are in a dynamic library that are not
   referenced by a module other than where the symbols is defined.
   (Radar bug #2853161).</LI>
   
   <LI>Changed "it's" to "its" on the nmedit man page (Radar bug
   #2420515).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-400 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added the i386 instruction <I>fistp</I> to be the same as
   <I>fistps</I> since gcc3 generates this form. (Radar bug
   #2851846).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-399 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the <I>checksyms</I>(1) tool and removed the checks to
   see that the address(es) of a shared library matches the entries
   in the segment address table specified (Radar bug #2847857).</LI>
   
   <LI>Changed the <I>seg_addr_table</I>(1) tool in the
   <B>-update</B> or <B>-update_overlapps</B> cases to not fail if a
   dynamic library in the table does not exist (Radar bug
   #2848667).</LI>
   
   <LI>Added the new <I>throttle</I> parameter to the
   <I>redo_prebinding</I>(3) API for use by a prebinding agent to
   allow it throttle its I/O and not impact other applications when
   running in the back ground (Radar bug #2850642).</LI>
   
   <LI>Fixed a bug in the strip(1) command that caused it to crash
   when run with no options on a framework. This was a regression
   introduced in cctools-394 in the changes to strip coalesced
   symbols that are not used with indirect symbols which was Radar
   bug #2689894. (Radar bug #2851013).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-398 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed <I>seg_addr_table</I>(1) tool in the <B>-update</B> or
   <B>-update_overlapps</B> cases to not check that non-zero
   addresses in the table match the addresses in the dynamic library
   file (Radar bug #2841199).</LI>
   
   <LI>Changed the assembler's line buffer size from 32k to 64k to
   allow long .stab lines created with GCC3 to be assembled. (Radar
   bug #2840883).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-397 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed the redo_prebinding(1)(3) code to only load a library
   only once for libraries that have have mutiple names via symlinks
   (Radar bug #2839783).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-396 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Changed the needs_redo_prebinding(3) API to be able to ignore
   missing architectures with the addition of the new
   allow_missing_architectures parameter (Radar bug #2836068).</LI>
   
   <LI>Added a version number to the redo_prebinding API's (Radar bug
   #2836572).</LI>
   
   <LI>The DYLD_TRACE variable has been turned on by default in the
   dynamic linker for Jaguar development (Radar bug #2836321).</LI>
   
   <LI>Changed the static link editor to no longer print warnings
   about unused mutiply defined symbols by default. The new
   -multiply_defined_unused treatment flag can be used to re-enable
   this warning (Radar bug #2835152).</LI>
   
   <LI>The DYLD_BOOL macro was removed from the header file
   &lt;mach-o/dyld.h&gt;(Radar bug #2831923).</LI>
   
   <LI>The new mechanism to control the use of incompatible features
   in produced by the devenv tools using the MACOSX_DEPLOYMENT_TARGET
   environment variable has been implemented in <I>ld</I>(1) and
   controls the output of weak references &amp; libraries and the
   prebind checksum load command. See the <I>ld</I>(1) man page for
   more details (Radar bug #2830042).</LI>
   
   <LI>The SPI <I>_NSGetExecutablePath</I>(3) was added to return
   full path of the executable. See the <I>NSModule</I>(3) man page
   for more details (Radar bug #2432816).</LI>
   
   <LI>The message in the static link editor, <I>ld</I>(1), "Logging
   for Build &amp; Integration&#93; Used dynamic library:
   <I>filename</I>" was changed again slightly to print the
   <I>realname</I>(2) of the file <I>open</I>(2)'ed for
   <I>filename</I> and not the install name (Radar bug
   #2826775).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-395 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>The <I>seg_addr_table</I>(1) tool was changed to not use the
   SYMROOT file when <B>-update_overlaps</B> is used (Radar bug
   #2826945).</LI>
   
   <LI>The message in the static link editor, <I>ld</I>(1), "Logging
   for Build &amp; Integration&#93; Used dynamic library:
   <I>filename</I>" was changed to print the name of the file
   <I>open</I>(2)'ed for <I>filename</I> and not the install name
   (Radar bug #2826775).</LI>
   
   <LI>Added the new <I>allow_missing_architectures</I> parameter to
   the <I>redo_prebinding</I>(3) API for use by update_prebinding(1)
   to use to allow it not to fail when redoing the prebinding of a
   file that has missing architectures other than the host machine
   (Radar bug #2809673).</LI>
   
   <LI>Added the new assembler directive .weak_symbol symbol_name to
   the assembler for use by the compiler when it sees a reference to
   a symbol that has the __attribute__((weak_import)).</LI>
   
   <LI>Added the <B>-weak_reference_mismatches</B> <I>treatment</I>
   flag to the static linker, <I>ld</I>(1). That specifies how to
   treat mismatches of symbol references in the the object files
   being linked. See the <I>ld</I>(1) man page for more details.</LI>
   
   <LI>Added the -s flag to <I>ar</I>(1) to run <I>ranlib</I>(1) to
   produce a table of contents (Radar bug #2814831).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-394 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in redo_prebinding(1)&amp;(3) that should not have
   been checking for symbols being overridden from flat-libraries
   (like libMallocDebug) in two-level namespace libraries.</LI>
   
   <LI>Changed as(1) man page to correctly reference the assember
   manual in /Developer/Documentation/DeveloperTools/Assembler (Radar
   bug #2803486).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-393 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added LD_FORCE_NO_PREBIND environment variable to the static
   link editor, <I>ld</I>(1), to override the command line and the
   LD_PREBIND environment variable (Radar bug #2814402).</LI>
   
   <LI>Changed the .Os macros in nlist(3), stab(5), ranlib(5) to use
   Darwin (Radar bug #2813834).</LI>
   
   <LI>Fixed a bug in redo_prebinding(1)&amp;(3) that should not have
   been checking for symbols being overridden in two-level namespace
   images.</LI>
   
   <LI>Changed the strip(1) command to strip coalesced symbols that
   are not used with indirect symbols (Radar bug #2689894).</LI>
   
   <LI>Changed the cctools project to build the static link editor,
   <I>ld</I>(1), that outputs LC_PREBIND_CKSUM and LC_LOAD_WEAK_DYLIB
   commands only when RC_RELEASE is Proton or Jaguar.</LI>
   
   <LI>Change the static linker to not put out a LC_LOAD_WEAK_DYLIB
   load command for a library unless some thing is used from the
   library (or sub-images) and all references are weak. This avoid
   using LC_LOAD_WEAK_DYLIB load commands for umbrella frameworks and
   libraries.</LI>
   
   <LI>Added support in the code of the <I>redo_prebinding</I>(1)
   command and the code of the <I>redo_prebinding</I>(3) API for weak
   symbols and weak libraries (Radar bug #2803414).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-392 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added support in the dynamic linker for weak symbols and weak
   libraries. As well as support in the static link editor to mark a
   dynamic library as weak when all symbols used from it are marked
   weak. Other object file tools, <I>otool</I>(1), <I>nm</I>(1),
   etc., have also been updated as needed to support binaries with
   weak symbols and weak libraries.</LI>
   
   <LI>Fixed a bug that caused the static link editor to crash when
   the option <B>-prebind_all_twolevel_modules</B> was used.</LI>
   
   <LI>Changed the cctools project to no longer install the rld(3)
   man page and removed references to rld from the nmedit(1) and
   strip(1) man pages (Radar bug #2784528).</LI>
</UL>

<H5>=<FONT SIZE="+1">Changes since the last release (cctools-391 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>The tool <I>dhecksyms</I>(1) was changed to not use the
   "libfoo.a(bar.o)" syntax to specify an archive member but rather
   take the string as a file name (Radar bug #2730127).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-390 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>The man pages for <I>Mach-O</I>(5), <I>ranlib</I>(5),
   <I>stabs</I>(5) and <I>nlist</I>(3) were moved to the cctools
   project from the man project and updated (Radar bug
   #2793998).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-389 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added the <I>install_name_tool</I>(1) that changes the recored
   install names of dynamic shared libraries in Mach-O binaries. See
   the <I>install_name_tool</I>(1) man page for more details.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-388 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor that caused it to create
   binaries that had a bad load command with a zero size. This only
   happened when the binary was attempted to be prebound and the
   prebinding was disabled due to segment overlapps.</LI>
   
   <LI>Added the <B>-headerpad_max_install_names</B> flag to the
   static link editor, <I>ld</I>(1), that will add enough extra
   padding to the header pad needed to allow all install names in the
   output file being created to be later changed to be as long as
   MAXPATHLEN. Until Radar bug #2791100 is fixed passing this linker
   flag through the compiler driver <I>cc</I>(1) has to be done with
   driver flag -Wl,<B>-headerpad_max_install_names</B>.</LI>
   
   <LI>Added the <B>-D</B> option to the <I>otool</I>(1) to print out
   just the install name of the LC_ID_DYLIB load command of a dynamic
   shared library.</LI>
   
   <LI>Changed the <I>nmedit</I>(1) and <I>strip</I>(1) programs to
   not back set the modify time by 5 seconds for file that do not
   contain archives (Radar bug #2788034).</LI>
   
   <LI>Fixed a bug in the <I>kld</I>(3) library code that was
   incorrectly setting the MH_TWOLEVEL flag in the mach header of
   kernel drivers (Radar bug #2787764).</LI>
   
   <LI>Fixed a bug in the <I>redo_prebinding</I>(1)(3) code that was
   not correctly checking the LIBRARY_ORDINAL of undefined symbols in
   executables for the reserved value SELF_LIBRARY_ORDINAL (a value
   of zero) which is only used in dynamic shared libraries. This bug
   caused <I>update_prebinding</I>(1) program to crash when it ran as
   part of installing an iDVD pacakge with a malformed executable
   (Radar bug #2787021).</LI>
   
   <LI>Changed the PowerPC assembler to not treat the fsel
   instruction as optional so it can be used without specifing
   <B>-force_cpusubtype_ALL</B>.</LI>
   
   <LI>Added the option <B>-prebind_all_twolevel_modules</B> to the
   static link editor that causes all modules from two-level
   namespace prebound libraries to be marked as used by the program.
   This can also be specified with the environment variable
   <B>LD_PREBIND_ALL_TWOLEVEL_MODULES</B> (Radar bug #2784627). Until
   Radar bug #2791100 is fixed passing this linker flag through the
   compiler driver <I>cc</I>(1) has to be done with driver flag
   -Wl,<B>-prebind_all_twolevel_modules</B>.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-387 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>To allow tbe MacOS X build system to support dynamic libraries
   who's install names do not match their file system paths the
   <I>seg_addr_table</I>(1) command was changed so that if the
   install name starts with <B>@executable_path</B> then the checks
   for the install name matching the name in the table entry is not
   done.</LI>
   
   <LI>Fixed the spelling of "inconsistent" in <I>otool</I>(1) error
   messages (Radar bug #2783706).</LI>
   
   <LI>Changed the use of #import to #include in the header files in
   the mach-o directory and added guards to the needed header files
   to prevent multiple includes (Radar bug #2778821).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-386 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>To allow tbe MacOS X build system to support dynamic libraries
   who's install names do not match their file system paths the
   <B>-seg_addr_table_filename</B> <I>pathname</I> flag was added to
   the <I>ld</I>(1)<I>, redo_prebinding</I>(1), <I>checkyms</I>(1)
   and <I>check_dylib</I>(1) commands. This flag is optional and if
   not passed the install name of the dynamic library is used. For
   <I>check_dylib</I>(1) this flag is required. One other change to
   <I>check_dylib</I>(1) is that if the install name starts with
   <B>@executable_path</B> then the checks for the install name
   matching the <B>-install_name</B> argument is not done. See man
   pages on these command for details. Until Radar bug #2772574 is
   fixed passing the linker flag <B>-seg_addr_table_filename</B>
   <I>pathname</I> through the compiler driver <I>cc</I>(1) has to be
   done with driver flag
   -Wl,<B>-seg_addr_table_filename</B>,<I>pathname.</I></LI>
   
   <LI>To allow java system to have the ablity to change the Java
   VM's at runtime to include other java libraries linked with libjvm
   the NSADDIMAGE_OPTION_MATCH_FILENAME_BY_INSTALLNAME option to the
   NSAddImage(3) API was added. See the NSModule(3) man page for
   details on this option to this API.</LI>
   
   <LI>Fixed it so that when prebinding against a dynamic library
   with multiple cpusubtypes the case where the program could crash
   if run on a cpusubtype other than the one it was prebound no
   longer crashes. The fix involves running <I>strip</I>(1) or
   <I>nmedit</I>(1) on the dynamic library with multiple cpusubtypes
   (Radar bug #2676444).</LI>
   
   <LI>Fixed a grammatical error in an error message of
   redo_prebinding(3) (Radar bug #2764926).</LI>
   
   <LI>Fixed a bug in the static linker for PowerPC conditional
   branches where the prediction would get changed incorrectly (Radar
   bug #2765281).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-385 for
the 5.10 MacOS 10.2 release) </FONT></H5>

<UL>
   <LI>Added a pre-redo_prebinding checksum to binraries that get
   prebound as a new load command. When a prebound file is created or
   modified by any tool other than redo_prebinding the tool sets the
   value of the checksum in the load command to zero. When
   redo_prebinding is run on a binary if the checksum value is zero
   it calculates the checksum and stores that in the load command in
   the output it creates. If when redo_prebinding is run on a binary
   the checksum value is not zero it does not change the checksum
   value. The <I>redo_prebinding</I>(1) command has a new <B>-z</B>
   option and the t<I>redo_prebinding</I>(3) API has a new
   <B>zero_out_prebind_checksum</B> parameter to allow the B&amp;I
   tools to always zero this out. The new routine
   <I>get_prebind_cksums</I>(3) has been added to the
   libredo_prebinding.a library.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-384 for
the 5.9 MacOS 10.1 release) </FONT></H5>

<UL>
   <LI>Added the <B>-seg_addr_table</B> <I>filename</I> option to the
   <I>redo_prebinding</I>(1) command (Radar bug #2575205).</LI>
   
   <LI>The <I>redo_prebinding</I>(3) <B>slide_to_address</B>
   parameter when non-zero now slides a dynamic library to that new
   prefered address. Also the new <B>only_if_needed</B> parameter has
   been added to the <I>redo_prebinding</I>(3) API and the API now
   returns an enum value. The <I>needs_redo_prebinding</I>(3) API now
   has a new unsigned long parameter <B>expected_address</B>. The new
   routine <I>object_file_type</I>(3) has been added to the
   libredo_prebinding.a library. (Radar bug #2575205 and
   #2729976).</LI>
</UL>

<H3><FONT SIZE="+2">Notes Specific to Release 5.9 (MacOS X
10.1)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3><FONT SIZE="+1">Two level namespace</FONT></H3>

<P>Work on the compiler tools to support two level name space is now
complete and -twolevel_namespace is now the default (Radar bugs
2372124 and 2415916). See the Public release notes for the
details.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-383 for
the 5.9 MacOS 10.1 release) </FONT></H5>

<UL>
   <LI>Fixed the change to the header file &lt;mach-o/dyld.h&gt; that
   added extern "C" ifdef'ed with __cplusplus that had an extra
   trailing semicolon after the closing curly brace (Radar bug
   #2748160).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-382 for
the 5.9 MacOS 10.1 release) </FONT></H5>

<UL>
   <LI>Changied the semantic of NSLookupSymbolInImage() and
   NSIsSymbolNameDefinedInImage() to ignore the specified image if it
   is not a private image if DYLD_FORCE_FLAT_NAMESPACE is set (Radar
   bug #2731330).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-381 for
the 5.9 MacOS 10.1 release) </FONT></H5>

<UL>
   <LI>Fixed a bug introduced in cctools-381 that caused libkld to
   have an undefined symbol _twolevel_namespace_hints.</LI>
   
   <LI>Picked up the Compiler Tools release notes edits from tech
   pubs (Radar bug #2739023).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-380 for
the 5.9 MacOS 10.1 release) </FONT></H5>

<UL>
   <LI>Changed the dynamic linker and the
   NSCreateObjectFileImageFromFile(3) API to allow for a mechanism
   for "future compatibility" when adding new load commands to the
   Mach-O object file format (Radar bug #2737644).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-379 for
the 5.9 MacOS 10.1 release) </FONT></H5>

<UL>
   <LI>Added the flag <B>-twolevel_namespace_hints</B> to the static
   link editor. This specifies to create the output with the
   two-level namespace hints table to be used by the dynamic linker.
   This is the default except when the <B>-bundle</B> flag is
   specified. If this is used when the <B>-bundle</B> flag is
   specified the bundle will fail to load on a MacOS X 10.0 system
   with a malformed object error. Radar bug #2735266.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-378 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Changed the dynamic linker to not unnecessarily touches link
   edit pages for the module table of dynamic libraries when a
   dynamic library does not have any module initialization and
   termination routines (Radar bug #2732714).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-377 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Changed the header file &lt;mach-o/dyld.h&gt; to have extern
   "C" ifdef'ed with __cplusplus (Radar bug #2728016).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-376 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a problems with the cctools-376 project not building its
   cctools_ofiles target due to the changes made for Radar bug
   #2716249 (Radar bug #2727607).</LI>
   
   <LI>Fixed a bug in the dynamic linker that caused programs to
   crash when DYLD_IMAGE_SUFFIX was used (Radar bug #2724475).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-375 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed the static link editor that caused it to crash when the
   -Y flag was used with two-level namespace libraries introduced
   with the fix in cctools-375 below for Radar bug #2716249.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-374 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed the PowerPC assembler to protect the short-form macros
   which is needed so they do not incorrectly expand under certain
   circumstances (Radar bug #2717461).</LI>
   
   <LI>Removed the dependency on libstreams by the assemblers so
   nothing in the cctools project depends on</LI>
   
   <LI>Fixed the static link editor to correctly deal with the
   semantics of two-level namespace libraries so it won't build
   programs that would fail to launch correctly flagging multiply
   defined and undefined symbol errors (Radar bug #2716249).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-373 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that caused programs to get
   undefined symbols or crash (in one of dyld's symbol lookup
   routines) if the program or one of the libraries had been built
   with two-level namespace hints.</LI>
   
   <LI>Fixed a bug in the dynamic linker that caused the Puma5E9
   DirectoryService daemon thread count grows unbounded. Radar bug
   #2716915</LI>
   
   <LI>Fixed a bug in the optimization to use two-level namespace
   prebound libraries in the dynamic linker that caused programs to
   crash when using the DYLD_*_PATH enironment variables.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-372 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Changed the static link editor to have -twolevel_namespace as
   the default (Radar bug #2717678)</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-371 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Added the optimization to use two-level namespace hints to the
   dynamic linker (Radar bug #2558069).</LI>
   
   <LI>Added the -update_overlaps option to the seg_addr_table(1)
   tool.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-370 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Added the optimization to use two-level namespace prebound
   libraries to the dynamic linker.</LI>
   
   <LI>Changed the static link editor to log the used of the
   -bundle_loader argument with the environment variable
   XBS_TRACE_BUNDLE_LOADER set (Radar bug #2710229)</LI>
   
   <LI>Changed the dynamic linker to not leak a send port right on
   the thread it is doing an operation for (Radar bug #2704241).</LI>
   
   <LI>Fixed a bug in the tool redo_prebinding(1) so it uses "up to
   date" not "uptodate" in its error messages (Radar bug
   #2711451).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-369.3 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Changed the compiler tools to produce, update, pass through
   and print a two-level namespace hints lookup table (Radar bug
   #2558069). The dynamic linker does not yet use this table (that
   will be done in a subsequent release of cctools).</LI>
   
   <LI>Added the <B>-nomultidefs</B> flag to the the static link
   editor. Specifying this flag marks the umbrella being created such
   that the dynamic linker is guaranteed that no multiple defintions
   of symbols in the umbrella's sub-images will ever exist. This
   allows the dynamic linker to always use the two-level namespace
   lookup hints even if the timestamps of the sub-images do not
   match. This should be used with all Apple umbrellas. This has to
   be used with <B>-Wl,-nomultidefs</B> with the compiler driver,
   <I>cc</I>(1), until Radar bug #2705158 is fixed.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-369.2 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the tool redo_prebinding(1) that produced an
   incorrect error message when run on a binary with debugging
   symbols. The incorrect error message reported the file as
   malformed because of a bad LIBRARY_ORDINAL in a symbol table
   entry.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-369.1 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker when an umbrella library for
   a two-level namspace library is loaded after the two-level
   namspace library is initally loaded. This would cause refernces
   from from sub libraries of the umbrella to symbols in the
   two-level library to crash (Radar bug #2706662) .</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-369 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Re-fixed the bug in the dynamic linker API
   NSLookupSymbolInImage() where if called from a shared library init
   routine it would relocate the library module a second time causing
   pointers to have twice their values and the program to crash.</LI>
   
   <LI>Changed the dynamic linker API NSLookupSymbolInImage() to
   allow it to take a pointer to the mach header of the executable or
   a bundle as well as dynamic libraries.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-368 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the the tool redo_prebinding(1) with undefined
   symbol references from two-level images where the definition of
   the symbol is in a sub-framework of a flat namespace umbrella
   framework would come up undefined.</LI>
   
   <LI>Fixed a bug in the dynamic linker API NSLookupSymbolInImage()
   where if called from a shared library init routine it is possible
   that it can return a non-NULL NSSymbol but a call to
   NSAddressOfSymbol() or other uses of that NSSymbol may not work
   (in the case of NSAddressOfSymbol() it returns NULL).</LI>
   
   <LI>Picked up the new rld interfaces kld_load_from_memory &amp;
   kld_load_basefile_from_memory (see the rld(3) man page for more
   information).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-367 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor that would cause it to
   crash when using -bundle_loader and doing a cross bytesex link
   (using -arch i386 while linking on a PowerPC machine for
   example).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-366 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Added the -sub_library flag to the static linker and all the
   support needed in cctools for it. This is needed to allow
   Foundation to lhave libobjc treated as a sub-umbrella (Radar bug
   #2697458). For now this must be passed using cc(1) with
   -Wl,-sub_library,library_name until and if Radar bug #2699511 is
   fixed.</LI>
   
   <LI>Fixed a bug in the redo_prebinding(3) APIs that did not
   deallocate a buffer if the open(2) or write(2) fails for it is
   output (Radar bug #2691920).</LI>
   
   <LI>Fixed a bug static linker that with -twolevel_namespace it did
   not search the sub-umbrella's in the same order as the dynamic
   linker.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-365 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker with undefined symbol
   references from two-level images where the definition of the
   symbol is in a sub-framework of a flat namespace umbrella
   framework would come up undefined.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-364 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Added the dynamic linker API's NSAddImage(),
   NSLookupSymbolInImage() and NSIsSymbolNameDefinedInImage() for use
   in doing two-levelnamespace lookups. For more information see the
   NSModule(3) man page (Radar bug #2689833).</LI>
   
   <LI>Fixed a bug in the dynamic linker when
   NSLINKMODULE_OPTION_RETURN_ON_ERROR option of the NSLinkModule()
   API is used and plugins fail to load it can later cause the
   program to crash (Radar bug #2665925).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-363 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Added the -prebind_allow_overlap to the static linker, which
   causes it to prebind the output even if the addresses of the
   dynamic libraries it uses overlap. The resulting output can then
   have redo_prebinding(1) run on it to fix up the prebinding after
   the overlapping dynamic libraries have been rebuilt. This option
   can also be specified by setting the environment variable
   LD_PREBIND_ALLOW_OVERLAP. It is intended for use only in
   B&amp;I.</LI>
   
   <LI>Changed NXFindBestFatArch() which had a problem with selecting
   the PowerPC cpusubtype when an exact match could not be found. See
   Radar bug #2678019 against exec(2) which is the same problem as
   this but in the exec code.</LI>
   
   <LI>Changed NXCombineCpuSubtypes() for the PowerPC to select the
   highest subtype when there is not an exact match and neither is a
   601.</LI>
   
   <LI>Fixed a bug in the dynamic linker when DYLD_LIBRARY_PATH ended
   in a ':' that caused it to crash (Radar bug #2676732).</LI>
   
   <LI>Fixed a bug in the dynamic linker when a module from a
   prebound dynamic library wasn't originally used by the program was
   later dynamically bound and referenced another prebound dynamic
   library that also was not originally used that had a C++
   constuctor which was not called when the first symbol was
   dynamically bound (Radar bug #2650066).</LI>
   
   <LI>Fixed a bug in the dynamic linker that caused prebound dynamic
   libraries that had nmedit(1) run on it to not be relocated
   correctly and cause the code in them to crash (Radar bug
   #2676317).</LI>
   
   <LI>Picked up the change suggested in Radar bug #2686444 which
   makes the dynamic linker recurse too much for its algorithm to use
   the header dependencices instead of the symbol dependencies when
   calling library init routines which was added for Radar bug
   #2571628.</LI>
   
   <LI>Picked up a change to the PowerPC assembler adds the 4-arg
   option to rlwinm and friends, and uses mask-&gt;mb/me (Radar bug
   #2684824).</LI>
   
   <LI>Fixed a bug in the assembler when a ".=value" was past the
   value of the current location counter and caused the assembler to
   crash (Radar bug #2682911).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-362 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Picked up the change suggested in Radar bug #2667248 which is
   a small speed up to dyld locking.</LI>
   
   <LI>Picked up the change suggested in Radar bug #2667241 which
   added a dyld_mach_thread_self() call to lock.c to improve
   preformance by caching the last value of the mach_thread_self()
   call against the page truncated stack address making the
   call.</LI>
   
   <LI>Fixed a bug in the PowerPC assembler that set the Y bit
   inappropriately in bdnzt when no prediction was specified (Radar
   bug #2665165).</LI>
   
   <LI>Changed <I>libtool</I>(1) so that if <B>-arch_only</B> is
   specified with a specific cpusubtype other than the family
   cpusubtype it does not use <B>-force_cpusubtype_ALL</B> and passes
   the <B>-arch_only</B> argument to <I>ld</I>(1) as the <B>-arch</B>
   flag so that the output is to be tagged with that
   cpusubtype..</LI>
   
   <LI>Changed the PowerPC assembler so that vector instructions can
   be used when <B>-arch 7400</B> and <B>-arch 7450</B> are specified
   without specifying <B>-force_cpusubtype_ALL</B>.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-361 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the redo_prebinding code that did not honor the
   sticky bit when creating its output file.</LI>
   
   <LI>Picked up one of the bug fixes to the dynamic linker made in
   cctools-361 that was also needed in the redo_prebinding code.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-360 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Made a 4 bug fixes to the dynamic linker for bugs when running
   two-level namesapce images. With these fixes the 70 projects that
   Sherlock depends on can be built with -twolevel_namespace in
   effect and run.</LI>
   
   <LI>The <I>ld</I>(1) and <I>dyld</I>(1) man pages have been
   updated with the information about two level name space and the
   associated options.</LI>
   
   <LI>Fixed a bug in ld(1) in that caused it to crash when doing a
   cross byte sex link with -twolevel_namespace and linking both a
   sub-umbrella and its outer umbrella framework.</LI>
   
   <LI>Picked up the fixes for <I>otool</I>(1) -ov from Radar bug
   #2660421.</LI>
   
   <LI>The <I>redo_prebinding</I>(3) has been written and is now a
   part of cctools-361.</LI>
   
   <LI>Added the slide_to_address parameter to the redo_prebinding(3)
   API to be used in the furture to support changing the prefered
   address of a dynamic library.</LI>
   
   <LI>Fixed a bug in the <I>redo_prebinding</I>(3) API
   needs_redo_prebinding() where after it returned an error, all
   subsequent calls return PREBINDING_UNKNOWN.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-359 for
the 5.9 MacOS 10.1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in <I>strip</I>(1) that did not honor the NO_TOC
   section attribute when creating archive table of contents (Radar
   bug #2663483).</LI>
   
   <LI>Added the <I>redo_prebinding</I>(3) APIs (Radar bug
   2604014).</LI>
   
   <LI>Added the <B>-e executable_path</B> argument to
   <I>redo_prebinding</I>(1) to allow it to be used with programs and
   dynamic libraries that use the "@executable_path" prefix in
   install names.</LI>
   
   <LI>Changed the cctoolslib project to no longer build librld and
   its varients when RC_RELEASE is not Cheetah (or an earilier build)
   as the use of librld was removed earily in the Cheetah build
   cycle.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-358 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Added support for two-level namespace (Radar bugs 2372124 and
   2415916).</LI>
   
   <LI>Changed the <I>redo_prebinding</I>(1) so that it won't trash
   file it is operating on when out of disk space (Radar bug
   #2639352).</LI>
   
   <LI>Changed the dynamic linker locking routine to nolonger use an
   "extra" sync after a load with reservation which was needed only
   for some old 604 processors (Radar bug #2615783).</LI>
   
   <LI>Updated the <I>pagestuff</I>(1) man page as edited by tech
   pubs (Radar bug #2582293).</LI>
   
   <LI>Changed the the static linker's, <I>ld</I>(1), overlap
   checking when building an executable to not disable prebinding
   when the split library's __LINKEDIT segment the executable is
   being linked overlap. This can happen when some of the split
   libraries linked with are from the $(SYMROOT) and are not
   stripped.</LI>
   
   <LI>Changed <I>checksyms</I>(1) to open the default segment
   address table if none is specified via a <B>-seg_addr_table</B>
   argument (and not try to open the old DylibTable).</LI>
</UL>

<H3><FONT SIZE="+2">Notes Specific to Release 5.8 (MacOS X
10.0)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3><FONT SIZE="+1">Two level namespace</FONT></H3>

<P>Work on the compiler tools to support two level name space is in
progress (Radar bugs 2372124 and 2415916). Even though some object
file constants and command line options exist they should not be used
and are for development purposes only. Do not expect any of this to
work at all.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-357 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker where a C++ plugin using
   templates, stripped with strip(1)'s -s option and then loaded
   privately will crash the program loading the plugin. (Radar bug
   #2631405).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-356 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Added support for the Vger (7450) cpu subtype to the compiler
   tools. Radar bug #2599869.</LI>
   
   <LI>Fixed a bug in the tool seg_addr_table(1) when the -update
   option was used that it did not preserve the non-zero addresses in
   the table. Instead it changed the non-zero entries to the values
   in the libraries were built with. (Radar bug 2575214).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-355 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the tool seg_addr_table(1) where it was not
   allowing any padding when laying out split libraries. (Radar bug
   2575211).</LI>
   
   <LI>Fixed a bug in the dynamic linker where a multi threaded
   program could crash in a library module being linked. (Radar bug
   #2584800).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-354 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Changed the include file &lt;mach/vm_task.h&gt; to
   &lt;mach/vm_map.h&gt; in two files so that the cctoolslib project
   would build on the Cheetah4J8 release. (Radar bug #2579488).</LI>
   
   <LI>Fixed a bug strip(1) where it could complain about not being
   able to strip the compiler generated symbols using private extern
   coalesced symbols. (Radar bug #2584111).</LI>
   
   <LI>Changed otool(1) to disassemble sections marked with
   S_ATTR_SOME_INSTRUCTIONS as some coalesced sections created by the
   compiler that are not marked with S_ATTR_PURE_INSTRUCTIONS as they
   contain jump tables as well as instructions (Radar bug
   #2580311).</LI>
   
   <LI>The assembler has been changed to allow the .section directive
   to take mutiple attributes separated with a plus sign '+' (Radar
   bug 2580298).</LI>
   
   <LI>Fixed a bug in the implementation of two of
   NSLookupAndBindSymbolWithHint () that was causing the symbol
   tables to be touched when the symbol was already bound (Radar bug
   #2580180).</LI>
   
   <LI>Fixed a bug in the dynamic linker where it would hang the
   program when a -run_init_lazily library is used. (Radar bug
   #2582778).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-353 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the implementations of two of new lookup with
   hint APIs that were added with cctools-353. The two API's that
   were fixed were NSLookupAndBindSymbolWithHint () and
   _dyld_lookup_and_bind_with_hint() this was causing pbxbuild to
   crash in Cheetah4I.</LI>
   
   <LI>Fixed a bug in libtool(1) that caused it to crash when a
   -filelist containing 1 file was used.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-352 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>The PowerPC assembler is now installed in
   /usr/libexec/gcc/darwin/<B>ppc</B>/as with the other assemblers
   installed in /usr/local/libexec/gcc/darwin/<B>arch</B>/as (Radar
   bug 2574173).</LI>
   
   <LI>The assembler has been changed to allow the .set directive to
   work with expressions of the form a-b and produce an absolute
   value for the difference of the symbols even if the symbol are not
   yet declared when the .set directive is seen (Radar bug
   2573260).</LI>
   
   <LI>The static link editor has been changed to allow compiler to
   create position independent (read-only) unwind tables for template
   functions that the compiler creates as coalesced symbols (Radar
   bug #2564555).</LI>
   
   <LI>Changed dyld's calling of shared library init routines in the
   prebound case to not touch the symbol table (Radar bug
   2573679).</LI>
   
   <LI>The real implementations for three new lookup with hint APIs
   have been added. Previously they were just dummy covers that
   called the un hinted APIs. They are NSIsSymbolNameDefinedWithHint
   (), NSLookupAndBindSymbolWithHint () and
   _dyld_lookup_and_bind_with_hint() defined in &lt;mach-o/dyld.h&gt;
   (Radar bug 2571272).</LI>
   
   <LI>The headers files are now installed in /usr/include and
   /usr/local/include (Radar bug 2569880).</LI>
   
   <LI>Fixed a bug the static link editor that did not disable
   prebinding when symbols in a dynamic library were overridden by
   symbols in another dynamic library. Also fixed a bug in the
   dynamic linker that incorrectly tried to launch a program where
   the same case of symbols in a dynamic library were overridden by
   symbols in another dynamic library. This showed up in building a
   Cocoa app profiled and the symbols in System framework were being
   overidden by the System_profile framework (Radar bug
   #2564555).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-351 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed yet another bug in the tool nmedit(1) when used with the
   -s file option on a dynamic library hat would cause the module
   table to be malformed (specifically the fields nlocalsym and
   nextdefsym were likely to have wrong values).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-350 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the tool nmedit(1) when used with the -s file
   option on a dynamic library of the opposite byte sex that would
   cause the module table to be malformed. Also fixed a bug in the
   tool nm(1) that would crash on this type of malformed dynamic
   library.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-349 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Added the new environment variable
   DYLD_NEW_LOCAL_SHARED_REGION to the dynamic link editor which
   causes the split shared libraries to not be loaded in to the
   system wide shared region (Radar bug 2567132).</LI>
   
   <LI>Added support for three new lookup with hint APIs. They are
   NSIsSymbolNameDefinedWithHint (), NSLookupAndBindSymbolWithHint ()
   and _dyld_lookup_and_bind_with_hint() defined in
   &lt;mach-o/dyld.h&gt; (Radar bug 2567184).</LI>
   
   <LI>Changed the static link editor to call vm_msync() with the
   VM_SYNC_DEACTIVATE option to avoid having the kernel keep all the
   pages of the input object files mapped and swapping out all other
   tasks (Radar bug #2567196). This seems to fix Radar bug
   #2538797.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-348 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Changed the static link editor to use the fcntrl() F_NOCACHE
   option to avoid having the kernel cache the pages being written to
   the output file (may help fix Radar bug #2538797).</LI>
   
   <LI>Changed the dynamic link editor to use the new kernel api
   reset_shared_file(2) to deallocate the memory for a split dynamic
   library when it trys to unload it when a plugin fails to load and
   the split library was loaded by the plugin (Radar bug 2549068).
   Also see the kernel bug in Radar bug #2545459.</LI>
   
   <LI>Made a small optimization in the dynamic linker to inline
   bsearch(3) and strcmp(3) which should make launching non-prebound
   apps a bit faster (Radar bug 2558068).</LI>
   
   <LI>Added support for the new dyld/gdb interface to the dynamic
   linker as documented in &lt;mach-o/dyld_gdb.h&gt; (Radar bug
   2559324).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-347 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Clarified the nmedit(1) man page adding a comment about when
   both -s and -R are specified (Radar bug 2555491).</LI>
   
   <LI>Changed the tool nmedit(1) to handle symbols listed more than
   once in the -s file and not produce a misleading error that the
   symbol was not found in file to be edited.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-346 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Added the NSAddLibraryWithSearching api (Radar bug
   2535633).</LI>
   
   <LI>Added the _dyld_register_func_for_remove_image api for C++
   exception runtime (Radar bug 2553324).</LI>
   
   <LI>Fixed a bug in libtool(1) that did not recognize the
   -final_ouput flag correctly (needed for Radar bug 2550094).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-345 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Added logging why a binary was not prebound for B&amp;I when
   the environment variable RC_TRACE_PREBINDIND_DISABLED is set
   (Radar bug 2550094). Also see compiler driver Radar bug
   #2550125.</LI>
   
   <LI>Fixed a bug in the static link editor when a private extern
   symbol is referenced from a from coalesced section that generated
   an internal ld(1) error when using -bundle. (Radar bug
   2548925).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-344 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Changed the static link editor to ignore the
   -segs_read_write_addr address it reads from the segment address
   table if both the -segs_read_only_addr and -segs_read_write_addr
   address are zero use 0x10000000 (256meg) for the
   -segs_read_write_addr to construct a valid layout for a split
   library. (Radar bug 2544818).</LI>
   
   <LI>Changed the dynamic link editor to not try to deallocate the
   memory for a split dynamic library when it trys to unload it when
   a plugin fails to load and the split library was loaded by the
   plugin (Radar bug 2544696). Also see the kernel bug in Radar bug
   #2545459.</LI>
   
   <LI>Fixed a bug in the redo_prebinding(1) tool that caused it to
   not work on split dynamic libraries producing dynamic libraries
   with the items to be relocated not updated correctly (Radar bug
   2544599).</LI>
   
   <LI>Fixed a bug in the redo_prebinding(1) tool that was not
   detecting that the dependent libraries of an executable were out
   of date with respect to thier prebinding (Radar bug 2544407).</LI>
   
   <LI>Changed the static link editor to allow split dynamic library
   __LINKEDIT segments to overlap an not disable prebinding (Radar
   bug 2543932).</LI>
   
   <LI>Changed the redo_prebinding(1) tool so that with the -c (check
   only) option it will check the installed dynamic library against
   the argument of the tool to see the build time stamps match (Radar
   bug 2541232).</LI>
   
   <LI>Fixed a bug in the seg_addr_table(1) tool that would cause it
   to crash with after a number of messages from malloc are printed
   about "Deallocation of a pointer not malloced" (Radar bug
   2540744).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-343 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Added the needed support for the static link editor to do with
   the tracking and setting the library ordinal for
   -twolevel_namespace against the "primary" library. (Radar bug
   2538835).</LI>
   
   <LI>The cctoolslib project can now build the kld libraries now
   that the kernel framework installes the libsa headers. Radar bug
   2538829.</LI>
   
   <LI>Fixed a bug with the -sub_umbrella option in the static link
   editor which causes ld(1) to crash when a library built with the
   -sub_umbrella option is linked against. (Radar bug 2538825).</LI>
   
   <LI>Fixed a bug with the -allowable_client option in the static
   link editor which builds malformed objects for cross bytesex
   builds. (Radar bug 2538774).</LI>
   
   <LI>Fixed a bug in the static link editor where it was creating
   local relocation entries for global coalesced symbols when the
   flag -keep_private_extern was specified (Radar bug 2536788).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-342 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed the inadvernt change to the value of the constant
   REFERENCED_DYNAMICALLY in &lt;mach-o/nlist.h&gt; that got changed
   as part of Radar bug 2534043.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-341 for
the 5.8 MacOS 10.0 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the change to the static link editor for Radar
   bug 2530729 where it also changed the reference table for
   non-coalesced symbols which it should not have.</LI>
   
   <LI>Added the needed constants, macros, and comments to the header
   files &lt;mach-o/loader.h&gt; and &lt;mach-o/nlist.h&gt; for
   supporting two level name space. As well as support for the
   -twolevel_namespace, -flat_namespace and -force_flat_namespace
   options. (Radar bug 2534043). The compiler driver does not yet
   pass these flags (see Radar 2534146) so -Wl,-option can be used
   for now.</LI>
   
   <LI>Fixed a bug in the static link editor so that non-lazy
   pointers to private extern coalesced symbols work correctly.
   (Radar bug 2534011).</LI>
   
   <LI>Added the -allowable_client and -client_name options to the
   static link editor to allow other framworks and bundles to link
   with a subframework built with -umbrella which are not part of
   that umbrella. (Radar bug 2533649). The compiler driver does not
   yet pass these flags (see Radar 2534146) so -Wl,-option,argument
   can be used for now.</LI>
   
   <LI>Fixed a bug in the tool seg_addr_table(1) where it was
   printing a message about an overlapp when it shouldn't. (Radar bug
   2531831).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-340 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor when it creates a
   dynamic library and discards a private extern coalesced symbol
   after already keeping a global one. This produced a dynamic
   library that can't be linked against as reference table has the
   wrong type of reference (Radar bug 2530729).</LI>
   
   <LI>Added the -sub_umbrella option to the static link editor.
   (Radar bug 2530028).</LI>
   
   <LI>Fixed a bug in the tool otool(1) where it was printing a
   message about a Stray PPC_RELOC_PAIR relocation entry when it
   shouldn't. (Radar bug 2523845).</LI>
   
   <LI>Added the kld(3) interfaces as requested by the driver group.
   (Radar bug 2523649).</LI>
   
   <LI>Changed the nmedit(1) and strip(1) commands to allow the file
   listing symbol names not to end in a new line. (Radar bug
   2520711).</LI>
   
   <LI>Changed the file(1) command to print "CFM binary" instead of
   data for CFM binaries. (Radar bug 2511106).</LI>
   
   <LI>Fixed a bug in the dynamic link editor where it would used the
   wrong global coalesced symbol if the program overrides a symbol
   used by a shared library library init routine in a library that
   also defines the shared library init.. (Radar bug 2511358).</LI>
   
   <LI>The dynamic library was changed to allow the environment
   variables that effect which libraries a program uses to let root
   always use them even for set uid and set gid programs (Radar bug
   2497678).</LI>
   
   <LI>The man page for rld was moved from the file rld.3l to rld.3
   so man rld will work correctly. (Radar bug 2505760).</LI>
   
   <LI>The sizes of the data structures in the dynamic linker have
   been tune to match the Kodiak1G7 Finder. (Radar bug 2504987).</LI>
   
   <LI>The support to allow a shared library routine to be marked to
   have its initialization routine run on first use of the library by
   the program rather than at program start up when the program is
   launched prebound is now extened to module initialization routines
   (C++ static initializers). This is done with the shared library is
   built via the flag -run_init_lazily. Until Radar bug #2491001 is
   fixed this option can't be specified directly to the compiler
   driver <I>cc</I>(1). For now the linker option can be used via the
   <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
   driver option. This feature is broken in the Kodiak1G7 kernels,
   see Radar bug #2504021. (Radar bug 2502941).</LI>
   
   <LI>Fixed a bug in the static link editor where it generates a
   warning about the use of a global coalesced symbol not coming from
   the first dynamic library when it shouldn't. (Radar bug
   2503703).</LI>
   
   <LI>Fixed a bug in the static link editor where a global coalesced
   symbol is repodted as a multply defined symbol when first defined
   in a dynamic library then in a static library. (Radar bug
   2503694).</LI>
   
   <LI>Fixed a bug in the static link editor when a private extern
   coalesced symbol is defined in a dynamic shared library and the
   static link editor creates a modlule table entry with the wrong
   number of external defined symbols. This results in a malformed
   dynamic library. (Radar bug 2503688).</LI>
   
   <LI>Changed the tools nmedit(1) and strip(1) to not change global
   coalesced symbols into statics or strip them. (Radar bug
   2503670).</LI>
   
   <LI>Fixed a memory leak in the NSCreateObjectFileImageFromFile()
   API. (Radar bug 2500014 ).</LI>
</UL>

<H4><FONT SIZE="+2">Notes Specific to Release 5.7 (MacOS X Public
Beta)</FONT></H4>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3>Automatic initialization of dependent libraries</H3>

<P>The dynamic linker now calls shared library initialization
routines in their dependent order (Radar bug #2441683).</P>

<P>The new function __initialize_Cplusplus() now can be called from a
shared library initialization routines to cause the static C++
objects in the library to be initialized. This them allows shared
library initialization routines to make use of statically initialized
C++ objects. (Radar bug 2441683).</P>

<H3>Update to module termination functions</H3>

<P>The dynamic linker now supports module termination functions for
all types of images (executables, plugins that are not unloaded and
shared libraries). This will allow the C++ compiler to use module
termination functions for destructors instead of atexit(3) so that a
C++ plugin that has a destructor being unloaded does not cause a
crash in atexit(3).</P>

<H3>Update to support for managing the list of globally exported
names</H3>

<P>If you are building a dynamic library you nolonger have to do and
"ld -r" of all of your object files into one object file. The tool
nmedit(1) now can be run on dynamic libraries. Further
__private_extern__ symbols can now be used in modules of dynamic
libraries that also have definitions of global symbols. (Radar bug
2420307 ).</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-339 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Changed the dynamic link editor so that the debugger interface
   does not cause the task being debugged to hang. (Radar bug
   2487248).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-338 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Updates the cctools project with the edited release notes from
   tech pubs. (Radar bug 2510274).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-337 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the assembler that would not set the correct
   value for the trailing N_FUN stab which was the difference of a
   symbol at the end of the function and the function symbol when the
   function was large. (Radar bug 2504182).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-336 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor when a private extern
   symbol is referenced from a from coalesced section that generated
   an internal ld(1) error. (Radar bug 2497954).</LI>
   
   <LI>The segment address table tool, seg_addr_table(1), was changed
   to allocate the read-only region of split libraries starting at
   0x70000000 and the read-write regions starting at 0x80000000.
   (Radar bug 2496843).</LI>
   
   <LI>Changed the dynamic linker to align the stack it starts using
   to 32 bytes where previously it was aligened to 16 bytes. (Radar
   bug 2495403).</LI>
   
   <LI>Changed the tool nmedit(1) to make it compatible with an
   upcoming compiler change that creates a new an end of function
   symbolic table entry. This new entry has an empty name for a N_FUN
   stab which nmedit(1) previouly generated an error when
   encountered. (Radar bug 2495413).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-335 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Added support for marking coalesced symbols and to not appear
   in a static libraries table of contents. This will be used for
   RTTI data genetated by the C++ compiler. (Radar bug 2494286).</LI>
   
   <LI>Fixed a bug in the dynamic linker which would crash in
   _dyld_image_containing_address if a plugin was unloaded. This
   showed up in Kodiak1E5 with
   /Developer/Applications/OpenGLInfo.app/Contents/MacOS/OpenGLInfo.
   (Radar bug 2493911 also 2496107).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-334 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Fixed a bug resulting in an internal error in the static link
   editor when linking objects with private extern coalesced symbols.
   (Radar bug 2493452).</LI>
   
   <LI>Fixed a bug in the static link editor when creating relocation
   entries for literal pointer sections used by Objective-C for split
   libraries. This would cause the dynamic linker to crash the
   program when the library was not loaded at its prefered address.
   (Radar bug 2493445).</LI>
   
   <LI>Fixed a bug in the dynamic linker with respect to
   @executable_path not finding a library sometimes. (Radar bug
   2493400).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-333 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Added support to allow a shared library routine to be marked
   to have its initialization routine run on first use of the library
   by the program rather than at program start up when the program is
   launched prebound. This is done with the shared library is built
   via the flag -run_init_lazily. Until Radar bug #2491001 is fixed
   this option can't be specified directly to the compiler driver
   <I>cc</I>(1). For now the linker option can be used via the
   <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
   driver option. (Radar bug 2490396).</LI>
   
   <LI>The verification tool has been changed not to generate an
   error message if a library is not found in the segment address
   table if specified. Also all checks for conventional path names of
   dynamic libraries has been removed. (Radar bug 2490411).</LI>
   
   <LI>The segment address table tool, seg_addr_table(1), was changed
   to pack all the split libraries into the first 128meg of a split
   256meg region. Also it now checks so that only the first 128meg of
   a 256meg split segment is allocated. (Radar bug 2490413).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-332 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Changed the dynamic linker for gratuitous changes to
   load_shared_file() in Kodiak1E. (Radar bug 2484973).</LI>
   
   <LI>Fixed a bug in strip(1) and nmedit(1) which produces bad
   outputs for fat files with more than one architecture. (Radar bug
   2484851).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-331 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that caused programs to
   crash that used used signal() when trying to fully bind the signal
   handler which showed up in Kodiak1C4. (Radar bug 2483733 ).</LI>
   
   <LI>Fixed a bug in the tool seg_addr_table(l) when the -update
   operation was used where it would sometimes not update the entries
   to be updated with the correct address. Also added the
   -disablewarnings option. (Radar bug 2482327).</LI>
   
   <LI>The tool nmedit(1), the dynamic and static linker has been
   changed to allow nmedit(1) to be run on dynamic libraries. (Radar
   bug 2420307).</LI>
   
   <LI>The dynamic linker has the changes need to support the changes
   in the load_shared_file() interface. (Radar bug 2480801).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-330 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>The cctools-331 project has the change that was missed for the
   Kodiak1C directory layout so that the release notes are installed
   in /Developer/Documentation/ReleaseNotes/CompilerTools.html
   instead of
   /System/Developer/Documentation/ReleaseNotes/CompilerTools.html as
   was changed for Kodiak1A.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-329 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>The dynamic linker has a fix for a bug that was introduced
   with the code to call shared library initialization routines in
   their dependent order for an edge case that caused the program to
   crash in dyld. The edge case is when a shared library
   initialization routine ends up depending on the executable and
   there are undefined symbols (Radar bug 2477856).</LI>
   
   <LI>The dynamic linker now uses the variable _cpu_has_altivec and
   the new kernel trap processor_facilities_used() to determine when
   to save fp and altivec registers (Radar bug 2477859).</LI>
   
   <LI>The cctools-330 project has the changes for the Kodiak1C
   directory layout so that /Library/Frameworks is used instead of
   /MacOSX/Library/Framework as was changed for Kodiak1A (Radar bug
   #2477862).</LI>
   
   <LI>Fixed an error message in the static linker for the incorrect
   usage of the -umbrella flag where -sub_framework was used where
   -umbrella should have been used (Radar bug 2477866).</LI>
   
   <LI>Changed the static linker, libtool and the assemblers so they
   once again send messages to ProjectBuilder (Radar bug
   2473864).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-328 for
the 5.7 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the strings(1) command that caused it not to
   read standard input if any command line argument was specified
   (Radar bug #2459126).</LI>
   
   <LI>The dynamic linker now calls shared library initialization
   routines in their dependent order (Radar bug 2441683).</LI>
   
   <LI>The new function __initialize_Cplusplus() now can be called
   from a shared library initialization routines to cause the static
   C++ objects in the library to be initialized. This them allows
   shared library initialization routines to make use of statically
   initialized C++ objects (Radar bug 2441683). This requires the
   dylib1.o from the Csu-33 project (Radar bug 2466821).</LI>
   
   <LI>The dynamic linker now supports module termination functions
   for all types of images (executables, plugins that are not
   unloaded and shared libraries) (Radar bug #2469527). This requires
   the crt1.o from the Csu-33 project (Radar bug #2466821).</LI>
   
   <LI>A check has been added to the PowerPC assebler to check the
   range of a PPC_RELOC_BR14 and PPC_RELOC_BR24. Previously it
   assembled the branch instructions wrong that overflowed without
   any error (Radar bug #2469441).</LI>
   
   <LI>Added the new routines NSCreateCoreFileImageFromFile(3) and
   _dyld_debug_task_from_core(3) to support getting the information
   about the state of the dynamic libraries in a core file (Radar bug
   #2155790).</LI>
   
   <LI>Created the man pages NSModule(3) and NSObjectFileImage(3)
   (Radar bug #2469604).</LI>
   
   <LI>Fixed a bug in libtool/ranlib that did not deal with zero
   length archive members that had long names and used 4.4BSD
   extended format #1 and caused ranlib to crash (Radar bug
   #2460604).</LI>
   
   <LI>Changed nmedit(1) and strip(1) to allow Macintosh \r's in the
   files specified with lists of symbols (Radar bug #2458346).</LI>
   
   <LI>Fixed a few bugs in the seg_addr_table(l) tool. The first was
   a problem with not correctly reporting the previous file name that
   had an address that matched the table when another library did not
   match the table's address. The second was when -upate was used and
   a new library like a _profiled version was added with a 0x0
   address and there was an existing version with an assigned address
   the tool complained abou the new library not having the correct
   address (Radar bug #2469876).</LI>
   
   <LI>Changed the seg_addr_table(l) tool to check to make sure it
   does not assign any addresses above 0xc0000000 since this address
   space is not available on intel in user space (Radar bug
   #2418080).</LI>
   
   <LI>Changed the PowerPC assembler to check to make sure that 14
   bit branch instructions do not overflow (Radar bug #2469441).</LI>
   
   <LI>Cleaned up the yet to be implemented NSReplaceModule() API,
   added enum for other link edit errors and changed the yet to be
   implemented NSCreateObjectFileImageFromMemory() API to return
   NSObjectFileImageFailure (Radar bug #2469558).</LI>
   
   <LI>Changed the checksyms(l) tool to check to allow debug symbols
   for _debug frameworks and libraries (Radar bug #2469760).</LI>
   
   <LI>Changed libtool(1) to pass the -whatsloaded flag on to ld(1)
   (Radar bug #2469803).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-327 for
the 5.6 MacOS X Public Beta release)</FONT></H5>

<UL>
   <LI>The cctools-328 project has the change to the new directory
   layout for /usr/local/lib/system instead of
   /AppleInternal/Developer/System.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-326 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>The cctools-327 project has the changes to support the new
   directory layout. The old layout can still be built from the
   cctools-327 project if RC_RELEASE is Gonzo and the -othercflags
   -D__GONZO_BUNSEN_BEAKER__ is defined.</LI>
</UL>

<H3><FONT SIZE="+2">Notes Specific to Release 5.6 (MacOS X
DP4)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3>Support for using shared page table entries on the PowerPC with
dynamic libraries</H3>

<P>For the current generation of PowerPC chips to be able to share
the page table entries among different processes everything mapped
from one 256meg boundary to another 256meg boundary must be the same
in the different processes. This is has not been possible with MacOS
X Mach-O shared libraries as the code and data for each shared
library is staticly linked such that the virtual address of the data
immediately follows the code. And since the data for each process is
different in each process shared page table entries can't be
used.</P>

<P>To make it possible for the current PowerPC chips to be able to
use shared page table entries a new form of MacOS X Mach-O shared
libraries can now be created and used starting with the MacOS X DP4
release. The new form of shared libraries splits the code and data in
to two groups. There is one group for the read-only segments
generated by the compiler system and one group for the read-write
segments.</P>

<P>To create a the new "split" form of shared libraries the new
option <B>-segs_read_only_addr</B> <I>&lt;hex_address&gt;</I> is used
to specify the preferred virtual address of the read-only segments
(where <B>-seg1addr</B> <I>&lt;hex_address&gt;</I> is continued to be
used for the existing "flat" non-split shared libraries). The address
of the read-write segments is specified with
<B>-segs_read_write_addr</B> <I>&lt;hex_address&gt;</I> or defaults
to the address of the read-only segments plus 256meg
(0x10000000).</P>

<P>Until Radar bug #2443215 is fixed these options can't be specified
directly to the compiler driver <I>cc</I>(1). For now the linker
options can be used via the
<B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
driver option.</P>

<P>When creating a shared library in the split the read-only segments
must not contain any relocation entries. So the used of anything but
the default <B>-read_only_relocs error</B> is not allowed with the
split form of shared libraries.</P>

<P>The kernel starting with the MacOS X DP4 release will reserve two
256meg regions for these split shared libraries to be loaded into
every process that uses the dynamic linker. All shared libraries
having the split form must be placed in these regions. To make it
easier to maintain the preferred virtual addresses of shared
libraries an alternate way of specifying their addresses will be used
by the projects built by Apple's Build and Integration team for MacOS
X. This will involve using a "segment address table" for all dynamic
libraries. This segment address table will be built by Apple's Build
and Integration team and installed in
/AppleInternal/Developer/seg_addr_table. The segment address table
will have entries for each shared library containing its install name
and its <B>-seg1addr</B> or pair of addresses for its
<B>-segs_read_only_addr</B> and <B>-segs_read_write_addr</B>. Then
specifying the address of a shared library will be done with the
option <B>-seg_addr_table</B>
<I>/AppleInternal/Developer/seg_addr_table</I>. Since it may not be
possible to get all project building shared libraries to change to
using the <B>-seg_addr_table</B> option in a timely manner, this can
also be specified via an environment variable. The environment
variable <B>LD_SEG_ADDR_TABLE</B> can be set to the file name of the
segment address table and if so the static link editor will ignore
any <B>-seg1addr</B>, <B>-segs_read_only_addr</B>,
<B>-segs_read_write_addr</B> and <B>-seg_addr_table</B> arguments and
will then use the addresses from the table.</P>

<P>The local tool seg_addr_table(l) is also provided for used by
Apple's Build and Integration team to build and maintain the segment
address table. See the man page for more details.</P>

<P>Radar entry #2415906.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-325 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Fixed a bug NSCreateObjectFileImageFromFile(3) where it does
   not vm_deallocate(2) the memory for an object file if it is not an
   MH_BUNDLE type. Radar bug #2459727.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-324 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor which caused it to
   crash. Most notably when run via libtool with the error
   "/usr/bin/libtool: fatal error in ld".</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-323 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Changed the dynamic link editor to support using just prebound
   dynanmic libraries when there are coalesced symbols.</LI>
   
   <LI>Fixed a bug in the static link editor when linking coalesced
   symbols that only appear in dynamic libraries getting a mutiply
   defined symbol error that shouldn't.</LI>
   
   <LI>Fixed a few bugs in the seg_addr_table (l) tool. The first was
   a problem with not correctly stepping over the fixed regions not
   to allocate when doing a -relayout or an -update. The second was
   with using a -seg_addr_table argument and it failing with a can't
   open error.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-322 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Changed again the cctools and cctoolslib projects to leave
   things in /System/Library when built for the Space release train
   (changed back from cctools-322). The release notes are put into
   /MacOSX/Documentation/Developer/ReleaseNotes instead of
   /System/Documentation/Developer/ReleaseNotes for the Space
   release. Also the libraries that are part of the System framework
   are installed in /AppleInternal/Developer/System instead of
   /Local/Developer/System for the Space release. The project
   currently relys on RC_RELEASE being set to Space and the macro
   __SPACE__ being defined. When this becomes the default for the
   Gonzo release train these things will be tweaked to make this
   happen by default for the Gonzo release train.</LI>
   
   <LI>Fixed a bug in the tool redo_prebinding(1) which could cause a
   shared library initialization routine not to be called. Radar bug
   #2450931.</LI>
   
   <LI>Changed the dynamic linker to use VRsave to know which Altivec
   registers to save before calling shared library initialization or
   module initialization routines. With gcc 2.95 now the default,
   VRsave is now correctly set. Radar bug #2450639.</LI>
   
   <LI>The -checkonly option has been added to the seg_addr_table(l)
   tool at the request of Apple's Build and Integration team. See the
   man page for details.</LI>
   
   <LI>The tool check_dylib(l) has been created for Apple's Build and
   Integration team. See the man page for details.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-321 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Changed the cctools and cctoolslib projects to build and put
   things in /MacOSX/System instead of /System/Library when built for
   the Space release train. Also the release notes are put into
   /Developer/ReleaseNotes instead of
   /System/Documentation/Developer/ReleaseNotes. The project
   currently relys on RC_RELEASE being set to Space and the macro
   __SPACE__ being defined. When this becomes the default for the
   Gonzo release train these things will be tweaked to make this
   happen by default for the Gonzo release train.</LI>
   
   <LI>Fixed the end(3) man page to correctly reference get_end(3).
   Radar bug #2448020.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-320 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Changed the assembler so the built in section directives
   .objc_class_names, .objc_meth_var_types and .objc_meth_var_names
   now use the (__TEXT,__cstring) section. Radar bug #2447117.</LI>
   
   <LI>Changed checksyms(l) not to check that objc_unique was run on
   the file. Radar bug #2448096.</LI>
   
   <LI>Edited the dyld(1) man page to fix its readablity. Radar bug
   #2438996 and #2392392.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-319 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>The static linker now has support for guarding against direct
   linking of non-umbrella frameworks via the <B>-umbrella</B>
   option. See the ld man page for more details. Radar bug #2443212.
   Until Radar bug #2443215 is fixed this option can't be specified
   directly to the compiler driver <I>cc</I>(1). For now the linker
   option can be used via the
   <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
   driver option.</LI>
   
   <LI>Changed the cctools project to install dyld's images.h and
   stuff/bool.h into
   /System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders/dyld
   . Radar bug #2376135.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-318 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>The static and dynamic linker now supports a new "split" form
   of shared libraries to to reduced wired-memory usage (see above in
   the new features section). Radar bug #2438996.</LI>
   
   <LI>Changed the checksyms(l) used in the B&amp;I verification
   process to not require dynamic libraries have execute bits set.
   Also changed checksyms(l) to allow all known MacOS X DP3 dynamic
   library install paths as a stop gap until information is provided
   by the App Packaging owners as to where are the Apple conventional
   install paths.</LI>
   
   <LI>Edited the dyld(1) man page to fix its readablity. Radar bug
   #2438996.</LI>
   
   <LI>Changed the cctools project to no longer install the GNU
   source as this is covered by the Darwin project.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-317 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Changed the cctools project to also install librld.a into
   /usr/local/lib/ . Radar bug #2436955.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-316 for
the 5.6 MacOS X DP4 release)</FONT></H5>

<UL>
   <LI>Changed the cctools project top level Makefile to build both
   the cctools and cctoolslib targets when RC_RELEASE is Darwin.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-315 for
the 5.5 MacOS X DP3 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that did not correctly bind
   the modules which define shared library initialization routines
   after an unsucessful attempt to launch the program using just
   prebound shared libraries. Radar bug #2428317.</LI>
   
   <LI>Fixed a bug in the static link editor that generated an error
   mesage of the form "malformed object, illegal reference (reference
   from a lazy symbol pointer section ..." when linking an object
   that was the result of compiling an empty file with the -pg flag.
   Radar bug #2431435.</LI>
</UL>

<P>&nbsp;</P>

<H3><FONT SIZE="+2">Notes Specific to Release 5.5 (MacOS X
DP3)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<H3>Support removing duplicate debugging information from header
files</H3>

<P>The static linker supports removing duplicate debugging
information from header files when this information appears in
multiple object files being linked. This is done with the -Si option
to the static link editor is now the default. To have no symbols
stripped when linking the new -Sn option is now used.</P>

<H3>Support the first phase of "coalesced symbols".</H3>

<H4>I) Goals</H4>

<P>The goal of coalesced symbols is to provide the linker support
needed for the C++ compiler to solve problems with generating code
for the following C++ features:</P>

<UL>
   <LI>implicit template instantiation</LI>
   
   <LI>static variables in inline functions</LI>
   
   <LI>RTTI</LI>
</UL>

<H4>II) The functionality</H4>

<P>A "coalesced symbol" is a true definition of a symbol that may
appear one or more times in the compilation units generated by the
compiler. This will allow the compiler to provide a better user
experience by not forcing the user to tell the compiler exactly where
to output the definition of the symbol, which is problematic in
implementing some of the above C++ features.</P>

<P>The static link editor will allow multiple definitions of a
"coalesced symbol" without any warnings or errors. The static link
editor will output only one instance of each "coalesced symbol" using
the first instance it encounters in the object files being linked.
The static link editor will always output an instance of a "coalesced
symbol" if it appears in the object files being linked even if it
also appears in the dynamic libraries being referenced.</P>

<P>The dynamic link editor will then do its relocation such that only
one instance of each "coalesced symbol" is used throughout the
program.</P>

<H4>III) The implementation</H4>

<P>A Mach-O new section type, "coalesced", has been be added to the
compiler tools. A "coalesced symbol" will simply be a symbol defined
in a section with the type "coalesced". The assembler has been
changed to accept the new section type identifier "coalesced".</P>

<P>For example to create a "coalesced symbol" named _foo as a 4-byte
integer initialized to one, the following assembly code could be
used:</P>

<BLOCKQUOTE>.section __DATA, __coalesced, coalesced<BR>
   .globl _foo<BR>
   _foo: .long 1</BLOCKQUOTE>

<P>An example of a template function created as a "coalesced symbol"
could use the following assembly code:</P>

<BLOCKQUOTE>.section __TEXT, __template, coalesced,
   pure_instructions<BR>
   .globl _template_func<BR>
   _template_func:<BR>
   li r3,1<BR>
   blr</BLOCKQUOTE>

<P>Once the compiler group establishes conventional sections for
various C++ "coalesced symbols" we will add built-in assembler
section directives like: .template, .coalesced_data, .rtti_data as
equivalents for the above section directives.</P>

<P>A new section type constant, S_COALESCED, has been added to the
header file, &lt;mach-o/loader.h&gt; which describes the Mach-O
object file format. In the object files created by the assembler
"coalesced" section types have this constant in the flags field of
the section header.</P>

<P>The static and dynamic linker look at the section type to
determine that the symbol is a "coalesced symbol" and allow multiple
definitions of "coalesced symbols".</P>

<P>The static link editor effectively divides up a "coalesced
section" on the boundaries of the symbols in that section,
associating the bytes of the section after each symbol with the
preceding symbol. An object file is considered malformed if a
"coalesced section" did not have a symbol at the first address of the
section.</P>

<P>The symbolic debugging symbol table entries, STABS, for a given
coalesced symbol must be preceded by the new begin nsect symbol stab
(N_BNSYM) and an end with the new end nsect symbol stab (N_ENSYM).
These stabs must be at the start and end of the given coalesced
symbol.</P>

<H4>IV) The restrictions</H4>

<P>In order to allow the dynamic linker to make sure only one
instance of of each "coalesced symbol" is used throughout the
program, all references to "coalesced symbols" via instructions must
be done indirectly through symbol stubs (for calls) or through
non-lazy pointers. The static link editor enforces this restriction
by checking that there are no direct relocation entries to "coalesced
symbol" using section difference relocation entries, and if any are
found it will considered the object file malformed. This is must be
true even if the coalesced symbol is defined in the same compilation
unit where references are also being made.</P>

<P>The assembler and static link editor have also been changed so
that if a global symbol is referenced in a "coalesced section" that
is defined, an external relocation entry is used instead of a local
relocation entry.</P>

<P>Routines generated for C++ static initializers which are
initializing a "coalesced symbol" must also be a "coalesced symbol".
They do require one code generation change to make it possible that
they could be called more than once and only do the initializing the
first time. This is required so they dynamic linker does not need to
keep track of the initializers for each "coalesced symbol". It will
further require the existing implementation in the GNU compiler to
change slightly. Currently the GNU compiler generates one
initializers function for all C++ static initializers in the
compilation unit. This will have to change so that a separate
function would be created for initializing a "coalesced symbol".</P>

<H3>Lazy binding of symbols vs binding all symbols at launch
time</H3>

<P>For MacOS X the dynamic linker defaults to lazy binding. That is,
symbols are linked into the program as they are needed. For function
calls this usually happens when the function is called the first
time. For data references this happens before any code that can
reference the data is executed. This generally reduces the time it
takes to start execution of the program by delaying the binding and
initialization of symbols.</P>

<P>With lazy binding, the linking of symbols into the program happens
in a distributed fashion as opposed to binding all symbols when the
program is launched. A program or plugin may be built with the
-bind_at_load option to force all symbols to be bound when the
program is launched or when the plugin is loaded.</P>

<P>There can be rare cases where lazy binding and binding at launch
can produce different results. These cases can only occur when a
program is using more than one library that defines the same symbol,
which is not generally a common occurrence. For example a program
could be linked against both a debug and non-debug version of the
same library. Even in this case, usually both libraries define all
the same symbols, so the symbols the program ends up using are those
from the first library listed on the program's link line. However if
the two libraries do not define the same symbols organized in the
same way, that's when these rare cases where lazy binding and binding
at launch can produce different results.</P>

<P>To understand these cases one needs to understand what is meant by
"how a library's symbols are organized" and how that effects linking.
The symbols of a library are organized into modules. Library modules
are the object files that were used to build the library and are
typically the created from compiling one source file. However the
library implementor may combine a number of compiled source files for
a library subsystem into a larger object file that is then used to
build the library. The library implementor will do this when the
interface symbols that make up a subsystem share some private or
internal data, such that all the interface symbols for that subsystem
must be used together for the subsystem to work correctly. Examples
might include a malloc subsystem, a pthreads subsystem, or data base
subsystem. These subsystems may have many interface symbols that must
be used together as they are sharing data among the interfaces. And
the interface symbols would not work correctly if some symbols were
used from one implementation and some from another. Rather than just
let the program work incorrectly in these cases, when the static or
dynamic linker detects these cases they will generate a multiply
defined symbol error. Indicating that parts of more than one
implementation of a subsystem are trying to be used in the same
program.</P>

<P>Now how library modules effects linking is, that if a symbol is
needed to resolve an undefined reference, the first library module in
the list of libraries that has a definition is used. Then not only is
the symbol that resolves the undefined reference used from the
library module but all symbols in that same library module are then
used.</P>

<P>So when more than one library that defines the same symbol is
used, the static and dynamic linkers must select a definition for the
symbol to be used from one of the libraries. As stated above, the
first library module in the list of libraries that has a definition
is used. Then all the symbols from that library module are then used.
So which library modules get used by a program is a function of which
undefined references must be resolved, the order they are resolved
and which symbols are defined in each library module.</P>

<P>For lazy binding and binding at launch the list of undefined
references that must be resolved are typically different. For lazy
binding this usually is a subset of the undefined symbols that a
program uses. So if more than one library is used by the program that
defines the same global symbols but are organized into different
library modules, it is possible that depending on which undefined
references are need to be resolved that different library modules
maybe selected. In the case of lazy binding a first subset of the
symbols may select a library module from one library and a second
subset of symbols may select a library module from a different
library. This may lead to multiply defined symbol errors. Or may lead
to symbols being used from different implementations of a
subsystem.</P>

<P>But in the common case, if no two libraries that are used by a
program define the same symbols there is not a difference in lazy
binding and binding at launch. Further if there is more than one
library that defines the same symbols and the are organized into the
same library modules again there is no difference in lazy binding and
binding at launch. For MacOS X post PR2, the static link editor, now
detects cases where lazy binding and binding at launch could produce
different results, and issues a warning. The warning suggests the use
of the -bind_at_load option. Also for MacOS X post PR2, the dynamic
linker ensures that symbols in a program built with the -bind_at_load
option, are the same as the static link editor determined would be
used. See Radar bug #2378121.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-314 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that did not save volatile
   floating point or Altivec registers before calling shared library
   initialization or module initialization routines. Radar bug
   #2424571.</LI>
   
   <LI>Fixed a bug in the dynamic linker that did not fully bind
   library initialization routines which had private extern
   references. Radar bug #2423809.</LI>
   
   <LI>Removed the references to Rhapsody from the libtool man page.
   Radar bug #2399334.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-313 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>The environment variable DYLD_ABORT_MULTIPLE_INITS has been
   added as a debugging aid. When set it causes the program to abort
   when multple library initialization routines are being run which
   can happen if code called via a library initialization routine
   makes a call to a dyld API. Then under the debugger it is easy to
   do a back trace and find the code that is making the call to a
   dyld API via code called from a library initialization routine.
   Radar bug #2423143.</LI>
   
   <LI>Re-fixed a bug in the dynamic linker that did not fully bind
   library initialization routines before calling them. There was a
   case with Classic crashing. Radar bug #2413950.</LI>
   
   <LI>New the API _dyld_debug_set_error_func() has been added to the
   dyld debug API set to better determine what has happened when a
   dyld debug API returns DYLD_FAILURE. Radar bug #2421770.</LI>
   
   <LI>The dynamic linker was changed to send a DYLD_MODULE_REMOVED
   and then a DYLD_IMAGE_REMOVED event when the plugin is unloaded.
   This will allow the debugger to know the plucin is nolonger
   present in the task. Radar bug #2421760.</LI>
   
   <LI>The public release notes have been edited by the Tech Pubs
   group for DP3. Radar bug #2420736.</LI>
   
   <LI>The tool nmedit is now installed in /usr/bin instead of
   /usr/local/bin so that Project Builder can use it for export
   lists. Radar bug #2396595.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-312 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that did not fully bind
   library initialization routines before calling them. Radar bug
   #2419089.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-311 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Changed the static linker to cleanup the code gen of the
   compiler where the compiler generates an indirect call to a
   function forward defined. This code gen caused a problem when the
   dynmaic linker was trying to fully bind a library initialization
   routine because the indirect call in this case does not have an
   undefined reference in the object module but rather a definition.
   This then caused initialization routines to be interleaved when
   this call was lazy bound. Radar bug #2417690.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-310 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that caused gdb to print
   variables as &lt;incomplete type&gt;. This can only occur if an
   incremental link is done as part of building the image (aka ld
   -r). Radar bug #2415697.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-309 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static linker that incorrectly printed a
   warning message about symbols used from earilier dynamic libraries
   and suggesting the use of -bind_at_load when it shouldn't. Also
   fixed one more case where something can be successfully staticly
   linked with -bind_at_load and then fails to link with a multiply
   defined error from the dynamic linker when executed. Radar bug
   #2378121.</LI>
   
   <LI>Fixed a bug in the static linker that did not recognize the
   -Sn option. Radar bug #2415456.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-308 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker that did not fully bind
   library initialization routines before calling them. Radar bug
   #2413950.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-307 for
the 5.5 MacOS X PR3 release)</FONT></H5>

<UL>
   <LI>Support in the static linker was added to remove duplicate
   BINCL/EINCL stab groups. This is enabled with the -Si option to
   ld(1) and is the default (see new features above). To get the
   static linker to not strip any symbols the new option -Sn can be
   used. Radar bug #2410704.</LI>
   
   <LI>Changed &lt;mach-o/dyld.h&gt; so that it does not use "bool"
   when compiled with the C++ compiler. Radar bug #2412898.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-306 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Added the first phase of support for "coalesced symbols".
   Currently only support for -dynamic code gen for PowerPC has been
   tested (intel and static code gen is not yet tested). The support
   is complete except for prebinding with coalesced symbols. Because
   of that reason use of coalesced symbols should not yet be used in
   B&amp;I builds. See new features above. Radar bug #2411273.</LI>
   
   <LI>Changed the references to "Rhapsody" to "MacOS X" on the
   assembler man page. Radar bug #2399294.</LI>
   
   <LI>Removed the the references to "Rhapsody" on the ar(5) man page
   and the statement that the extended format was not supported as
   support for it was added back in the Rhapsody DR2 release. Radar
   bug #2399338.</LI>
   
   <LI>Added support for the G4 (7400) cpu subtype to the compiler
   tools. Radar bug #2397523.</LI>
   
   <LI>The static and dynamic link editors were changed to fix cases
   where lazy binding can result in two different globals functions
   being used (or multiply defined errors). In these cases the
   program needs to be built with the -bind_at_load flag (or run with
   DYLD_BIND_AT_LAUNCH set) and the static link editor now detects
   these cases and issues a warning suggesting the use of the
   -bind_at_load option and then lists the symbols which are used
   from dynamic libraries where there is an earilier dynamic library
   with a definition of the symbol. See notes above about "Lazy
   binding of symbols vs binding all symbols at launch time". Radar
   bug #2378121.</LI>
   
   <LI>Added the dyld environment variable DYLD_IMAGE_SUFFIX which
   can be set to a library or framework suffix to be used by the
   program. Also included in this change is an optimization that
   removes some system calls in the case a library has already been
   loaded. of Radar bug #2384450</LI>
   
   <LI>Added printing a line of the form "&#91;Logging for Build
   &amp; Integration&#93; Used dynamic library: dylib_name", where
   dylib_name is a dynamic library being used in the link. This is
   done when the environment variable RC_TRACE_DYLIBS is set. Radar
   bug #2389955.</LI>
   
   <LI>Fixed a bug in the assemblers where it would ignore a line
   followed by a single '#'. Radar bug #2393418.</LI>
   
   <LI>The tool, nmedit(l), was fixed so that "-arch i386" can be
   used as the i386 architecture family type like the other object
   file tools. This bug caused nmedit(l) with "-arch i386" not to
   work on object files that had the i486 cpusubtype. Radar bug
   #2405763.</LI>
   
   <LI>The Intel assembler was changed to assemble the 'fild'
   instruction the same as the "filds" and the "fist" instruction the
   same as the "fists". Radar bug #2410226.</LI>
   
   <LI>The cctools project was changed to install the external
   release notes instead of the Documentation project. Radar bug
   #2411118.</LI>
</UL>

<H3><FONT SIZE="+2">Notes Specific to Release 5.4 (MacOS X
PR2)</FONT>&nbsp;</H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>Dynamic shared libraries now can have a dynamic shared library
initialization routine (Radar bug #2367584). This routine is
specified to libtool(1) with the new "-init <I>symbol_name</I>"
argument. The library initialization routine is called before any
symbol is used from the library including C++ static initializers
(and #pragma CALL_ON_MODULE_BIND routines). If cc(1) -dynamiclib is
used instead of libtool(1), you may need to pass the argument with
-Wl,-init, <I>symbol_name </I>until Radar bug #2367569 is fixed. Also
gdb(1) will not read the symbols of dynamic shared libraries with
library initialization routine due to Radar bug #2367576.</P>

<P>The dynamic linker now supports shared library install names that
start with "@executable_path/" and substitutes the directory path of
the executable for "@executable_path/"when locating the library. This
requires a kernel from Beaker2H3 or later. Without that kernel, this
feature can only be used if argv&#91;0&#93; is in fact the name of
the executable and it is an absolute path or relative to the current
directory (contains at a '/' in the argv&#91;0&#93; string). The
kernel in Beaker2H3 was extended to pass the first argument to exec()
to the entry point interface, and having that kernel this feature can
be used no matter what argv&#91;0&#93; is.</P>

<P>The NSLinkModule() API now has an option to cause it to return
when there is an error loading the module and a new API
NSLinkEditError() to get the error information. To use this the
constant NSLINKMODULE_OPTION_RETURN_ON_ERROR needs to be or'ed into
the options parameter to NSLinkModule(). Then if NSLinkModule()
returns NULL the error information can be retrieved with
NSLinkEditError().</P>

<P>The NSLINKMODULE_OPTION_RETURN_ON_ERROR option is an alternative
method to the existing dyld error handling which fits better with a
plugin model. With the NSLINKMODULE_OPTION_RETURN_ON_ERROR option,
the model for handling errors is to simply return without any changes
to the program. To support this model of error handling a new API has
been added to allow the programmer to get the error information that
the dyld error handlers would normally have gotten. The API is
similar to the dyld linkEdit error handler except that all the
parameters are passed as pointers to be filled in.</P>

<BLOCKQUOTE>extern void NSLinkEditError(<BR>
   NSLinkEditErrors *c,<BR>
   int *errorNumber,<BR>
   const char **fileName,<BR>
   const char **errorString);</BLOCKQUOTE>

<P>The last two parameters return pointers to static buffers
allocated in the dynamic linker which get reused on subsequent calls
to NSLinkEditError(). The NSLinkEditErrors enum has been extended to
include NSLinkEditUndefinedError and
NSLinkEditMultiplyDefinedError.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-305 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the dynamic linker where a non-lazy reference
   from a dynamic library module that only had private extern symbol
   definitions was not getting bound. This showed up in keymgr.o from
   libcc_dynamic.a referencing the symbol ___eh_global_dataptr. Radar
   bug #2391709.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-304 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) when -U flags to allow undefined symbols
   and LD_PREBIND was set it would exit non-zero. Radar bug
   #2389026.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-303 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Backed out the fix for Radar bug #2378121 done in cctools-303
   as it caused progams like Terminal to launch very slowly. Terminal
   is calling signal(2) which causes the executable containing the
   signal handler to be fully bound. The fix for Radar bug #2378121
   in this case caused a big slow down in the case of fully
   binding.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-302 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug where gprof -S crashed when run on the Appkit
   trying to produce an order file. Radar bug #2377933.</LI>
   
   <LI>Changed a message printed by checksyms(l) from using "release
   control" to using "Build &amp; Integration". Radar bug
   #2377929.</LI>
   
   <LI>Fixed a bug in the dynamic linker in a case where lazy binding
   can result in two different globals functions being used. Radar
   bug #2378121.</LI>
   
   <LI>Picked up the Tech Pubs edited dyld(1) man page. Radar bug
   #2366767.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-301 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<P>Fixed a bug where the intel instruction "setc %al" did not
assemble. Radar bug #2374684.</P>

<P>Fixed a bug in the static link editor where the wrong private
extern function could be called from a dynamic library. Radar bug
#2374465. This resulted in throw() and dynamic_cast() to crash when
in a shared library. The Finder was the one having these problems
(Radar bugs 2369470 and 2364994).</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-300 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the cctools project that caused System
   Framework to come up with an undefined for the symbol
   _qsort_load_order_values.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-299 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Dynamic shared libraries now can have a dynamic shared library
   initialization routine Radar bug #2367584. See new features
   above.</LI>
   
   <LI>The PowerPC instruction "vspltisb v1,-1" assembles wrong.
   Radar bug #2366525.</LI>
   
   <LI>There was a typo in arch 3 man page where "pcc" should have
   been "ppc". Radar bug #2366781.</LI>
   
   <LI>There was a typo in dyld.1 man page where "effect" should have
   been "affect". Radar bug #2366750.</LI>
   
   <LI>Fix a bug where the assembler does not catch the error case of
   an unterminated .macro directive. Radar bug #2368659.</LI>
   
   <LI>The was a bug in nmedit(1) when using -R and processing more
   than one architecture it printed an error stating "more than one
   symbol" for a symbol listed in the -R file appeared in the input
   file. Also changed nmedit(l) to strip all arch's when no -arch
   flags are specified to match the behavior of strip(1). Radar bug
   #2367598.</LI>
   
   <LI>Changed the cctools project when building for Beaker
   (RC_OS=macos) to not install its headers into the DSTROOT. Radar
   bug #2370826.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-298 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Fixes were made to one of the assembly language interfaces in
   the dynamic linker to allow it to be used with CFM vector
   libraries. Radar bug #2358962.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-297 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Added support for "@executable_path/" in shared library
   install names. See new features above.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-296 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug introduced in the cctools-296 dyld that caused
   Terminal (and potentally any program) to crash. This was fixed as
   part of the quick looks for Beaker2F and is fixed in the released
   Beaker2F1.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-295 for
the 5.4 MacOS X PR2 release)</FONT></H5>

<UL>
   <LI>The NSLinkModule() now can return when an error occurs in
   loading a module and the new API NSLinkEditError() allows error
   information to be retrieved. See new features above.</LI>
   
   <LI>Fixed a bug in NSAddLibrary() that did not load the dependent
   libraries. This showed up when doing an NSAddLibrary() on Carbon
   and then trying to look up a symbol in the QuickDraw library that
   Carbon was linked with.</LI>
   
   <LI>Added the -v (verification flag) to checksyms(1) to print out
   a single line for each type of error checksyms finds. Also added
   hacks to checksyms(1) to allow all MacOS X PR1 paths for shared
   library install names.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-294 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>The sources have had the Darwin copyrights added to them.</LI>
   
   <LI>A bug fix was made to the new API
   _dyld_image_containing_address() that was added for cctools-294.
   The routine would generally return the wrong for anything loaded
   with NSLinkModule() or any non-prebound shared library. The values
   used for checking the address ranges effectively had the value of
   the vmslide (the difference from the staticly linked address and
   the address loaded) added twice. So if the vmslide were zero, as
   in the case with prebound libraries things it would work but tend
   to fail otherwise (except for the executable which worked).</LI>
</UL>

<H3><FONT SIZE="+2">Notes Specific to Release 5.3 (MacOS X
PR1)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>The NSLinkModule() API now can create private modules and the new
API NSLookupSymbolInModule() allows symbols to be looked up in a
private module. To do this the interface to NSLinkModule() has change
in a compatible way from:</P>

<BLOCKQUOTE>extern NSModule NSLinkModule(<BR>
   NSObjectFileImage objectFileImage,<BR>
   const char *moduleName,<BR>
   enum bool bindNow);</BLOCKQUOTE>

<P>to:</P>

<BLOCKQUOTE>extern NSModule NSLinkModule(<BR>
   NSObjectFileImage objectFileImage,<BR>
   const char *moduleName,<BR>
   unsigned long options);</BLOCKQUOTE>

<P>with the options as follows:</P>

<BLOCKQUOTE>#define NSLINKMODULE_OPTION_NONE 0x0<BR>
   #define NSLINKMODULE_OPTION_BINDNOW 0x1<BR>
   #define NSLINKMODULE_OPTION_PRIVATE 0x2</BLOCKQUOTE>

<P>The first two are the same as bindNow with a value of FALSE and
TRUE. The private options is what is used to load a private module.
The API for getting to the symbols of a NSModule that has been
privately linked is:</P>

<BLOCKQUOTE>extern NSSymbol NSLookupSymbolInModule(<BR>
   NSModule module,<BR>
   const char *symbolName);</BLOCKQUOTE>

<P>Then to get the address of the returned NSSymbol, the existing
NSAddressOfSymbol() API can be used.</P>

<P>The NSUnLinkModule() API is now implemented with enough
functionality to make Apache work (Radar bug #2262020). This has been
confirmed by Wilfredo Sanchez the owner of the Apache project. It
currently has the following limitations (to be fixed in future
releases):</P>

<UL>
   <LI>only works for plugins (can only be called on modules that
   were returned by NSLinkModule).</LI>
   
   <LI>C++ plugins that have static destructor can't be unloaded. The
   program will crash in atexit(3) when the unlinked destructor is
   attempted to be called.</LI>
   
   <LI>Objective-C plugins should not be unloaded. The Objective-C
   runtime has not been updated to know about unloading and the
   result is very likely to crash the program.</LI>
   
   <LI>The debugger has not been update to know about unloading and
   trying to debug a program that unloads it's plugins may confuse or
   crash the debugger.</LI>
</UL>

<P>The interface to NSUnLinkModule has change in a compatible way
from:</P>

<BLOCKQUOTE>extern enum bool NSUnLinkModule(<BR>
   NSModule module,<BR>
   enum bool keepMemoryMapped);</BLOCKQUOTE>

<P>to:</P>

<BLOCKQUOTE>extern enum bool NSUnLinkModule(<BR>
   NSModule module,<BR>
   int options);</BLOCKQUOTE>

<P>where the options are:</P>

<BLOCKQUOTE>#define NSUNLINKMODULE_OPTION_NONE 0x0<BR>
   #define NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED 0x1<BR>
   #define NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES 0x2</BLOCKQUOTE>

<P>The first two are the same as keepMemoryMapped with a value of
FALSE and TRUE. The reset lazy references allows unloaded modules
with only call sites to undefined functions (direct calls not calls
through pointers) to be allowed when unloading and not causing an
undefined symbol error. Then if a subsequent module is loaded that
defines symbols that were previously undefined, the call sites will
then use the new definitions. This is currently only implemented for
PowerPC. For intel it prints a message and exits even if the symbol
gets redefined. This will be fixed for intel in a future release.</P>

<P>Support for module termination functions has been added for
plugins (only). Currently the compiler pragma CALL_ON_UNLOAD (as well
as CALL_ON_LOAD) is not yet implemented to use this feature as
intended. A work around can be done in place of having the
pragma:</P>

<BLOCKQUOTE>void my_term(void)<BR>
   {<BR>
   /* do module termination */<BR>
   }<BR>
   /* #pragma CALL_ON_UNLOAD my_term */<BR>
   #pragma SECTION data ".section __DATA, __mod_term_func,
   mod_init_funcs"<BR>
   static void (*dummy)(void) = my_term;<BR>
   #pragma SECTION data</BLOCKQUOTE>

<P>The cctools-294 project has an implementation of the FreeBSD
dlopen() interfaces. The header file dlfcn.h and the library libdl.a
are NOT installed or built by the project by default. This is to
avoid automatic configure scripts of projects from using this stuff
in release builds before it can be tested by project owners. If an
when a future version of cctools has a working set of dlopen()
interfaces it will install the header file dlfcn.h and build the
library code by default. Most likely the library code will be in
included in System framework and not a separate libdl.a. At that time
a man page will installed. Currently there is no MacOS X Server
version of the man page and the FreeBSD version must be
consulted.</P>

<P>There is support for managing the list of globally exported names
in cctools that is generally not well known. For managing the list of
globally exported names with a list of global symbols that is
maintained by the developer the existing tools nmedit(l) and strip(1)
can be used. The approach is to build the project normally with full
debugging symbols. Then nmedit(1) is run on that with the list of
exported symbols and the result is placed in the standard $(SYMROOT).
nmedit(1) turns all other global symbols not listed in the file into
statics. That resulting file still has all the debugging symbols and
can be fully symbolically debugged. Then when the file is copied from
the $(SYMROOT) to the $(DSTROOT) in the install process, it is
strip(1)'ed with the usual -S (or other options) to remove debugging
symbols. This leaves the static symbols as well as the global symbols
so that back traces will still have the symbol names. Assuming the
list of symbols is in the file save_syms, the example commands would
be:</P>

<BLOCKQUOTE>nmedit -s save_syms $(OBJROOT)/hello -o
   $(SYMROOT)/hello<BR>
   strip -S $(SYMROOT)/hello -o $(DSTROOT)/hello</BLOCKQUOTE>

<P>If you are building a dynamic library you may also have to do and
"ld -r" of all of your object files into one object file. You can
also manage the list of globally exported names in your project with
nmedit(1) or strip(1).</P>

<P>In the future there will also be compiler support to use the
external/internal #pragmas that CFM uses. Today you can use the key
word __private_extern__ to get this functionality.</P>

<P>As of cctools-292, the cctools project has been updated to be able
to built with the egcs compiler with no warnings from source code of
the project (the header files in Beaker1I2 still produce
warnings).</P>

<P>The cctools-294 project has been ported and tested on MacOS X
using Beaker1L. To build cctools-294 for MacOS X, first the SDK has
to be installed on a PowerPC machine with
/System/Administration/Installer.app into /Local/Public/MacOSX. Then
the commands to build it are:</P>

<BLOCKQUOTE># ~rc/bin/buildit -release Beaker cctools-293 RC_OS=macos</BLOCKQUOTE>

<P>Only the profileServer is left to be ported. It is currently not
built for MacOS X when RC_OS=macos.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-293 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>The cctools-294 version of ld(1) as a fix for a crash that
   ocurred when building the CoreGraphicsRIP-30 project for
   Beaker1L3.</LI>
   
   <LI>The new API _dyld_image_containing_address() was added. It
   takes an address and returns TRUE or FALSE depending on if that
   address is in any dyld managed image. Radar bug #2325380.</LI>
   
   <LI>The man page for libtool(1) has been updated. Radar bug
   #2324061.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-292 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>The cctools-293 project code has the fixes needed to complile
   and use POSIX threads instead of cthreads. This has been tested on
   Beaker1I2 compiling with -D_ POSIX_THREADS defined (this is
   defined in &lt;unistd.h&gt; for Beaker1J2 but not for Beaker1I2).
   Testing could not be done using Beaker1J2 as is too unstable. The
   code that tried to use pthreads in cctools-292 will not even
   compile when _ POSIX_THREADS is defined.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-291 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>The cctools project code now uses POSIX threads instead of
   cthreads.</LI>
   
   <LI>The default segment alignment in the static link editor when
   linking a PowerPC target is now 4K instead of 8K. All other target
   architectures have not changed and their default segment alignment
   remains 8K. Radar bug # 2277625.</LI>
   
   <LI>The cctools project code now compiles with no warnings from
   the egcs compiler (header files in Beaker1I2 still produce
   warnings).</LI>
   
   <LI>Moved the i386 assembler to /usr/local/libexec/i386/as for
   MacOS X builds. The assembler driver /usr/bin/as and the compiler
   driver /usr/bin/cc are uneffected and will find the assembler in
   either the old or new place.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-290 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug introduced in the cctools-288 ld(1) when doing an
   ld -r with an indirect entry for a private_extern. This problem
   would show up when executing a binary with the error from dyld:
   
   <UL>
      <LI>dyld: /System/Applications/MailViewer.app/MailViewer
      Undefined symbols:<BR>
      dyld_lazy_symbol_binding_entry_point</LI>
   </UL>
   </LI>
   
   <LI>The problem in this case was the Message framework built with
   the ld(1) that had the bug. This also has been seen in Carbon
   apps, with the problem the Carbon framework.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-289 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the code added to nmedit for the -p option. The
   bug caused uses of nmedit without the -p option and with the -s
   option to not find any symbols listed in the -s argument.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-288 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>Added the -p option to nmedit(l) which instead of changes
   symbols to static changes them to private externs. This option is
   allowed by itself without a -s or -R option which then changes all
   defined symbols to private extern. This is used to change all the
   symbols in libcc_dynamic.a to private extern as the C++ compiler
   has never supported the keyword __private_extern__.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-287 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>Fixed nmedit(l) to change the indirect symbol table entries
   for global symbols it makes static. This problem showed up in
   using nmedit for the work around with the egcs compiler and C++
   RTTI common data in a dynamic shared library.</LI>
   
   <LI>Fixed ld(1) when doing an ld -r with an indirect entry for a
   private_extern. This problem showed up when building the Message
   framework and would get the error from ld: "ld: indirect symbol:_y
   can not be a private extern". And it also showed up in building
   Carbon when using strip which would produce the error message from
   ld: "ld: x.o indirect symbol table entry 0 past the end of the
   symbol table".</LI>
   
   <LI>Fixed ld(1) to correctly relocate non-lazy symbol pointers for
   non-global symbols. This can occur in one of three ways when a
   global symbol is changed to a non-global, via private_extern and
   ld -r, via nmedit and via strip.</LI>
   
   <LI>Changed dyld to print on stderr not on stdout for it's
   debugging output (Radar bug #2274737).</LI>
   
   <LI>Added passing -whyload through libtool(1) to ld(1).</LI>
   
   <LI>Fixed a bug so that if a PowerPC binary used the
   RESET_LAZY_REFERENCES NSUnLinkModule() option, and it was not
   linked with crt1.0, bundle1.o or dylib1.o that has the ".long
   dyld_stub_binding_helper" fix it won't crash.</LI>
   
   <LI>Changed the message printed when the environment variable
   RC_TRACE_ARCHIVES is set from: "RC_TRACE_ARCHIVES archive_name"
   to: "&#91;Logging for Build &amp; Integration&#93; Used static
   archive: archive_name". Radar bug #2310273.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-286 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>The NSLinkModule() now can create private modules and the new
   API NSLookupSymbolInModule() allows symbols to be looked up in a
   private module. See new features above.</LI>
   
   <LI>The NSUnLinkModule() API is now implemented with enough
   functionality to make Apache work (Radar bug #2262020). See new
   features above.</LI>
   
   <LI>The cctools-287 project has an implementation of the FreeBSD
   dlopen() interfaces. See new features above.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-285 for
the 5.3 MacOS X PR1 release)</FONT></H5>

<UL>
   <LI>Support for module termination functions has been added for
   things loaded with NSLinkModule() when NSUnLinkModule() is called.
   In this version of cctools NSUnLinkModule() is not implemented
   (that will be integrated in a later version). For now to test this
   -DTESTING_MOD_TERM needs to be set in RC_CFLAGS.</LI>
   
   <LI>Change the use of the i386 cpp macro to __i386__ and ppc to
   __ppc__ so this this version of cctools will compile with the
   upcoming release of the egcs compiler.</LI>
</UL>

<H5><FONT SIZE="+1">Changes made in cctools-285</FONT></H5>

<UL>
   <LI>Fixed a bug in libtool(1) that was not using NEXT_ROOT when
   set to expand -l flags.</LI>
   
   <LI>Added printing a line of the form "RC_TRACE_ARCHIVES
   archive_name", where archive_name is a archive being put into the
   output of libtool(1) -static or being linked against by ld(1).
   This is done when the environment variable RC_TRACE_ARCHIVES is
   set. Radar bug #2303376.</LI>
   
   <LI>Made a change to the way the cctools project builds it's
   objects for the System framework. It now creates archives in
   /Local/Developer/System for libdyld, librld and libmacho. It
   creates profile versions with _pg and -static compiled versions
   with _static in the filenames. Radar bug #2268413.</LI>
   
   <LI>Removed an incorrect warning in ld(1) that stated
   <I>-keep_private_externs</I> must be used with <I>-dynamic</I>.
   This would be produced when using ld(1) with <I>-static</I>.</LI>
   
   <LI>Fixed a bug in ld(1) that was producing an incorrect error of
   the form "indirect symbol table entry 353 past the end of the
   symbol table". This can occured when a file is strip(1)'ed and
   global symbols are removed. This was found when the CoreGraphics
   framework was stripped removing two globals symbols and then the
   resulting framework was linked against.</LI>
   
   <LI>Fixed a bug in the i386 assembler in assembling the cmpxchg
   instruction. Previously this assembled using the opcode from the
   i486 manual ( 0F A6/r and 0F A7/r ) and was changed to the opcode
   in the Pentium manual (0F B0/r and 0F B1/r). The dissassembly in
   otool(1) was also changed.</LI>
   
   <LI>Fixed a bug in ranlib(1) (aka libtool) after printing warnings
   about with multiple symbols defined different archive members it
   crashed with a bus error.</LI>
   
   <LI>Fixed a bug in strip(1) when using the <I>-s filename</I>
   option on a dynamic library. This showed when linking against a
   CoreGraphics framework, the resulting link would fail with a
   malformed object error "ilocalsym field plus nlocalsym field of
   module table entry 1 past the end of the symbol table".</LI>
   
   <LI>Changed the #import &lt;sys/types.h&gt; in ranlib.h to
   #include &lt;sys/types.h&gt;. Radar bug #2303937.</LI>
   
   <LI>Made cctools 285 build without -DNeXT defined.</LI>
   
   <LI>A fix was made to the dyld debug code that get the thread
   suppend count of reset correctly for the thread that has the dyld
   lock when the dyld debug thread handles a message.</LI>
   
   <LI>The fixes were made to the dyld debug code made in cctools
   283.1 were picked up. Includes Radar bug #2286661.</LI>
   
   <LI>The fixes to moved the text files gprof.flat and gprof.callg
   from /usr/lib to /usr/share made in cctools 281.2 were picked
   up.</LI>
</UL>

<H5><FONT SIZE="+1">Changes made in cctools-284</FONT></H5>

<UL>
   <LI>The fix to ar(1), made in cctools-281.1 (Radar bug #2284290)
   was merged in. The changed made to fix the dyld debug code made in
   cctools-283.1 are not in cctools-284.</LI>
</UL>

<H5><FONT SIZE="+1">Changes made in cctools-283.1</FONT></H5>

<UL>
   <LI>Fixes were made to the dyld debug code for the port to MacOS X
   (Mach 3.0) to get it working.</LI>
</UL>

<H5><FONT SIZE="+1">There are no changes in cctools-283
clone</FONT></H5>

<H5><FONT SIZE="+1">Changes made in cctools-282</FONT></H5>

<UL>
   <LI>The tools have been ported to MacOS X. The needed code is
   #ifdef'ed __MACH30__ which is defined in &lt;mach/mach.h&gt; when
   building for MacOS X.</LI>
</UL>

<P>&nbsp;</P>

<H3><FONT SIZE="+2">Notes Specific to Release 5.2 (Rhapsody
CR1)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>The compiler tools now support the 4.4bsd archive extened format 1
for long names (and names with embedded spaces). This is now the
default. The option -L to produce archives using the extended format
and the option -T to truncate names, as previously supported in the
ar(1) command now also apply to ranlib(1) and libtool(1). Radar bug
#1670513.</P>

<P>The header file &lt;mach-o/getsect.h&gt; has been added to the
system as the proper place to get the prototypes of the Mach-O
routines. Radar bug #2227839.</P>

<P>The VMX opcodes have been added to the Rhapsody PowerPC assembler
and are documented in the assembler manual. Radar bug #2237908.</P>

<P>The routine sa_rld_with_symtab() was added for use with the
standalone runtime link editor. Radar bug #2231758.</P>

<H5><FONT SIZE="+1">There are no changes in cctools-281.3
clone</FONT></H5>

<H5><FONT SIZE="+1">Changes made in cctools-281.2</FONT></H5>

<UL>
   <LI>Moved text files gprof.flat and gprof.callg from /usr/lib to
   /usr/share . gprof/Makefile and gprof/gprof.h were changed. Radar
   bug #2287470.</LI>
</UL>

<H5><FONT SIZE="+1">Changes made in cctools-281.1</FONT></H5>

<UL>
   <LI>In a stat struct there are three struct timespec's (defined in
   sys/time.h). The field name ts_sec was change to tv_sec to match
   Posix (Radar bug #2005170). So in for cctools, the use in
   ar/archive.c of the field ts_sec was changed to tv_sec in three
   places. Radar bug #2284290.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-280 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Changed redo_prebinding to exit with a error code of 3 if the
   dependent libraries are out of date. Radar bug #2259447.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-279 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Changed libtool to pass -F and -L flags to objcunique. Radar
   bug #2257931.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-278 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>A bug fix was made to the dyld library debug code that fixes a
   problem which prevents gdb getting the symbols for dynamic
   libraries. Radar bug #2255036.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-277 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>The header file &lt;mach-o/rld.h&gt; was moved to
   PrivateHeaders in the System Framework as it uses
   &lt;streams/streams.h&gt; in it's API. Radar bug #2249999.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-276 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Changed the handling of unknown i386 and ppc subtypes so that
   the routines never fail but return sprintf()'ed strings for the
   decriptions. For i386 the string will be of the form "Intel family
   X model Y" and for ppc it will be "PowerPC cubsubtype X". Radar
   bug #2241690.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-275 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Build fix, the Radar bug #2239280 in strip(1) was using a data
   structure after it was free()'ed. The free() call was move after
   the last use.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-274 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor where the module name of
   dynamic shared library was set wrong. This happened when creating
   a dynamic shared library from an archive library member that had a
   long name (using the 4.4bsd archive extened format 1). The module
   name dynamic shared library would end up like "#1/20" rather than
   its correct name. Radar bug #2239283.</LI>
   
   <LI>Fixed a bug in strip(1) when stripping a dynamic shared
   library. This happened when the stripping was removing a symbol
   defined in one module and referenced in other modules. The
   library's table of contents was not correctly updated to reflect
   this symbol was no longer defined. This would then cause the
   static link editor to think the library was malformed as a module
   was loaded did not define a symbol as expected in the table of
   contents. Radar bug #2239280.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-273 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>The VMX opcodes have been added to the Rhapsody PowerPC
   assembler. Radar bug #2237908.</LI>
   
   <LI>Fixed a bug that caused NSModuleForSymbol() to return NULL
   when called in a module initializer routine on a symbol in that
   module. Radar bug #2238301.</LI>
   
   <LI>Removed the -arch i586SX and added the following intel x86
   specific subtype archs: pentium, pentpro, pentIIm3 and pentIIm5.
   Radar bug #2231830.</LI>
   
   <LI>Fixed a bug in dyld that used the wrong segment's address for
   executable's base relocation address. It was using the segment
   with the lowest address not the first segment's address. Radar bug
   #2237029.</LI>
   
   <LI>Changed the way the static link editor assigns segment address
   of segments that were not specified on the command line.
   Previously the static link editor often picked overlapping
   addresses for these segments and the link would then fail. Now the
   static link editor assigns segment address at the next available
   address after the first segment that doesn't overlap with other
   segments. So if some segments are assigned address the first
   segment must also be assigned, which can be done via -seg1addr or
   by name with -segaddr. Radar bug #2237029.</LI>
   
   <LI>A missing test was added to the static link editor. This is to
   prevent it from producing an executable that is prebound which
   would crash when launched and prebinding was disabled. This
   happens when too much address space is spanned and the first
   segment is more than 24-bits away from a prebound lazy pointer.
   This occurred with BlueBox. Radar bug #2237029.</LI>
   
   <LI>Fixed a bug in the dyld debug library code the caused it to
   crash (usually the debugger). This would tend to happen on
   executables being debugged that did not have it headers linked at
   the default address. This occurred with BlueBox. Radar bug
   #2236161.</LI>
   
   <LI>Added the <I>-R filename</I> options to strip(1) and
   nmedit(l). This specifies a list of specific symbols to be removed
   (or changed to static in the case of nmedit(l)). Also changed the
   filename syntax to allow white space around symbol names and
   comment lines starting with a '#'. Radar bug #2235926.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-272 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Changed dyld so that it does a fflush(3) after doing any
   printing with printf(3) so that ProjectBuilder's launcher gets the
   ouput of things like DYLD_PRINT_LIBRARIES and it does not get
   buffered in the pipe(2)'ed output. Radar bug #2227265. Was
   approved for cctools-268 but was never integrated.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-271 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Fixed two bugs in dyld that prevents programs launching
   programs with many frameworks that reference many other
   frameworks. Radar bug #2230181.</LI>
   
   <LI>The routine sa_rld_with_symtab() was added for use with the
   standalone runtime link editor. Radar bug #2231758.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-270 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Build fix, changed libtool(1) -static not to flag -L<I>dir</I>
   and -l<I>x</I> flags as warings as they are valid flags with
   -static.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-269 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Build fix, corrected the routine get_toc_byte_sex() which did
   not have code to deal with the archive extended format #1. This
   would cause ld(1) to think the table of contents was malformed if
   the first member after the table of contents was in extended
   format #1.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-268 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Build fix, backed off change to libtool(1) to treat incorrect
   flags as warnings not hard errors.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-267 for
the 5.2 Rhapsody CR1 release)</FONT></H5>

<UL>
   <LI>Build fix, removed getmachhead.o from libmacho/dylib.ofileList
   .</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-266 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>The program checksyms(l) used in the Build and Integration
   build verification pass, now checks that projects are prebound and
   has no relocation entries in read only sections. Radar bug
   #2227469.</LI>
   
   <LI>Changed the profileServer to use bootstrap_register() rather
   than bootstrap_check_in() so that it can be started from
   /etc/bootstrap.conf. See the man page for details. Radar bug
   #2227888.</LI>
   
   <LI>The VMX opcodes have been added back in to the assembler.
   Radar bug #2227999.</LI>
   
   <LI>Changed all of the compiler tools to support the 4.4bsd
   archive extened format 1. The tools ranlib(1) and libtool(1) now
   take the -L option to produce archives using the extended format
   and the -T option to truncate names. The default is -L. Radar bug
   #1670513.</LI>
   
   <LI>The error message printed in dyld for the case when the path
   name of a dynamic library turns out to be a path name of a
   directory has been changed. Previously it just printed can't
   map_fd the path name. It now prints the file name is not a regular
   file. Radar bug #2227477.</LI>
   
   <LI>The processing of the environment variables for dyld paths has
   been changed to ignore paths with no characters in them. This led
   to confusion when the directory layout was changed to have a
   directory named /System and then the System framework would be
   searched as /System if a path with no characters in it was in
   DYLD_LIBRARY_PATH. Radar bug #2227589.</LI>
   
   <LI>Fixed a bug in nm(1) with the -o option on a dynamic shared
   library that did not print the colon ':' between the library
   module name and symbol name. Radar bug #2227852.</LI>
</UL>

<H3><FONT SIZE="+2">Documentation</FONT>&nbsp;</H3>

<H5><FONT SIZE="+1">PowerPC assembler manual (PowerPC Addressing
Modes and Assembler Instructions)</FONT></H5>

<BLOCKQUOTE>See Jeff Mattson (jmattson_ext@next.com) for the latest
   copy.</BLOCKQUOTE>

<H5><FONT SIZE="+1">Dynamic Shared Libraries User's Guide</FONT></H5>

<BLOCKQUOTE>The current version of this can be found in <B>(not
   updated with respect to PowerPC yet)</B>:
   
   <BLOCKQUOTE>/Net/seaport/projects/cctools/docs/shlib/user_guide/user_guide.ps</BLOCKQUOTE></BLOCKQUOTE>

<H5><FONT SIZE="+1">Dynamic Shared Libraries Detailed Design
Document</FONT></H5>

<BLOCKQUOTE>The current version of this can be found in <B>(updated
   for PowerPC)</B>:
   
   <BLOCKQUOTE>/Net/seaport/projects/cctools/docs
      /shlib/detail_doc/current/detail_doc.ps</BLOCKQUOTE></BLOCKQUOTE>

<H5><FONT SIZE="+1">Man Pages</FONT></H5>

<BLOCKQUOTE>Unix manual pages for the cctools release are installed
   in /usr/share/man. This allows updated manual pages to be used in
   software by setting the MANPATH environment variable to include
   one or more paths. For example if the Rhapsody man pages are
   wanted you might set MANPATH as follows in your .login:
   
   <BLOCKQUOTE>setenv MANPATH /usr/share/man</BLOCKQUOTE></BLOCKQUOTE>

<P>&nbsp;</P>

<H3><FONT SIZE="+2">Notes Specific to Release 5.1 (Rhapsody
DR2)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>The rld function rld_write_symfile() has been added for use by the
kern loader.</P>

<H5><FONT SIZE="+1">Changes since the last release (cctools-265 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the change of the default headerpad in ld(1) to
   be the sizeof two section structures because objcunique(1) now can
   add 2 section headers.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-264 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed the default headerpad in ld(1) to be the sizeof two
   section structures because objcunique(1) now can add 2 section
   headers.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-263 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Added a definition of getenv() in the dyld code that always
   returns NULL so the reference to_dyld_lookup_and_bind() is not
   pulled in by the libc_dynamic code.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-262 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>The VMX opcodes have been removed. Radar bug #2219166.</LI>
   
   <LI>A bug was fixed in the code that starts the dyld debug thread
   that effected executables who's load commands were larger than 4k
   (like ProjectBuilder). Radar bug #2218925.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-261 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>The use of the profil(2) system call has been updated to
   reflect the fix in the kernel for the bucket incremented in
   profileServer(1) and in dyld. Radar bug #2215979.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-260 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<P>Added supporting the PowerPC subtypes 603e, 603ev and 750. Changed
NXFindBestFatArch() for PowerPC subtypes to the following: 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, it is only picked via an exact match. Changed
NXCombineCpuSubtypes() for PowerPC subtypes to the following:
combining with the ALL type becomes the other type. Combining
anything with 601 becomes 601. All other non exact matches combine to
the ALL type. Radar bug #2213821.</P>

<UL>
   <LI>Added the dcba PowerPC optional instruction to the assembler
   and otool.</LI>
   
   <LI>Added the special register names for the PowerPC 750
   processor:Radar bug #2212878
   
   <P><TABLE BORDER=0 WIDTH="48%" HEIGHT=210>
      <TR>
         <TD>
            <P>Special register name</P>
         </TD>
         <TD>
            <P>Number</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>ummcr0</P>
         </TD>
         <TD>
            <P>936</P>
         </TD>
      </TR>
      <TR>
         <TD HEIGHT=8>
            <P>upmc1</P>
         </TD>
         <TD HEIGHT=8>
            <P>937</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>upmc2</P>
         </TD>
         <TD>
            <P>938</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>usia</P>
         </TD>
         <TD>
            <P>939</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>ummcr1</P>
         </TD>
         <TD>
            <P>940</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>upmc3</P>
         </TD>
         <TD>
            <P>941</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>upmc4</P>
         </TD>
         <TD>
            <P>942</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>l2cr</P>
         </TD>
         <TD>
            <P>1017</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>ictc</P>
         </TD>
         <TD>
            <P>1019</P>
         </TD>
      </TR>
      <TR>
         <TD HEIGHT=12>
            <P>thrm1</P>
         </TD>
         <TD HEIGHT=12>
            <P>1020</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>thrm2</P>
         </TD>
         <TD>
            <P>1021</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>thrm3</P>
         </TD>
         <TD>
            <P>1022</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
   
   <LI>Assembling PowerPC VMX instructions now requires the
   -force_cpusubtype_ALL flag. And code that uses them must dynamicly
   check to see if VMX is supported on the processor before using VMX
   instructions. Radar bug #2213821.</LI>
   
   <LI>Change the PowerPC instructions tlbld and tlbli to marked as
   OPTIONAL rather than 603 specific. This leaves the only
   instructions specific for a PowerPC cpu being 601 instructions.
   Radar bug #2213821.</LI>
   
   <LI>Moved the assemblers into /usr/libexec and /usr/local/libexec.
   Radar bug #2213838.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-259 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Added the path /Local/Library/Frameworks to checksyms(l) as a
   conventional path Frameworks can be found in. Also corrected
   "it's" to "its" in error messages.</LI>
   
   <LI>Added -c to all the install(1) commands in all the
   Makefiles.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-258 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed cctools to not use /usr/local/bin/install where it
   needed the -sS option but rather call strip -S and create a
   temporary file and install the temporary file.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-257 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed checksyms(l) to once again treat /usr/lib/java as a
   conventional path libraries can be found in. This path got changed
   to /System/Library/Frameworks/JavaVM.framework/Libraries where
   that path should have been just added.</LI>
   
   <LI>Fixed dylib shared pc sampling. Radar bug #2004555.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-256 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed checksyms(l) to treat
   /System/Library/Frameworks/JavaVM.framework/Libraries as a
   conventional path libraries can be found in.</LI>
   
   <LI>Changed the default address of dyld to 0x41100000.</LI>
   
   <LI>Changed cctools to use /usr/local/bin/install where it needs
   the -sS option.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-255 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed checksyms(l) to treat /usr/lib/java as a conventional
   path libraries can be found in. Radar bug #2005914.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-254 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>The VMX opcodes have been added. Radar bug 2004760.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-253 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in ld(1) that prevented the Objective-C runtime
   optimization using _dyld_bind_objc_module() from working. The bug
   was in the routine that swaps the module table of a dynamic
   library.</LI>
   
   <LI>Added the rld function rld_write_symfile() for use by the kern
   loader.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-252 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Updated the cctools project for the new directory layout for
   Premier (changing the directories with the word Next in them). See
   the updated man pages for specific details.</LI>
   
   <LI>Added the -b option to checksyms(l) to check dynamic binaries
   for relocation entries in read-only sections, make sure they are
   prebound and have had objcunique run on them. This is not yet the
   default.</LI>
   
   <LI>Delt with a bug in the 4.4bsd ar(1) which produced bad
   archives when the uid (or gid) field overflowed or underflowed.
   Radar bug #2000486.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-251 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the disassembly output of otool(1) for ppc bl
   instructions that was not printing any address or symbol. Also
   added printing out a comment for branch targets to symbol stubs
   including the name of the symbol the stub is for.</LI>
   
   <LI>Changed the ppc dissassembly in otool(1) of "addis rX,0,immed"
   to "lis rX,immed" and "addi rX,0,immed" to "li rX,immed".</LI>
   
   <LI>Updated the dyld(1) man page to include the default fall back
   paths.</LI>
   
   <LI>Removed the -arch m98k which was the same as -arch ppc.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-250 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Corrected the bug fix in ld(1) when doing prebound builds in
   Slick build environment with $NEXT_ROOT set. The change also
   effected Titan builds because RC builds do have $NEXT_ROOT set (to
   nothing).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-249 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>The man pages now get installed into /usr/share/man directly
   out of the cctools project. The man pages had some small updates
   cleaning up some things. arch(3) was added to the cctools set and
   updated. The also now have Apple Computer, Inc. on them instead of
   NeXT.</LI>
   
   <LI>Fixed a bug in as(1) where it would not take the cpu specific
   arch types -arch ppc604 or -arch ppc604e. Also changed the
   assembler to print out the cctools version as the Apple version
   instead of the NeXT version.</LI>
   
   <LI>Changed the ppc locking code in dyld to allow it to be stepped
   over by single step profiling tools using the step to branch mode
   in that code.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-248 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed libtool(1) and redo_prebinding(1) look for objcunique
   in /usr/bin rather than in /bin.</LI>
   
   <LI>Added support for the ppc architecture to
   redo_prebinding(1).</LI>
   
   <LI>Fixed a bug in ld(1) when prebinding and segments in the
   output file overlap dependent libraries. In this case the output
   gets marked as prebound even though a message is printed that says
   it was disabled. This would cause redo_prebinding(1) to fail on it
   because of overlapping segments.</LI>
   
   <LI>Fixed a bug in ld(1) when prebinding with -i options. The
   indirect symbols being defined with -i options were being turned
   into prebound undefined symbols. Then after the binary was
   strip(1)'ed redo_prebinding(1) would fail on it because of
   undefined symbols.</LI>
   
   <LI>Fixed a bug in ld(1) when doing prebound builds in Slick build
   envorinment with $NEXT_ROOT set. It was recording the dynamic
   libraries name with $NEXT_ROOT prepened to it in LC_PREBOUND_DYLIB
   load commands.</LI>
   
   <LI>Fixed a bug where the ouput of nm(1) -n was not sorted
   correctly.</LI>
   
   <LI>Fixed a potentinal bug in dyld if a very long symbol name was
   to be printed as part of an error message it could have crashed
   the program.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-247 for
the 5.1 Rhapsody DR2 release)</FONT></H5>

<UL>
   <LI>Changed the gmon.out format gprof(1) understands to be in sync
   with the 4.4bsd format. The header file &lt;mach-o/gmon.h&gt; is
   no longer installed and the 4.4bsd file in &lt;sys/gmon.h&gt; with
   Rhapsody updates is now used.</LI>
   
   <LI>Fixed a bug that would cause programs to segfault if dyld had
   to relocate itself because the executable overlapped with dyld's
   prefered address.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-246 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>The project source tree has been converted to build natively
   on Rhapsody.</LI>
   
   <LI>The binaries are now installed in the correct places for a
   4.4BSD system. There are nolonger any symbolic links to other
   locations. Radar bugs #1673496, #1680747 and #1682569.</LI>
   
   <LI>The command ar(1) was changed to have the -T options on by
   default. This causes archive member names to be truncated and does
   not use the extend format for long names which the compiler tools
   does not yet understand. The new option -L causes the extend
   format to be used. The hope is the compiler tools will understand
   the extened format for the Rhapsody Unified release. Radar bug
   #1670513.</LI>
   
   <LI>Removed the comment allowing the moduleName parameter of
   NSLinkModule() in &lt;mach-o/dyld.h&gt; to be NULL. Radar bug
   #1670835.</LI>
</UL>

<H3><FONT SIZE="+2">Documentation</FONT>&nbsp;</H3>

<H5><FONT SIZE="+1">PowerPC assembler manual (PowerPC Addressing
Modes and Assembler Instructions)</FONT></H5>

<BLOCKQUOTE>See Jeff Mattson (jmattson_ext@next.com) for the latest
   copy.</BLOCKQUOTE>

<H5><FONT SIZE="+1">Dynamic Shared Libraries User's Guide</FONT></H5>

<BLOCKQUOTE>The current version of this can be found in <B>(not
   updated with respect to PowerPC yet)</B>:
   
   <BLOCKQUOTE>/Net/seaport/projects/cctools/docs/shlib/user_guide/user_guide.ps</BLOCKQUOTE></BLOCKQUOTE>

<H5><FONT SIZE="+1">Dynamic Shared Libraries Detailed Design
Documen</FONT></H5>

<BLOCKQUOTE>The current version of this can be found in <B>(updated
   for PowerPC)</B>:
   
   <BLOCKQUOTE>/Net/seaport/projects/cctools/docs
      /shlib/detail_doc/current/detail_doc.ps</BLOCKQUOTE></BLOCKQUOTE>

<H5><FONT SIZE="+1">Man Pages</FONT></H5>

<BLOCKQUOTE>Unix manual pages for the cctools release are installed
   in /usr/share/man. This allows updated manual pages to be used in
   software by setting the MANPATH environment variable to include
   one or more paths. For example if the Rhapsody man pages are
   wanted you might set MANPATH as follows in your .login:
   
   <BLOCKQUOTE>setenv MANPATH /usr/share/man &nbsp;</BLOCKQUOTE></BLOCKQUOTE>

<H3><FONT SIZE="+2">Notes Specific to Release 5.0 (Rhapsody
DR1)</FONT></H3>

<H3><FONT SIZE="+1">New Features</FONT></H3>

<P>There is only one new feature for the 5.0 release:</P>

<UL>
   <LI>The tools now use -arch ppc for the PowerPC architecture . The
   tools have been brought up the 603, 603e, 604 and 604e PowerPC
   from the 601. Support for dynamic shared libraries has been
   added.</LI>
</UL>

<H3>The current state of the dynamic shared library port to the
PowerPC</H3>

<BLOCKQUOTE>As of cctools-246 the all the tools are working or
   ported. This includes the assembler, the static linker, otool
   (including it's PowerPC disassembler), the dynamic linker and the
   various object tools like nm, size, etc. The PowerPC assembler as
   of the current release is now complete for the Rhapsody Developer
   release. It now supports all of the PowerPC extended mnemonics and
   all features of the 603, 603e, 604 and 604e PowerPC architecture.</BLOCKQUOTE>

<H3>Current status of the support for the PowerPC</H3>

<H5><FONT SIZE="+1">Changes since the last release (cctools-245 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor for PPC_RELOC_JBSR
   relocation types. The other_part field was being tuncating to the
   low16 bits.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-244 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>The symbolic links made in /usr/bin for the commands as, ld,
   strip, strings, nm and size for which the binaries are in /bin
   were corrected to use a relative path. Radar bug #1672088.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-242 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Symbolic links were made in /usr/bin for the commands as, ld,
   strip, strings, nm and size for which the binaries are in /bin.
   Radar bug #1672088.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-241 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Removed the builtin macro clrlsdi which was a typo for the
   correct macro clrlsldi.</LI>
   
   <LI>Removed the following builtin macros left over from the NRW
   port: mtrtcd, mfrtcd, mtrtci, mfrtci, mtbatu, mfbatu, mtbatl and
   mfbatl.</LI>
   
   <LI>Changed the PowerPC instruction "eciwx" to be marked as
   optional so to require -force_cpusubtype_ALL when used.</LI>
   
   <LI>Removed the non-existant "stmd", "mtpmr" and "mfpmr"
   instructions from the PowerPC assembler.</LI>
   
   <LI>Fixed the following extended mnemonics to the PowerPC
   assembler:
   
   <P><TABLE BORDER=0 WIDTH="49%">
      <TR>
         <TD>
            <P>mtrtcu Rx</P>
         </TD>
         <TD>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtspr 20,Rx</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>mtrtcl Rx</P>
         </TD>
         <TD>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtspr 21,Rx</P>
         </TD>
      </TR>
   </TABLE>
   </P>
   
   <P>Note these are 601 specific and the special register numbers
   moving to (20,21) the Real Time Clock are diffierent from moving
   from (4,5) the same registers.</P></LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-240 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug that caused bundles to not load on the PowerPC
   604e as there was no table entry in the ArchInfoTable.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-239 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Changed the PowerPC assembler to nolonger support the
   mull&#91;o&#93;&#91;.&#93; and mulwd&#91;.&#93; instructions
   produced by the NRW compiler.</LI>
   
   <LI>Added the special register names:
   
   <P><TABLE BORDER=0 WIDTH="61%" HEIGHT=260>
      <TR>
         <TD WIDTH=215>
            <P>Special register name</P>
         </TD>
         <TD WIDTH=168>
            <P>Number</P>
         </TD>
         <TD WIDTH=157>
            <P>Processor</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>mmcr0</P>
         </TD>
         <TD WIDTH=168>
            <P>952</P>
         </TD>
         <TD WIDTH=157>
            <P>604 and 604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>pmc1</P>
         </TD>
         <TD WIDTH=168>
            <P>953</P>
         </TD>
         <TD WIDTH=157>
            <P>604 and 604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>pmc2</P>
         </TD>
         <TD WIDTH=168>
            <P>954</P>
         </TD>
         <TD WIDTH=157>
            <P>604 and 604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>sia</P>
         </TD>
         <TD WIDTH=168>
            <P>955</P>
         </TD>
         <TD WIDTH=157>
            <P>604 and 604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>mmcr1</P>
         </TD>
         <TD WIDTH=168>
            <P>956</P>
         </TD>
         <TD WIDTH=157>
            <P>604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>pmc3</P>
         </TD>
         <TD WIDTH=168>
            <P>957</P>
         </TD>
         <TD WIDTH=157>
            <P>604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>pmc4</P>
         </TD>
         <TD WIDTH=168>
            <P>958</P>
         </TD>
         <TD WIDTH=157>
            <P>604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>sda</P>
         </TD>
         <TD WIDTH=168>
            <P>959</P>
         </TD>
         <TD WIDTH=157>
            <P>604 and 604e</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>dmiss</P>
         </TD>
         <TD WIDTH=168>
            <P>976</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>dcmp</P>
         </TD>
         <TD WIDTH=168>
            <P>977</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>hash1</P>
         </TD>
         <TD WIDTH=168>
            <P>978</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>hash2</P>
         </TD>
         <TD WIDTH=168>
            <P>979</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>imiss</P>
         </TD>
         <TD WIDTH=168>
            <P>980</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>icmp</P>
         </TD>
         <TD WIDTH=168>
            <P>981</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=215>
            <P>rpa</P>
         </TD>
         <TD WIDTH=168>
            <P>982</P>
         </TD>
         <TD WIDTH=157>
            <P>603</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
</UL>

<DIR>
   <LI>Removed the bat&#91;0123&#93;&#91;ul&#93; 601 special register
   names left over from the NRW port. The names with
   ibat&#91;0123&#93;&#91;ul&#93; are to be used.</LI>
   
   <LI>Changed the name of the 601 special register "pid" to "pir"
   and added the special register name "hid15" also with the number
   1023.</LI>
   
   <LI>Removed the special register names rtcd (281), rtci (282) and
   fpecr (1022) which appear to be left over from the NRW port.</LI>
   
   <LI>Added the special register ear (282) which is optional in the
   PowerPC.</LI>
   
   <LI>Added the special registers tbl (284) and tbu (285) which were
   missing.</LI>
   
   <LI>Fixed the clrrdi simplified mnemonics to use rldicr not rldicl
   which they were using.</LI>
   
   <LI>Added the simplified mnemonic clrlsdi rA,rS,b,n equivalent to
   rldic rA,rS,n,b-n.</LI>
   
   <LI>Added the multiply low double word (mulld) 64-bit
   instruction.</LI>
   
   <LI>Added flagging invalid forms of branch conditional
   instructions where reserved bits of the BO field are not zero when
   -force_cpusubtype_ALL is not specified.</LI>
   
   <LI>Added flagging all 64-bit compares as invalid forms when
   -force_cpusubtype_ALL is not specified.</LI>
   
   <LI>Added flagging all 64-bit instructions and optional
   instructions as invalid forms when -force_cpusubtype_ALL is not
   specified.</LI>
   
   <LI>Removed the Power forms, ai&#91;.&#93;, of the PowerPC
   instructions addic&#91;.&#93; from the assembler.</LI>
   
   <LI>Removed the non-existant "lmd" instruction from the
   assembler.</LI>
   
   <LI>Added flagging invalid forms load multiple instructions (lmw,
   lswi and lswx).</LI>
   
   <LI>Changed the rA parameter of lhax, lfsx, lfdx, ldx, lbzx,
   lhbrx, lhzx, lwax, lwbrx, stbx, stdcx., stdx, stfdx, stfiwx,
   stfsx, sthbrx, sthx, stwbrx, stwx, eciwx, ecowx from rA to (rA|0)
   to match the manual. These are the same as the Radar bug #1653885
   for lwzx. The disassembler in otool(1) was also changed to match
   the manual.</LI>
   
   <LI>Changed the rA parameter of lfdu, lfsu, lhau, ldu, lwzu, stbu,
   stdu, stfdu, stfsu, sthu and stwu from (rA|0) to rA to match the
   manual. The disassembler in otool(1) was also changed to match the
   manual.</LI>
   
   <LI>Added flagging the "branch conditional to count register"
   (bcctr and bcctrl) that use the "decrement and test CTR" option as
   invalid forms.</LI>
   
   <LI>Fixed a bug in the static link editor that caused it to exit
   with an internal error if prebinding was done with objects
   compiled with PowerPC dynamic code generation.</LI>
   
   <LI>Added the file libstuff/fatals.c to the files installed in the
   GNU source package as it is needed to build the GNU assembler
   source.</LI>
   
   <LI>Changed the cctools project so that atom(1) only gets built
   for OS=nextstep because it uses the encumbered gnu/a.out.h header
   file.</LI>
   
   <LI>Removed the files gnu/a.out.h and gnu/exec.h from the files
   that get installed for the GNU source package as they are not
   needed to build the GNU assembler source and are encumbered with
   4.3bsd UNIX.</LI>
</DIR>

<H5><FONT SIZE="+1">Changes since the last release (cctools-238 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug that caused bundles to not load on the
   PowerPC.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-237 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a build problem where the file /etc/magic should have
   been installed in /private/etc/magic.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-236 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Changed the PowerPC immediate shifted instructions (addis and
   lis) to not check the sign of the immediate, but just to check for
   out of 16 bit range (signed or unsigned).</LI>
   
   <LI>Fixed the following extended mnemonic for the PowerPC
   assembler that was wrong in cctools-235:
   
   <P><TABLE BORDER=0 WIDTH="69%" HEIGHT=20>
      <TR>
         <TD>
            <P>crmove crbT,crbA</P>
         </TD>
         <TD>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cror crbT,crbA,crbA</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
   
   <LI>It was was crxor which it should not have been.</LI>
   
   <LI>Added forms of PowerPC instructions: cmpd, cmpdi, cmpld,
   cmpldi, cmpw, cmpwi, cmplw and cmplwi that take a number as their
   first parameter (previously they only took a cr register).</LI>
   
   <LI>Added forms of PowerPC instructions "tw 31,0,0" and "ori
   0,0,0" toallow the zeros to be encoded where registers are
   required.</LI>
   
   <LI>Added the following extended mnemonic to the PowerPC
   assembler:</LI>
</UL>

<P>mttbl rS equivalent to mtspr 284,rS</P>

<UL>
   <LI>Fixed the PowerPC opcode of "mttbu rS" "Move to time base
   upper" to be equivalent to "mtspr 285,rS".</LI>
   
   <LI>Removed the PowerPC instruction mttb "Move to time base".</LI>
   
   <LI>Fixed a bug in the PowerPC instruction "lwzx rD,rA,rB" where
   rA should have been (rA|0). Radar bug #1653885.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-235 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added the PowerPC instruction jbsr pseudo instruction for use
   with kernel relocatables. This has the following form:
   
   <P>jbsr _foo,L1<BR>
   ...<BR>
   L1: lis r12,hi16(_foo) ; long branch stub<BR>
   ori r12,r12,lo16(_foo)<BR>
   mtctr r12<BR>
   bctr</P></LI>
   
   <LI>The jbsr pseudo instruction assembles to a bl instruction
   targeted at L1. It also generates a PPC_RELOC_JBSR relocation
   entry for the symbol _foo. Then when the linker creates a
   non-relocatable output file it will change the target of the bl
   instruction to _foo if the bl instruction's displacement will
   reach. Else it will leave the bl instruction targeted at L1.
   <I>otool</I>(1) understands how to disassemble these pseudo
   instructions.</LI>
   
   <LI>Fixed a bug in both the static and the dynamic link editors
   where it was not correctly checking for relocation overflow for
   PPC_RELOC_BR24 relocation types (used with bl instructions). The
   checking was off by the high bit as the displacement is
   signed.</LI>
   
   <LI>The cctools project has been unencumbered (for Grail,
   RC_OS=teflon). The programs ar(1) and file(1) are now ported
   OpenBSD versions. They should work the same but beware they are
   completely different sources.</LI>
   
   <LI>Added the following extended mnemonics to the PowerPC
   assembler:
   
   <P>&nbsp;<TABLE BORDER=0 WIDTH="74%">
      <TR>
         <TD WIDTH=134>
            <P>mtrtcu Rx</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtspr rtcu,Rx</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mtrtcl Rx</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtspr rtcl,Rx</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mtmq Rx</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtspr mq,Rx</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mfrtcu Rx</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mfspr Rx,rtcu</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mfrtcl Rx</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mfspr Rx,rtcl</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mfmq Rx</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mfspr Rx,mq</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mfspr Rx,mq</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>bcctr BO,BI</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>bctrl BO,BI</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>bcctrl BO,BI</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>crmove crbT,crbA</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>crxor crbT,crbA,crbA</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>crnot crbT,crbA</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>crnor crbT,crbA,crbA</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134 HEIGHT=10>
            <P>mfear rT</P>
         </TD>
         <TD WIDTH=118 HEIGHT=10>
            <P>equivalent to</P>
         </TD>
         <TD HEIGHT=10>
            <P>mfspr rT,282</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mtear rS</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtspr 282,rS</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>mtfs&#91;.&#93; frB</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>mtfsf&#91;.&#93; 0xff,frB</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>la rT,d(rA)</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>addi rT,rA,d</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmp crT,rA,rB</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmp crT,0,rA,rB</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmp num,rA,rB</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmp num,0,rA,rB</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmpi crT,rA,s16</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmpi crT,0,rA,s16</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134 HEIGHT=12>
            <P>cmpi num,rA,s16</P>
         </TD>
         <TD WIDTH=118 HEIGHT=12>
            <P>equivalent to</P>
         </TD>
         <TD HEIGHT=12>
            <P>cmpi num,0,rA,s16</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmpl crT,rA,rB</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmpl crT,0,rA,rB</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmpl num,rA,rB</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmpl num,0,rA,rB</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmpli crT,rA,s16</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmpli crT,0,rA,u16</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=134>
            <P>cmpli num,rA,s16</P>
         </TD>
         <TD WIDTH=118>
            <P>equivalent to</P>
         </TD>
         <TD>
            <P>cmpli num,0,rA,u16</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
</UL>

<DIR>
   <LI>Added the following mnemonics to the PowerPC assembler:
   
   <P>eciwx rD,rA,rB<BR>
   ecowx rS,rA,rB<BR>
   fres&#91;.&#93; frD,frB<BR>
   frsqrte&#91;.&#93; frD,frB<BR>
   fsel&#91;.&#93; frD,frA,frC,frB<BR>
   fsqrt&#91;.&#93; frD,frB<BR>
   fsqrts&#91;.&#93; frD,frB<BR>
   stfiwx frs,rA,rB<BR>
   tlbsync</P></LI>
   
   <LI>Added additional forms for the following mnemonics to the
   PowerPC assembler:\
   
   <P><TABLE BORDER=0>
      <TR>
         <TD WIDTH=86>
            <P>mcrfs crfD,crfS</P>
         </TD>
         <TD>
            <P>Allows a crf as the first operand (previously only a
            number)</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=86>
            <P>mcrxr crfD</P>
         </TD>
         <TD>
            <P>Allows a crf as the operand (previously only a
            number)</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=86>
            <P>mftb rT,TBR</P>
         </TD>
         <TD>
            <P>Allows specifying the value of the timer base
            register</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
   
   <LI>Fixed the 4 parameter forms of cmpli, and cmplwi to take an
   unsigned immediate not a signed immediate.</LI>
   
   <LI>Fixed the PowerPC clrlslwi macros which were incorrect as:
   
   <P>clrlslwi&#91;.&#93; ra,rs,b,n equivalent to rlwinm&#91;.&#93;
   ra,rs,n.b-n,31-b</P>
   
   <P>corrected to:</P>
   
   <P>clrlslwi&#91;.&#93; ra,rs,b,n equivalent to rlwinm&#91;.&#93;
   ra,rs,n.b-n,31-n</P></LI>
</DIR>

<H5><FONT SIZE="+1">Changes since the last release (cctools-234 thru
cctools-230 for the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>The only changes were to fix build problems relating to new
   System Framework &amp; Kernel header files and the switch to the
   -dynamic compiler for PowerPC.</LI>
   
   <LI>Removed the changed the static link editor to ignore -seg1addr
   (also known as -image_base) for dynamic libraries greater than
   0x4000000 for PowerPC. This was only needed to allow static code
   gen to be used with Frameworks.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-229 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added ppc604e to the arch table for a specific architecture as
   this is returned on some Macs.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-228 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>The changed the assembler in cctools-228 was wrong. It
   resulted in producing bad code when compiling -static (triggered
   by the change to compiler in cc-752). The change has been fixed in
   the cctools-229 assembler.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-227 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Changed the assembler to allow section difference relocations
   with the -static flag. This fixes using the cc-752 and getting the
   "Can't emit reloc ..." error message from the assembler.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-226 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added the PowerPC mnemonics ai and ai. the assembler which are
   archaic forms of addic&#91;.&#93; as the compiler currently
   generates them in some cases.</LI>
   
   <LI>Fixed otool -c for use with PowerPC core files.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-225 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added ppc604 to the arch table for a specific architecture as
   this is what the Kernel is returning on the Power Mac 8500. This
   was causing code that supported loading bundles to fail (this is
   library code in System framework, thus a new System framework
   needs to be built and used to see this fix).</LI>
   
   <LI>Fixed a bug in the dynamic link editor where it was not
   correctly calculating the immediate of a HA16 reloc by checking
   the 0x8000 bit of the other half. This was causing address to be
   off by 0x10000.</LI>
   
   <LI>Fixed a bug in the dynamic link editor when the $HOME
   environment variable was not set. (the case for the single user
   prompt on PowerPC). This was causing bus errors when a dynamic
   library was not found.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-224 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the static link editor where the __PAGEZERO
   segment was not being created for PowerPC (left over from NRW when
   executables started at high addresses and the kernel was at
   zero).</LI>
   
   <LI>Changed the static link editor to ignore -seg1addr (also known
   as -image_base) for dynamic libraries greater than 0x4000000 for
   PowerPC. This will allow static code gen to be used with
   Frameworks.</LI>
   
   <LI>Changes since the last release (cctools-223 for the 5.0
   Rhapsody release)</LI>
   
   <LI>Changed the source of cctools-224 to define NO_INDR_LIBC if
   __TEFLON__ is defined so it will build with SDK2 which is not
   using <I>indr</I>(l). This will allow cctools-224 to built for the
   Grail RC target.</LI>
   
   <LI>Fixed a bug in the static link editor when defining common
   symbols when a common section exists in the input .o files which
   has an alignment less than the alignment needed for the common
   symbols being defined by the link editor did not get aligned
   correctly.</LI>
   
   <LI>Fixed <I>libtool</I>(1) running on Teflon so it doesn't always
   report "internal link edit command failed". The link actually
   worked but the checking of the return code for Teflon was
   wrong.</LI>
   
   <LI>Fixed <I>as</I>(1) running on Teflon so it doesn't always exit
   non-zero when it runs the target assembler (/lib/arch/as). The
   assembly actually worked but the checking of the return code for
   Teflon was wrong.</LI>
   
   <LI>The other thread states for PowerPC are now printed by otool
   (useful for core files).</LI>
   
   <LI>Added the PowerPC simplified mnemonics crset, crclr and mtcr
   to the assembler.</LI>
   
   <LI>Added the include file &lt;mach-o/ranlib.h&gt; to the cctools
   project from &lt;bsd/ranlib.h&gt; and changed <I>off_t</I> type to
   <I>unsigned long</I> because <I>off_t</I> on Teflon is 64 bits
   which would break compatibility with existing libraries.</LI>
   
   <LI>Added the header files &lt;mach-o/sparc/swap.h&gt;and
   &lt;mach-o/ppc/swap.h&gt; which get installed in the System
   Framework to be shipped. This and the added library code allows
   swapping of thread states.</LI>
   
   <LI>Added the header files &lt;mach-o/i860/swap.h&gt;and
   &lt;mach-o/m88k/swap.h&gt; which get installed locally and not
   shipped. The code was not added to the System Framework.</LI>
   
   <LI>Changed the cctools package to install
   &lt;mach-o/ppc/reloc.h&gt; with the exported headers. And to
   install &lt;mach-o/hppa/reloc.h&gt; with the local headers.</LI>
   
   <LI>Changed of the ppc subtypes to match the kernel. Only the 601
   and 603 types are currently used by the assembler. The types
   currently in use are as follows:
   
   <UL>
      <LI>/*<BR>
      * PowerPC subtypes<BR>
      */<BR>
      #define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)<BR>
      #define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)<BR>
      #define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 2)<BR>
      #define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 3)<BR>
      #define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 4)<BR>
      #define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 5)<BR>
      #define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 6)<BR>
      #define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 7)<BR>
      #define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 8)<BR>
      #define CPU_SUBTYPE_POWERPC_740 ((cpu_subtype_t) 9)</LI>
   </UL>
   </LI>
   
   <LI>The -arch flags for the 601 and 603 are -arch ppc601 and -arch
   ppc603. Others will be defined as needed.</LI>
   
   <LI>Updated the NXFindBestFatArch(3) and NXCombineCpuSubtypes(3)
   to include PowerPC guessing at how to combine the PowerPC subtypes
   (someone in the OS group should look at this).</LI>
   
   <LI>Updated the ArchInfoTable to include PowerPC and removed mips
   and vax which gets returned with NXGetAllArchInfos(3).</LI>
   
   <LI>Updated &lt;mach-o/swap.h&gt; and library code with all the
   things for dynamic shared libraries that never made it into the
   System Framework code.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-222 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed changes to allow cctools-223 to build for 4.2mach as
   well as PowerPC &amp; Intel with Teflon SDK2.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-221 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added the -stack_addr and -stack_size options to <I>ld</I>(1).
   Note the kernel support for these has not yet been added. So the
   flags should only be used for bringing up the support in the
   kernel at this time. See the <I>ld</I>(1) man page for details on
   these flags.</LI>
   
   <LI>Fixed a bug in the link editor <I>ld</I>(1) for PowerPC HA16
   relocation types when bit 15 was set in the other half of the
   immediate stored in the relocation entry. This resulted in bad
   code. This bug was found when bringing up driverkit and is needed
   for anyone doing development on driverkit for PowerPC.</LI>
   
   <LI>Fixed a bug in the link editor <I>ld</I>(1) where it generated
   an error message for the lazy symbol pointer section in crt1.o for
   PowerPC which it shouldn't have. This bug was found bring up
   -dynamic code gen for PowerPC and is needed for anyone using
   -dynamic code gen for PowerPC.</LI>
   
   <LI>Incorporated many changes to allow cctools-222 to build for
   PowerPC &amp; Intel with Teflon SDK2.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-220 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>The thread status for the PowerPC has changed to match the
   kernel. This makes all previous executables incompatible. The old
   <I>otool</I>(1) will no longer work on PowerPC executables because
   of this change. All executables should be relinked.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-219 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the link editor <I>ld</I>(1)where $NEXT_ROOT
   did not get prefixed to depenendent dynamic libraries.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-218 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added searching fallback paths when dynamic libraries can't be
   found. The two paths are in the environment variables
   DYLD_FALLBACK_FRAMEWORK_PATH and DYLD_FALLBACK_LIBRARY_PATH. If
   these are not set they default to
   $(HOME)/Library/Frameworks:/LocalLibrary/Frameworks:/NextLibrary/Frameworks
   and $(HOME)/lib:/usr/local/lib:/lib:/usr/lib (bug #69135).</LI>
   
   <LI>Changed the static linker to pad pure instruction sections of
   i386 outputs with nop's (bug #77806).</LI>
   
   <LI>Added .section_align <I>align_value</I> to be allowed in
   section order files. This causes the symbol following it to be
   aligned on a 2^<I>align_value</I> byte boundary (bug #77807).</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-217 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Changed the cctools project to build with gnumake.</LI>
   
   <LI>Updated the locking code and the cache management code in the
   dynamic linker for the PowerPC with suggestions from the ppc
   bringup team.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-216 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Ported the dynamic linker to PowerPC.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-215 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Changed the standard symbol stubs for the PowerPC to take
   advantage of the super scaler nature of the 603 and 604. See the
   updated Dynamic Shared Libraries Detailed Design Document for the
   details.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-214 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Made the cctools-215 project build (except for linking dyld
   and otool) under the Teflon SDK.</LI>
   
   <LI>Fixed the PowerPC assembler to use the correct opcodes for
   mftb and mftbu and updated otool's disassembly.</LI>
   
   <LI>Added the support in the static link editor to understand
   thePowerPC position-independent relocation entries (section
   difference). This allows PowerPC dynamic shared libraries and
   executables that use them to be built (Note as stated above there
   is not yet a compiler that supports -dynamic for -arch ppc, and
   there is no dynamic linker yet for PowerPC).</LI>
   
   <LI>Added the support in the PowerPC assembler for the standard
   symbol stubs.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-213 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Added the support in the PowerPC assembler for
   position-independent relocation entries (section difference). As
   well as support in otool for printing them and dissassembling with
   them.</LI>
   
   <LI>Updated the Detailed Design Document with the first cut at the
   code generation for -dynamic for the PowerPC. This is just a first
   pass to allow getting the assember and otool in place so that the
   compiler work can start.</LI>
   
   <LI>Fixed a bug in the PowerPC assembler where it treated the
   comment character ';' (semicolon) as a statement separator.</LI>
   
   <LI>Fixed the PowerPC assembler to allow -arch m98k if passed to
   it.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-212 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>The header files for mach-o subdirectory and the library files
   were added to the cctools project taken from the libc_macho
   project.</LI>
   
   <LI>Fixed the typo in the <I>ld</I>(1) warning message for bug
   #77070.</LI>
   
   <LI>Fixed a bug in <I>ld</I>(1) that was causing prebinding not to
   happen if a private extern had the same name as a global function
   in a dependent library (this can occur because -lcc_dynamic is
   being linked in).</LI>
   
   <LI>Fixed the PowerPC's assembler manual for compare instructions
   to have a 0 not a 1 for the 32-bit version not the 64-bit version.
   For example cmp 0,1,RA,RB was changed to cmp 0,0,RA,RB.</LI>
   
   <LI>Changed <I>libtool</I>(1) to ignore the -pg flag.</LI>
   
   <LI>Added the not rA,rT and not. rA,rT instructions.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-211 for
the 5.0 Rhapsody DR1 release)</FONT></H5>

<UL>
   <LI>Fixed a bug in the link editor <I>ld</I>(1)where $NEXT_ROOT
   did not prefix standard framework paths. Also fixed -Z to not use
   standard framework paths.</LI>
   
   <LI>Changed the following instructions to the correct PowerPC
   mnemonics:
   
   <P><TABLE BORDER=0 WIDTH="62%">
      <TR>
         <TD>
            <P>NRW compiler mnemonic</P>
         </TD>
         <TD>
            <P>PowerPC mnemonic</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>tlbiex</P>
         </TD>
         <TD>
            <P>tlbie</P>
         </TD>
      </TR>
      <TR>
         <TD>
            <P>slbiex</P>
         </TD>
         <TD>
            <P>slbie</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
   
   <LI>Also corrected the opcodes for slbie and slbia
   instructions.</LI>
   
   <LI>The bug in the assembler that causes it exits with a zero
   status and create an output file if it can't open the input file
   has been fixed.</LI>
   
   <LI>The .flag_reg <I>num</I> and .noflag_reg <I>num</I> ppc
   directives were added to the assembler to allow warnings to be
   generated for specific register uses.</LI>
   
   <LI>The -no_ppc601 flag and the .no_ppc601 directive were added to
   the assembler to warn of 601 uses.</LI>
   
   <LI>The 603 instructions tlbld rB and tlbli rB were added to the
   assembler.</LI>
   
   <LI>The missing 601 instruction clcs rD,rA was added to the
   assembler.</LI>
   
   <LI>Use of instructions specific to the 601 and 603 now cause the
   assembler to mark the resulting object file with the specific
   cpusubtype. Note the assembler is currently not complete with
   respect to instructions for the specfic cpusubtypes. All of the
   ppc subtypes have been added to cctools-212's version of
   &lt;mach/machine.h&gt; but only the 601 and 603 types are
   currently used. The types are as follows:
   
   <UL>
      <LI>/*<BR>
      * PowerPC subtypes<BR>
      */<BR>
      #define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)<BR>
      #define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)<BR>
      #define CPU_SUBTYPE_POWERPC_601v ((cpu_subtype_t) 2)<BR>
      #define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 3)<BR>
      #define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 4)<BR>
      #define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 5)<BR>
      #define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 6)<BR>
      #define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 7)<BR>
      #define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 8)<BR>
      #define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 9)<BR>
      #define CPU_SUBTYPE_POWERPC_X704 ((cpu_subtype_t) 10)<BR>
      #define CPU_SUBTYPE_POWERPC_603q ((cpu_subtype_t) 11)</LI>
   </UL>
   </LI>
   
   <LI>The -arch flags for the 601 and 603 are -arch ppc601 and -arch
   ppc603. Others will be defined as needed.</LI>
   
   <LI>Changes since the last release (cctools-210 for the 5.0
   Rhapsody release)</LI>
   
   <LI>The project sources were changed so that the lib_ofiles target
   could be built for teflon in the Grail release control
   target.</LI>
</UL>

<H5><FONT SIZE="+1">Changes since the last release (cctools-209.2 for
the 4.2 OpenStep release)</FONT></H5>

<UL>
   <LI>Changed the PowerPC assembler to treat $ the same as . (dot)
   for the current pc.</LI>
   
   <LI>Changed the treatment of stswi and lswi instruction's third
   parameter so that it allows the value 32 in the assembly language
   and is treated as if it were 0.</LI>
   
   <LI>Changed the following instructions to the correct PowerPC
   mnemonics:
   
   <P><TABLE BORDER=0 WIDTH="46%">
      <TR>
         <TD WIDTH=139>
            <P>NRW compiler mnemonic</P>
         </TD>
         <TD>
            <P>PowerPC mnemonic</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=139>
            <P>mull</P>
         </TD>
         <TD>
            <P>mullw</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=139>
            <P>mull.</P>
         </TD>
         <TD>
            <P>mullw.</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=139>
            <P>mullo</P>
         </TD>
         <TD>
            <P>mullwo</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=139>
            <P>mullo.</P>
         </TD>
         <TD>
            <P>mullwo.</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=139>
            <P>mulwd</P>
         </TD>
         <TD>
            <P>mulhw</P>
         </TD>
      </TR>
      <TR>
         <TD WIDTH=139>
            <P>mulwd.</P>
         </TD>
         <TD>
            <P>mulhw.</P>
         </TD>
      </TR>
   </TABLE>
   </P></LI>
   
   <LI>The NRW compiler mnemonics will continue to work as long as
   the NRW compiler is in use. Assembly code should be converted to
   use the correct mnemonics. The disassembly of otool -tV uses the
   correct PowerPC mnemonics.</LI>
   
   <LI>Fixed the mr instruction (it was ori rA,rS,0 not or rA,rS,rS
   as it should have been). Also added the mr. instruction.</LI>
   
   <LI>Changed the lis instruction to treat it's immediate as
   unsigned causing it not to flag the instructions like lis
   r1,0x8000. This is now consistant with addis r1,0,0x8000.</LI>
   
   <LI>The tools now use -arch ppc for the PowerPC architecture
   (previously they used -arch m98k, which still works but is no
   longer supported).&nbsp;</LI>
</UL>

<H3><FONT SIZE="+2">Documentation</FONT>&nbsp;</H3>

<H5><FONT SIZE="+1">PowerPC assembler manual (PowerPC Addressing
Modes and Assembler Instructions)</FONT></H5>

<BLOCKQUOTE>See Jeff Mattson (jmattson_ext@next.com) for the latest
   copy.</BLOCKQUOTE>

<H5><FONT SIZE="+1">Dynamic Shared Libraries User's Guide</FONT></H5>

<BLOCKQUOTE>The current version of this can be found in <B>(not
   updated with respect to PowerPC yet)</B>:
   
   <BLOCKQUOTE>/Network/Servers/seaport/projects/cctools/docs/shlib/user_guide/user_guide.ps</BLOCKQUOTE></BLOCKQUOTE>

<H5><FONT SIZE="+1">Dynamic Shared Libraries Detailed Design
Document</FONT></H5>

<BLOCKQUOTE>The current version of this can be found in <B>(updated
   for PowerPC)</B>:
   
   <BLOCKQUOTE>/Network/Servers/seaport/projects/cctools/docs/shlib/detail_doc/current/detail_doc.ps</BLOCKQUOTE></BLOCKQUOTE>

<H5><FONT SIZE="+1">Man Pages</FONT></H5>

<BLOCKQUOTE>Unix manual pages for the cctools release are installed
   in the standard places. These are updated for for every
   submission.</BLOCKQUOTE>
</BODY>
</HTML>