809
[darwin-xtools.git] / cctools / RelNotes / Private_CompilerTools.html
blob88c8d0594adfc52908f91b32fac6ef351d3fbe81
1 <HTML>
2 <!--This file created 8/9/11 2:34 PM by Claris Home Page version 3.0-->
3 <HEAD>
4 <TITLE>Private Compiler Tools Release Notes</TITLE>
5 <META NAME=GENERATOR CONTENT="Claris Home Page 3.0">
6 <X-CLARIS-WINDOW TOP=62 BOTTOM=966 LEFT=685 RIGHT=1265>
7 <X-CLARIS-TAGVIEW MODE=minimal>
8 <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
9 </HEAD>
10 <BODY BGCOLOR="#FFFFFF">
11 <P><FONT SIZE="-1">Mac OS X Xcode 4.2 Developer Release Copyright
12 2011 by Apple, Inc. All Rights Reserved.</FONT></P>
14 <H2>Private Mac OS X Xcode 4.2 Developer Release:<BR>
15 Compiler Tools (cctools-809)</H2>
17 <P>This file contains release notes for the 5.30 release of the
18 Compiler Tools for the Mac OS X Xcode 4.2 Developer Release. This
19 file contains information about the following topics:</P>
21 <UL>
22 <LI>The Mac OS X Mach-O GNU-based assemblers</LI>
24 <LI>The classic Mac OS X 32-bit Mach-O static link editor</LI>
26 <LI>Mach-O object tools (<B>nm</B>, <B>otool</B>, and so
27 on)&nbsp;</LI>
28 </UL>
30 <H2>Notes Specific to Release 5.30 (Mac OS X Xcode 4.2 Developer
31 Release)</H2>
33 <H5><FONT SIZE="+1">Changes since the last release (cctools-808 for
34 the 5.30 Mac OS X Xcode 4.2 Developer release)</FONT></H5>
36 <UL>
37 <LI>Fixed lipo(1) so it would recognize LLVM bit-code archives and
38 files. Radar bug #9087924.</LI>
40 <LI>Changed the assembler driver to only use target assembers
41 installed under /usr/libexec/as and only install the target
42 assemblers there. Radar bug #9908131.</LI>
43 </UL>
45 <H5><FONT SIZE="+1">Changes since the last release (cctools-807 for
46 the 5.30 Mac OS X Xcode 4.2 Developer release)</FONT></H5>
48 <UL>
49 <LI>Fixed a bug in ranlib(1) that caused it to crash. Radar bug
50 #9830754.</LI>
51 </UL>
53 <H5><FONT SIZE="+1">Changes since the last release (cctools-806.2 for
54 the 5.29 Mac OS X Xcode 4.1 Developer release)</FONT></H5>
56 <UL>
57 <LI>Changed the assemblers to allow instructions that are being
58 assembled with things like .long to trigger debugging line
59 numbers. Radar bug #9811389.</LI>
60 </UL>
62 <H2>Notes Specific to Release 5.29 (Mac OS X Xcode 4.1 Developer
63 Release)</H2>
65 <H5><FONT SIZE="+1">Changes since the last release (cctools-805 for
66 the 5.29 Mac OS X Xcode 4.1 Developer release)</FONT></H5>
68 <UL>
69 <LI>Fixed more bugs introduced in ranlib(1) causing incorrect
70 error messages about table of contents. Radar bug #9475790.</LI>
71 </UL>
73 <H5><FONT SIZE="+1">Changes since the last release (cctools-803 for
74 the 5.29 Mac OS X Xcode 4.1 Developer release)</FONT></H5>
76 <UL>
77 <LI>Fixed bugs introduced in strip(1) and libtool(1) causing
78 incorrect error messages about table of contents. Radar bug
79 #9505797.</LI>
80 </UL>
82 <H5><FONT SIZE="+1">Changes since the last release (cctools-802 for
83 the 5.29 Mac OS X Xcode 4.1 Developer release)</FONT></H5>
85 <UL>
86 <LI>Updated ranlib(1) to update table of contents in place when
87 possible. Radar bug #9354605.</LI>
88 </UL>
90 <H5><FONT SIZE="+1">Changes since the last release (cctools-801 for
91 the 5.29 Mac OS X Xcode 4.1 Developer release)</FONT></H5>
93 <UL>
94 <LI>Fixed a problem with the fast 'nop' ranlib(1) in libtool(1).
95 Radar bug #9418154.</LI>
96 </UL>
98 <H5><FONT SIZE="+1">Changes since the last release (cctools-800 for
99 the 5.29 Mac OS X Xcode 4.1 Developer release)</FONT></H5>
101 <UL>
102 <LI>Implemented a fast 'nop' ranlib(1) when run right after ar(1)
103 has already run ranlib(1). Radar bug #9354501.</LI>
104 </UL>
106 <H5><FONT SIZE="+1">Changes since the last release (cctools-799 for
107 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
109 <UL>
110 <LI>Added the .incbin directive to the assembler. Radar bug
111 #8945167.</LI>
113 <LI>Changed mtoc(1) to add support for rewriting UUID of generated
114 file with command line flag. Radar bug #8946107</LI>
116 <LI>Updated the comments in &lt;mach-o/nlist.h&gt; about
117 GET_LIBRARY_ORDINAL. Radar bug #8723078.</LI>
119 <LI>Remove cctools support for PowerPC. Radar bug #8828970.</LI>
120 </UL>
122 <H2>Notes Specific to Release 5.28 (Mac OS X Xcode 3.2.3 Developer
123 Release)</H2>
125 <H5><FONT SIZE="+1">Changes since the last release (cctools-798 for
126 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
128 <UL>
129 <LI>Fixed a problem the handling of empty file that are being
130 tested as bit code files. Radar bug #8628314.</LI>
132 <LI>Changed the encoding of the arm thumb1 adds instruction to use
133 the preferred encoding. Radar bug #8756030.</LI>
135 <LI>Fixed the handling of the arm thumb2 tst instruction
136 mishandled to correctly be allowed in IT blocks when allowed.
137 Radar bug #8783763.</LI>
139 <LI>Changed the assembler when assembling with -g to not put out
140 dwarf line tables for sections other than the .text section. Radar
141 bug #8792738.</LI>
142 </UL>
144 <H5><FONT SIZE="+1">Changes since the last release (cctools-797 for
145 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
147 <UL>
148 <LI>Changed the handling of llvm bit code files in hope of making
149 it more robust in dealing with malformed IR in the file. Radar bug
150 #8628314.</LI>
152 <LI>Changed the way the project build its C++ file to use the
153 correct compiler from the platform. Radar #8684965.</LI>
155 <LI>Fixed the arm mulle.w instruction encoding to match llvm-mc.
156 Radar bug #8755919.</LI>
158 <LI>Fixed a confusing error message in the arm assembler for out
159 of range ADR.w operand. Radar bug #8772178.</LI>
160 </UL>
162 <H5><FONT SIZE="+1">Changes since the last release (cctools-796 for
163 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
165 <UL>
166 <LI>Fixed a bug in as(1) when -g was used on files without symbols
167 in the .text section that could casue dsymutil(1) to crash. Radar
168 bug #8154276.</LI>
170 <LI>Added support for the LC_DYLD_ENVIRONMENT load command. Radar
171 bug #8653976.</LI>
172 </UL>
174 <H5><FONT SIZE="+1">Changes since the last release (cctools-795 for
175 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
177 <UL>
178 <LI>Added the -arch option to pagestuff(1). Radar bug
179 #8379048.</LI>
181 <LI>Fixed otool(1)'s disassmbly of 32-bit intel displacements to
182 not show more than 32-bits. Radar bug #8454529.</LI>
184 <LI>Added the OpenSourceURL key to cctools.plist to fix the
185 verification errors. Radar bug #8569655.</LI>
187 <LI>Fixed otool(1) arm disassembler to disassemble vqshrn.s64 and
188 friends. Radar bug #8597212.</LI>
190 <LI>Changed strings(1) and added checks to better protect against
191 crashes if it is handed a malformed file. Radar bug #8599283.</LI>
193 <LI>Updated otool(1)'s man page for the -L option to include that
194 it also prints the shared library ID. Radar bug #7885069.</LI>
196 <LI>Changed the Intel 64-bit assembler to allow 32-bit relocable
197 immediates expression of the subtraction of two symbols. Radar bug
198 #7081262.</LI>
199 </UL>
201 <H5><FONT SIZE="+1">Changes since the last release (cctools-794 for
202 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
204 <UL>
205 <LI>Fixed cft_insert(1) so it will allow an LC_FUNCTION_STARTS
206 load command in the binary it operates on. Radar bug
207 #8490836.</LI>
209 <LI>Added more subsystem types to mtoc(1). Radar bug
210 #8492168.</LI>
212 <LI>Fixed codesign_allocate(1) so it can resign a the mach_kernel.
213 Radar bug #8308587.</LI>
215 <LI>Fixed otool(1) correctly disassemble the intel movslq
216 instruction when the source is %r13d. Radar bug #8325388.</LI>
218 <LI>Added a check to the assembler so it will correctly detect an
219 error when trying to encode a scattered relocation entry that
220 overflows the 24-bit section offset field. Radar bug
221 #8348673.</LI>
222 </UL>
224 <H5><FONT SIZE="+1">Changes since the last release (cctools-793 for
225 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
227 <UL>
228 <LI>Fixed another bug in as(1) with -g and producing dwarf
229 debugging information for assembly source files. Which was missing
230 the NULL DIE terminating the Compile Unit DIE's. Radar bug
231 #8453745.</LI>
233 <LI>Added MH_NO_HEAP_EXECUTION to and support for printing the
234 flag in otool(1). Radar bug #8457105.</LI>
235 </UL>
237 <H5><FONT SIZE="+1">Changes since the last release (cctools-792 for
238 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
240 <UL>
241 <LI>Fixed bugs in as(1) with -g and producing dwarf debugging
242 information for assembly source files. Radar bugs #8387908 and
243 #8425965.</LI>
245 <LI>Fixed a bug in nm(1) with the -m option that incorrectly
246 showed some undefined symbols as &#91;symbol resolver&#93;. Radar
247 bug #8429570.</LI>
248 </UL>
250 <H5><FONT SIZE="+1">Changes since the last release (cctools-791 for
251 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
253 <UL>
254 <LI>Fixed strip(1) and other tools writing Mach-O files with
255 LC_FUNCTION_STARTS load commands that produced bad Mach-O files.
256 Radar bug #8401082.</LI>
258 <LI>Fixed mtoc(1) to correctly generate relocations and correctly
259 calculate SizeOfImage. Radar bug #8211617.</LI>
260 </UL>
262 <H5><FONT SIZE="+1">Changes since the last release (cctools-790 for
263 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
265 <UL>
266 <LI>Changed the cctools project to not build ld_classic(1) running
267 on arm. Radar bug #8286305.</LI>
268 </UL>
270 <H5><FONT SIZE="+1">Changes since the last release (cctools-789 for
271 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
273 <UL>
274 <LI>Added support for the arm Media and VFP Feature Registers 1
275 and 0. Radar bug #8246341.</LI>
277 <LI>Changed the cctools project to build without the PowerPC
278 system headers installed. Radar bug #8257646.</LI>
280 <LI>Fixed a bug where the tools would incorrectly report duplicate
281 LC_VERSION_MIN_* load commands. Radar bug #8274584.</LI>
282 </UL>
284 <H5><FONT SIZE="+1">Changes since the last release (cctools-788 for
285 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
287 <UL>
288 <LI>Fixed bug introduced with the change to Radar bug #8192009
289 where the cctools_ofiles project will not build the libmacho
290 dylibs for OS releases. Radar bug #8218646.</LI>
291 </UL>
293 <H5><FONT SIZE="+1">Changes since the last release (cctools-787 for
294 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
296 <UL>
297 <LI>Changed the assembler so it is not built with
298 -mdynamic-no-pic. Radar bug #8207834.</LI>
299 </UL>
301 <H5><FONT SIZE="+1">Changes since the last release (cctools-786 for
302 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
304 <UL>
305 <LI>Changed the tools ar(1), libtool(1) and ranlib(1) to set the
306 date in archives to zero if the environment variable ZERO_AR_DATE
307 is set. Radar bug #7919021.</LI>
309 <LI>Added the .symbol_resolver directive assembler directive and
310 changed nm(1) to print &#91;symbol resolver&#93; for these symbols
311 when the -m option is used. Radar bug #7901954.</LI>
313 <LI>Changed lipo(1) to attempt to stop a crash if the file can't
314 be paged in after it has been successfully mapped. Radar bug
315 #8087586.</LI>
317 <LI>Changed the cctools_ofiles project build for developer tools
318 to not build the libmacho dylibs. Radar bug #8192009.</LI>
320 <LI>Changed mtoc(1) support building XIP PEI/COFF images in all
321 cases. Radar bug #8197128.</LI>
323 <LI>Changed mtoc(1) to zero pad PE/COFF sections to support XIP
324 PE/COFF images. Radar bug #8199851.</LI>
325 </UL>
327 <H5><FONT SIZE="+1">Changes since the last release (cctools-785 for
328 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
330 <UL>
331 <LI>Fixed a bug in as(1) when -g was used on an empty assembly
332 file that caused it to crash. Radar bug #8154276.</LI>
333 </UL>
335 <H5><FONT SIZE="+1">Changes since the last release (cctools-784 for
336 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
338 <UL>
339 <LI>Fixed a bug in as(1) when generating displacements for -arch
340 i386 and TLVP@ expressions in use of instructions. Radar bug
341 #8113809.</LI>
343 <LI>Added generating dwarf debugging information for assembly
344 source files when the -g option is specified. Radar bug
345 #7580966.</LI>
346 </UL>
348 <H5><FONT SIZE="+1">Changes since the last release (cctools-783 for
349 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
351 <UL>
352 <LI>Fixed a bug in libtool(1) when the -arch_only flag was used
353 with armv6 or armv7 that did not create a thin files when both
354 types of objects were in the input . Radar bug #7864127.</LI>
356 <LI>Added a check in the assembler so it will not try to create an
357 object file with more than the maximum number of sections. Radar
358 bug #7920267.</LI>
360 <LI>Added support for the new LC_VERSION_MIN_* and
361 LC_FUNCTION_STARTS load commands. Radar bug #7902277.</LI>
363 <LI>Fixed a bug in otool(1) with -ov that did not print the
364 Objective-C 2 meta data in iOS simulator binaries. Radar bug
365 #7912209.</LI>
367 <LI>Fixed a bug in the arm assembler that was incorrectly using
368 the thumb 2 nop when -arch armv6 was specified and and unified
369 syntax was used. Radar bug #7876935.</LI>
370 </UL>
372 <H5><FONT SIZE="+1">Changes since the last release (cctools-782 for
373 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
375 <UL>
376 <LI>Added support for thread local variables. Radar bug
377 #7796734.</LI>
379 <LI>Added the -llvm-mc option to the assembler driver as(1) to run
380 llvm-mc instead of the GNU-based assembler. Radar bug
381 #7837868.</LI>
383 <LI>Remove Homewood for trains that use OLD_LIBKLD. Radar bug
384 #7837961</LI>
386 <LI>Added the -llvm-mc option to otool(1) to use the llvm-mc
387 register names for control registers and debug registers.</LI>
388 </UL>
390 <H5><FONT SIZE="+1">Changes since the last release (cctools-781 for
391 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
393 <UL>
394 <LI>Added support for the Intel AES instructions. Radar bug
395 #7709572.</LI>
397 <LI>Fixed the arm assembler so it correctly detects errors with
398 floating point to integer conversion instructions that use the
399 rounding mode (vcvtr.*) when they are not valid. Radar
400 #7719236.</LI>
402 <LI>Added support for .weak_def_can_be_hidden in the assemblers
403 and nm(1). Radar bug #5021217.</LI>
405 <LI>Changed the cctools project to also build a libmacho as a
406 dylib. Radar bug #7733446.</LI>
408 <LI>Added the -U option to nm(1) to not print undefined symbols.
409 Radar bug #7761111.</LI>
411 <LI>Added an ALSO SEE to the otool(1) man page that listed
412 install_name_tool(1), dyld(1) and libtool(1). Radar bug
413 #7531315.</LI>
415 <LI>Fixed a typo in a comment in &lt;mach-o/loader.h&gt; where
416 rebase should have been bind. Radar bug #6789853.</LI>
418 <LI>Fixes a bug in otool(1)'s dissassembly of the intel crc32b
419 instruction in 64-bit objects when a register greater than 8 is
420 used.</LI>
421 </UL>
423 <H5><FONT SIZE="+1">Changes since the last release (cctools-780 for
424 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
426 <UL>
427 <LI>Added support for LC_LOAD_UPWARD_DYLIB load command. Radar bug
428 #7659206.</LI>
430 <LI>Added the ctf_insert(1) command. Radar bug #7016839.</LI>
432 <LI>Fixed a check that was checking that the addr field of section
433 less than the segment's vmaddr to not do that check if the Mach-O
434 file was an MH_DYLIB_STUB. Radar bug #7709068.</LI>
436 <LI>Removed an incorrect check for the LC_ENCRYPTION_INFO
437 overlapping other elements in a Mach-O file. Also fixed the
438 overlapping checking that was not catching the size and offset
439 completely covering an element in list. Radar bug #7690872.</LI>
441 <LI>Changed codesign_allocate(1) to allow it to be used on any
442 Mach-O file. Radar bug #7689781.</LI>
444 <LI>In otool(1)'s -tv option fixed a problem with 64-bit
445 disassembly of call instructions getting the incorrect target.
446 Radar bug #7615109.</LI>
447 </UL>
449 <H5><FONT SIZE="+1">Changes since the last release (cctools-779 for
450 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
452 <UL>
453 <LI>Fixed a bug in the arm assembler that caused undefined symbols
454 for things like "vmov.f32 s2, s1" where "s1" would be an undefined
455 symbol in the output file. Radar bug #7567713.</LI>
457 <LI>Fixed a couple of bugs in the arm assembler where it would
458 abort(3) if the thumb only instructions cbnz and cbz were used in
459 arm mode instead of just printing an error, and also for "vshr
460 q0,d0,#0" which should just get an error. Radar bug #7559323.</LI>
462 <LI>Fixed verification warnings where -O was used when -Os should
463 have been used. And removed the -fno-builtin-trunc option.</LI>
465 <LI>Improved the error checking in the redo_prebinding code for
466 malformed relocation entries. Radar bug #6081358.</LI>
468 <LI>Added the getsegmentdata() API. Radar bug #7588238.</LI>
469 </UL>
471 <H5><FONT SIZE="+1">Changes since the last release (cctools-778 for
472 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
474 <UL>
475 <LI>Changed the arm assember to not warm that the value stored for
476 a base register is UNPREDICTABLE if writeback is not being used.
477 Radar bug #7528057.</LI>
479 <LI>Fixed the error checking of Mach-O files in the tools for
480 making sure that the module table does not overlap with other
481 elements. Radar bug #7520315.</LI>
483 <LI>Fixed the parsing and error checking in install_name_tool (1)
484 of the -change and -rpath arguments. Radar bug #7477104.</LI>
485 </UL>
487 <H5><FONT SIZE="+1">Changes since the last release (cctools-777 for
488 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
490 <UL>
491 <LI>Fixed the error checking of Mach-O files in the tools for
492 making sure that the local relocation enties does not overlap with
493 other elements. Radar bug #7479717.</LI>
495 <LI>Changed the code to not define its own trunc function and not
496 use -fno-builtin-trunc. Radar bug #7481062.</LI>
497 </UL>
499 <H5><FONT SIZE="+1">Changes since the last release (cctools-776 for
500 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
502 <UL>
503 <LI>Changed the optimization level to -Os in places it was using
504 -O. Radar bug #7475093.</LI>
506 <LI>Changed the code to not define its own round function and not
507 use -fno-builtin-round. Radar bug #7475139.</LI>
509 <LI>Fixed the error checking of Mach-O files in the tools for
510 making sure that sections are contained in their segments to allow
511 for unmapped segments with a vmsize of zero. Radar bug
512 #7467115.</LI>
513 </UL>
515 <H5><FONT SIZE="+1">Changes since the last release (cctools-775 for
516 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
518 <UL>
519 <LI>Improved the error checking of Mach-O files in the tools to
520 make sure that elements don't overlap.. Radar bug #6083845.</LI>
522 <LI>Improved the error checking archinve files in the tools to
523 make sure that the size of a member does not extend past the end
524 of the file. Radar bug #6078200.</LI>
526 <LI>Improved the error checking of Mach-O files in the tools to
527 make sure that flavor and count that follow a thread command fits
528 in side their command. Radar bug #6179251.</LI>
530 <LI>Improved the error checking of Mach-O files in the tools to
531 make sure that load commands fit inside their cmdsize. Also that
532 thread states fit in side their thread command. Radar bug
533 #6077166.</LI>
535 <LI>Improved the error checking of fat files or the checkes for
536 offset plus size of the fat arch is detected in the case of
537 integer overflow. Radar bug #6076414.</LI>
539 <LI>Improved the error checking of Mach-O files in the tools to
540 make sure that sections are contained in their segments. Radar bug
541 #6081358.</LI>
542 </UL>
544 <H5><FONT SIZE="+1">Changes since the last release (cctools-774 for
545 the 5.28 Mac OS X Xcode 3.2.3 Developer release)</FONT></H5>
547 <UL>
548 <LI>Added support for upper / lower 16 bit relocation for arm movw
549 and movt instructions. Radar bug #7421496.</LI>
550 </UL>
552 <H5><FONT SIZE="+1">Changes since the last release (cctools-773 for
553 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
555 <UL>
556 <LI>Fixed the x86_64 assembler to put out the optional prefixes
557 (like Address-Size Override) before the manditory REX Prefixes.
558 Radar bug #7403143</LI>
560 <LI>Switched the i386 bound instruction operand order so it would
561 be correct for AT&amp;T syntax order. Radar bug #7394709.</LI>
563 <LI>Added the intel invvpid and invept instructions to the
564 assembler and otool(1). Radar bug 7383743.</LI>
566 <LI>Fixed many small issues in the disassembly of intel
567 instructions in otool(1) so that all instructions disassemble will
568 reassemble. Radar bug #7414888.</LI>
569 </UL>
571 <H2>Notes Specific to Release 5.27 (Mac OS X Xcode 3.2.2 Developer
572 Release)</H2>
574 <H5><FONT SIZE="+1">Changes since the last release (cctools-772 for
575 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
577 <UL>
578 <LI>Added the getsectiondata(3) API. Radar bug 5724145.</LI>
580 <LI>Changed the description of otool(1)'s -X flag. Radar bug
581 #7328418.</LI>
583 <LI>Fixed a typo in two lipo(1) error messages where "it's" should
584 have been "its". Radar bug 7362293.</LI>
585 </UL>
587 <H5><FONT SIZE="+1">Changes since the last release (cctools-771 for
588 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
590 <UL>
591 <LI>Fixed the arm's assembler's vmls.f32, vmls.f64, vnmla.f32,
592 vnmls.f32, vnmla.f64 and vnmls.f64 encodings. Radar bug
593 #7331301.</LI>
595 <LI>Changed the arm assembler to make the vcvt.* forms match the
596 manual the same as what was the vcvtz.* forms. And removed the
597 vcvtz.* forms. Then added the vcvtr.* forms as in the manual as
598 what was the old vcvt.* forms. Radar bugs #7329319 &amp;
599 #7329326.</LI>
601 <LI>Changed the arm assembler to allow "vmrs APSR_nzcv, FPSCR".
602 Radar bug #5828463.</LI>
604 <LI>Changed the i386 assembler to allow displacements like
605 "4+(%esp)". Radar bug #5828463.</LI>
607 <LI>Fixed a bug in lipo(1) with the -extract option that could
608 cause the program to crash. Radar bug #7255585.</LI>
610 <LI>Fixed in otool(1) the arm the disassembly of vshll. Radar bug
611 7308888.</LI>
612 </UL>
614 <H5><FONT SIZE="+1">Changes since the last release (cctools-770 for
615 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
617 <UL>
618 <LI>Changed the arm assember to set the low bit of expressions of
619 the form foo-bar+offset when foo is a thumb symbol regardless if
620 it is weak or not. Radar bug #7262421.</LI>
622 <LI>Changed the arm assember to not warm that the value stored for
623 a base register is UNPREDICTABLE if it is the lowest register
624 being stored. Radar bug #7268941.</LI>
625 </UL>
627 <H5><FONT SIZE="+1">Changes since the last release (cctools-769 for
628 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
630 <UL>
631 <LI>Fixed problems with ld_classic(1) incorrectly causing an error
632 when linking with archives stating they are malformed. Radar bug
633 #7257030.</LI>
634 </UL>
636 <H5><FONT SIZE="+1">Changes since the last release (cctools-768 for
637 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
639 <UL>
640 <LI>Fixed problems with the assember not incorrectly handing
641 .zerofill with sizes greater than 4GB. Radar bug #7245879.</LI>
642 </UL>
644 <H5><FONT SIZE="+1">Changes since the last release (cctools-767 for
645 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
647 <UL>
648 <LI>Fixed checksyms(1) to check for read-only-relocs in 64-bit
649 binaries. And also changed checksyms(l) to not to dynamic library
650 checks on MH_KEXT_BUNDLE file types. Radar bug #7236271.</LI>
651 </UL>
653 <H5><FONT SIZE="+1">Changes since the last release (cctools-766 for
654 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
656 <UL>
657 <LI>Fixed a problem with get_byte_sex_from_flag () not knowing
658 about CPU_TYPE_X86_64. Radar bug #7222145.</LI>
660 <LI>Fixed a crash in the assembler driver when realpath(3) fails.
661 Radar bug #7201696.</LI>
662 </UL>
664 <H5><FONT SIZE="+1">Changes since the last release (cctools-765 for
665 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
667 <UL>
668 <LI>Fixed problems with the armv7 assember incorrectly using wide
669 instructions when it could use narrow instructions. Radar bug
670 #7141908.</LI>
671 </UL>
673 <H5><FONT SIZE="+1">Changes since the last release (cctools-764 for
674 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
676 <UL>
677 <LI>Added the armv7 assember orn (immediate) instructions. Radar
678 bug #7096522.</LI>
680 <LI>Fixed a problem with an incorrect too large for field width
681 error and missing line number in error message. Radar bug
682 #7114412.</LI>
684 <LI>Moved motc(1) back into /usr/local along with its man page.
685 Radar bug #7117645.</LI>
686 </UL>
688 <H5><FONT SIZE="+1">Changes since the last release (cctools-763 for
689 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
691 <UL>
692 <LI>Changed the license on all otool source files. Radar bug
693 #6538662.</LI>
694 </UL>
696 <H5><FONT SIZE="+1">Changes since the last release (cctools-762 for
697 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
699 <UL>
700 <LI>Added the armv7 assember orn instructions. Radar bug
701 #7096522.</LI>
703 <LI>Added the armv7 assember rrx instructions. Radar bug
704 #7098328.</LI>
705 </UL>
707 <H5><FONT SIZE="+1">Changes since the last release (cctools-761 for
708 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
710 <UL>
711 <LI>Fixed a probem with the arm assembler crashing if a .set
712 symbol with a subtract expression was used in an instruction.
713 Radar bug #7069304.</LI>
715 <LI>Changed the cctools project Makefiles to use the platform
716 compiler when SDKROOT is set. Radar bug #7078805.</LI>
717 </UL>
719 <H5><FONT SIZE="+1">Changes since the last release (cctools-760 for
720 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
722 <UL>
723 <LI>Fixed a probem with mtoc(1) crashing if the -p option is used
724 on an x86_64 binary. Radar bug #6904701.</LI>
726 <LI>Moved motc(1) into /usr/bin and its man page into
727 /usr/share/man. Radar bug #7038602.</LI>
728 </UL>
730 <H5><FONT SIZE="+1">Changes since the last release (cctools-759 for
731 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
733 <UL>
734 <LI>Fixed a probem with otool(1) only printing only a 32-bit
735 address for the -t option of an x86_64 binary. Radar bug
736 #7012357.</LI>
738 <LI>Removed the #ifndef __OPEN_SOURCE__ lines around the armv7
739 code. Radar bug #7016121.</LI>
740 </UL>
742 <H5><FONT SIZE="+1">Changes since the last release (cctools-758 for
743 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
745 <UL>
746 <LI>Added the armv7 assember instructions pldw, vcvt.f32.f16,
747 vcvt.f16.f32, vcvtt and vcvtb. Radar bug #6959129.</LI>
749 <LI>Added the armv7 barrior options ish, ishst, osh, oshst, nsh
750 and nshst. Radar bug #6982242.</LI>
752 <LI>Changed to the cctools project to add -isysroot $(SDKROOT) to
753 compile and link line when SDKROOT is set. Radar bug
754 #6965029.</LI>
756 <LI>Changed checksyms(1) to allow read-only-relocs in arm stubs.
757 Radar bug #6958263.</LI>
758 </UL>
760 <H5><FONT SIZE="+1">Changes since the last release (cctools-757 for
761 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
763 <UL>
764 <LI>Changed the armv7 assember to no longer mark 32-bit branch
765 instructions with a new relocation entry. Radar bug #6945428.</LI>
767 <LI>Changed the object file tools like nm(1), to default to
768 selecting 64-bit intel slice from a fat file if the tool is being
769 run as a 64-bit program. Radar bug #6942056.</LI>
771 <LI>Fixed the strip(1) man page where the -arch option incorrectly
772 stated -arch all was the default. That was removed as the default
773 is like other object file tools and is the host architecure. Radar
774 bug #6945015.</LI>
775 </UL>
777 <H5><FONT SIZE="+1">Changes since the last release (cctools-756 for
778 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
780 <UL>
781 <LI>Fixed a problem with the arm assembler assemling the rbit
782 instruction incorrectly and not setting both Rm fields. Radar bug
783 #6915130.</LI>
785 <LI>Fixed a problem with ar(1) taking a lock on the archinve when
786 only reading from and it causing make -j builds to fail. Radar bug
787 #6900552.</LI>
789 <LI>Fixed a problem with pagestuff(1) crashing when used on a
790 64-bit binary and using the -a option. Radar bug #6871695.</LI>
792 <LI>Fixed a probem with otool(1) disassembly of a 64-bit binary
793 and the call instruction with an operand of a register that was
794 not being displayed as %rax. Radar bug #6907058.</LI>
795 </UL>
797 <H5><FONT SIZE="+1">Changes since the last release (cctools-755 for
798 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
800 <UL>
801 <LI>Fixed problems with ar(1), libtool(1), redo_prebinding(1) and
802 strip(1) not correctly running other programs relative to their
803 executable. Radar bug #6821441.</LI>
804 </UL>
806 <H5><FONT SIZE="+1">Changes since the last release (cctools-754 for
807 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
809 <UL>
810 <LI>Fixed a problem with otool -oV printing incorrect values for
811 x86_64 call arguments when they had ome of their high 32-bits set.
812 Radar bug #6740004.</LI>
814 <LI>Fixed a problem in libsyminfo.a causing Symlist generation
815 crashing. Radar bug #6766272.</LI>
816 </UL>
818 <H5><FONT SIZE="+1">Changes since the last release (cctools-753 for
819 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
821 <UL>
822 <LI>Fixed a problem with otool -ov printing meaningless strings
823 when used on iPhone 3rd party binaries. Radar bug #6784286.</LI>
825 <LI>Changed mtoc(1) tool so it does not create a .reloc section
826 when there are no base relocations and also changed the
827 SizeOfImage value to include the SizeOfHeaders value. Radar bug
828 #6795386.</LI>
830 <LI>Changed the arm assembler so allow special registers. Radar
831 bug #6782055.</LI>
832 </UL>
834 <H5><FONT SIZE="+1">Changes since the last release (cctools-752 for
835 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
837 <UL>
838 <LI>Changed the cctools sources so it builds with respect to
839 RC_MAJOR_RELEASE_TRAIN. Radar bug #6796174.</LI>
840 </UL>
842 <H5><FONT SIZE="+1">Changes since the last release (cctools-751 for
843 the 5.27 Mac OS X Xcode 3.2.2 Developer release)</FONT></H5>
845 <UL>
846 <LI>Fixed the cctools sources so it builds with clang and without
847 warnings. Radar bug #6753135.</LI>
849 <LI>Fixed the arm assembler so it does not abort on .quad but
850 gives an error message. Radar bug #6731807.</LI>
852 <LI>Changed otool(1) so it displays the LC_UUID load command bytes
853 as 8-4-4-4-12 uppercase hex chars. Radar bug #6723850.</LI>
855 <LI>Fixed a bug in the assembler that could cause it an error in
856 trying to allocate too much memory. Radar bug #6720994.</LI>
858 <LI>Fixed a typo in the usuage message of otool(1). Radar bug
859 #6700325.</LI>
860 </UL>
862 <H5><FONT SIZE="+1">Changes since the last release (cctools-750 for
863 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
865 <UL>
866 <LI>Fixed a problem with the assembler incorrectly not allowing
867 the SDIV and UDIV instructions for Cortex-M3. Radar bug
868 #6697528.</LI>
870 <LI>Fixed a typo in the usage error message of
871 install_name_tool(1) where it had -rpaths that should have been
872 -rpath. Radar bug #6707169.</LI>
874 <LI>Fixed a problem with the assembler not working with
875 MallocScribble. Radar bug #5930362.</LI>
877 <LI>Fixed a problem with otool -ov printing meaningless strings
878 when used on protected binaries. Radar bug #5578032.</LI>
880 <LI>Fixed a problem with the arch(3) man page incorrectly listing
881 a type as unsigned long for the parameter nfat_archs in
882 NXFindBestFatArch which should have been uint32_t. Radar bug
883 #4717379.</LI>
884 </UL>
886 <H2>Notes Specific to Release 5.26 (Mac OS X Xcode 3.2 Developer
887 Release)</H2>
889 <H5><FONT SIZE="+1">Changes since the last release (cctools-749 for
890 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
892 <UL>
893 <LI>Fixed libtool(1) to correctly place different arm cpusubtype
894 llvm bit code files in different fat slices. Radar bug
895 #6654890.</LI>
897 <LI>Updated nm(1) to display the symbol table of llvm bit code
898 files in archives. Radar bug #6067110.</LI>
900 <LI>Fixed a bug in otool(1) that was incorrectly disassembling the
901 operand of an i386 instruction using an index register without a
902 base register. Radar bug #6533811.</LI>
904 <LI>Improved the error message of install_name_tool(1) when the
905 operation can't be preformed and the file must be re-linked to
906 include a suggestion of maybe using -headerpad or
907 -headerpad_max_install_names. Radar bug #6632968.</LI>
909 <LI>Improved the error message of strip(1) when used on a dSym
910 file to indicate strip(1) does not operate on that file type.
911 Radar bug #6569909.</LI>
913 <LI>Fixed otool(1) so it correctly displayed the S_16BYTE_LITERALS
914 flag for 16-byte literal sections. Radar bug #5947957.</LI>
916 <LI>Fixed a bug in otool(1) when running as a 64-bit program and
917 using the -ov options on a 32-bit binary where it incorectly
918 printed an error message about the category defs entries entending
919 past the end of the section. Radar bug #6652270.</LI>
921 <LI>Added the -rpath, -add_rpath and -delete_rpath options to
922 install_name_tool(1) for modifying LC_RPATH load commands. Radar
923 bug #5684850.</LI>
925 <LI>Changed otool(1) to default to use thumb instructions for some
926 arm cpusubtypes. Radar bug #6651124.</LI>
927 </UL>
929 <H5><FONT SIZE="+1">Changes since the last release (cctools-748 for
930 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
932 <UL>
933 <LI>Fixed otool(1)'s -ov option so it works on 64-bit Mach-O files
934 and added -V support to print symbol names. Radar bug
935 #6549235.</LI>
936 </UL>
938 <H5><FONT SIZE="+1">Changes since the last release (cctools-747 for
939 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
941 <UL>
942 <LI>Fixed a problem with codesign_allocate(1) producing an
943 incorrect Mach-O for a 64-bit file. Radar bug #6591303.</LI>
945 <LI>Fixed a crash in segedit(1) when used to replace a section in
946 a 64-bit Mach-O file.</LI>
947 </UL>
949 <H5><FONT SIZE="+1">Changes since the last release (cctools-746 for
950 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
952 <UL>
953 <LI>Fixed a problem with the assembler incorrectly not emitting
954 Dwarf line table when only .file and no.loc directive is not used.
955 Radar bug #6593344.</LI>
956 </UL>
958 <H5><FONT SIZE="+1">Changes since the last release (cctools-745 for
959 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
961 <UL>
962 <LI>Added support for the .uleb128 and .sleb128 directives. Radar
963 bug #4545225.</LI>
964 </UL>
966 <H5><FONT SIZE="+1">Changes since the last release (cctools-744 for
967 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
969 <UL>
970 <LI>Fixed a problem with the assembler incorrectly emitting an
971 extra Dwarf line table when .file/.loc directives are not used.
972 Radar bug #6589056.</LI>
973 </UL>
975 <H5><FONT SIZE="+1">Changes since the last release (cctools-743 for
976 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
978 <UL>
979 <LI>Fixed a problem with the assembler incorrectly emitting an
980 extra Dwarf Compile Unit when .file/.loc directives are used in
981 more than one section. Radar bug #6573528.</LI>
982 </UL>
984 <H5><FONT SIZE="+1">Changes since the last release (cctools-742 for
985 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
987 <UL>
988 <LI>Fixed a problem with the redo_prebinding(1)(3) code's handling
989 of LC_REEXPORT_DYLIB's load commands that was causing undefined
990 symbols. Radar bug #4986624.</LI>
991 </UL>
993 <H5><FONT SIZE="+1">Changes since the last release (cctools-741 for
994 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
996 <UL>
997 <LI>The cctools-742 version was a version for testing only and not
998 released.</LI>
999 </UL>
1001 <H5><FONT SIZE="+1">Changes since the last release (cctools-740 for
1002 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1004 <UL>
1005 <LI>Fixed the arm assembler's encoding of where it places Rd in
1006 the instructions qadd, qdadd, qsub and qdsub. Radar bug
1007 #6522202.</LI>
1008 </UL>
1010 <H5><FONT SIZE="+1">Changes since the last release (cctools-739 for
1011 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1013 <UL>
1014 <LI>Changed the x86_64 assembler to not call abort() after
1015 reporting assembly errors. Radar bug #6516397.</LI>
1016 </UL>
1018 <H5><FONT SIZE="+1">Changes since the last release (cctools-738 for
1019 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1021 <UL>
1022 <LI>Changed the arm assembler to emit 0x46c0 as the thumb 1 nop to
1023 pad to alignment in sections with pure instructions. Radar bug
1024 #6517544.</LI>
1025 </UL>
1027 <H5><FONT SIZE="+1">Changes since the last release (cctools-737 for
1028 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1030 <UL>
1031 <LI>Removed the used of mig(1) in the cctools project. Radar bug
1032 #6457206.</LI>
1034 <LI>Changed the armv7 assember to mark 32-bit branch instructions
1035 with a new relocation entry. Radar bug #6511482.</LI>
1036 </UL>
1038 <H5><FONT SIZE="+1">Changes since the last release (cctools-736 for
1039 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1041 <UL>
1042 <LI>Fixed a problem with the assembler incorrectly adding the
1043 value of a weak symbol to the contents of an item to be relocated
1044 referencing it. Radar bug #6505278.</LI>
1046 <LI>Fixed a but in otool(1)'s disassembly of arm code that could
1047 cause it to loop if the instruction at the end of a section was 2
1048 bytes of a 4 byte instruction. Radar bug #6504790.</LI>
1050 <LI>Changed the arm assembler to emit nop's to pad to alignment in
1051 sections with pure instructions. Radar bug #6492867.</LI>
1053 <LI>Fixed an internal assembler error that can result in an error
1054 like "Can't extend frag 86. chars". Radar bug #6490903.</LI>
1055 </UL>
1057 <H5><FONT SIZE="+1">Changes since the last release (cctools-735 for
1058 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1060 <UL>
1061 <LI>Added support for the dwarf .loc and .file directives. Radar
1062 bug #4298593 and #6460301.</LI>
1064 <LI>Fixed a mispelling of a relocation error message in the
1065 assembler. Radar bug #6447059.</LI>
1066 </UL>
1068 <H5><FONT SIZE="+1">Changes since the last release (cctools-734 for
1069 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1071 <UL>
1072 <LI>Changed strip(1) so that when run on binaries with the new
1073 compressed LINKEDIT information it does not attempt to update the
1074 info if it is not removing global symbols. Radar bug
1075 #6476423.</LI>
1076 </UL>
1078 <H5><FONT SIZE="+1">Changes since the last release (cctools-733 for
1079 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1081 <UL>
1082 <LI>Fixed a problem with strip(1) and the -no_uuid option run on
1083 binaries with the new compressed LINKEDIT information. Radar bug
1084 #6478235.</LI>
1085 </UL>
1087 <H5><FONT SIZE="+1">Changes since the last release (cctools-732 for
1088 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1090 <UL>
1091 <LI>Changed the assembler to allow .weak_definition on a symbol in
1092 any section. Radar bug #6422713.</LI>
1094 <LI>Updated strip(1) to support the new compressed LINKEDIT
1095 information. Radar bug #6257854.</LI>
1097 <LI>Fixed the dissassembly of the arm ldmia instruction so it
1098 correctly indicated when write back is to Rn is not going to
1099 happnen and the '!' character is not used when Rn is is the
1100 register list. Radar bug #6394340.</LI>
1102 <LI>Changed strings(1) and other tools to allow 64-bit Mach-O core
1103 files to have LC_THREAD commands that are only a multiple of 4 and
1104 not 8 and not cause a malformed object error. Radar bug
1105 #6379874.</LI>
1106 </UL>
1108 <H5><FONT SIZE="+1">Changes since the last release (cctools-731 for
1109 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1111 <UL>
1112 <LI>Fixed a problem with the arm assembler directive .thumb_set in
1113 not setting the N_ARM_THUMB_DEF bit on the symbol. Radar bug
1114 #6366869.</LI>
1115 </UL>
1117 <H5><FONT SIZE="+1">Changes since the last release (cctools-730 for
1118 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1120 <UL>
1121 <LI>Changed the cctools_ofiles project to not build libkld for the
1122 current iPhone SDK. Radar bug #6376136.</LI>
1123 </UL>
1125 <H5><FONT SIZE="+1">Changes since the last release (cctools-729 for
1126 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1128 <UL>
1129 <LI>Changed the internal routine in cctools that translates
1130 the&nbsp;target_triple string returned
1131 by&nbsp;lto_module_get_target_triple() to allow "i386". Radar bug
1132 #6331191.</LI>
1133 </UL>
1135 <H5><FONT SIZE="+1">Changes since the last release (cctools-728 for
1136 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1138 <UL>
1139 <LI>Changed the assembler driver, /usr/bin/as , when running on an
1140 Intel x86_64 host to default to -arch x86_64 instead of -arch
1141 i386. Radar bug #6233320.</LI>
1142 </UL>
1144 <H5><FONT SIZE="+1">Changes since the last release (cctools-727 for
1145 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1147 <UL>
1148 <LI>Fixed the arm assembler to create a relocation entry for a b.w
1149 instruction. Radar bug #6297258.</LI>
1151 <LI>Fixed the arm assembler to allow a 24-bit parameter to the svc
1152 instruction. Radar bug #6337904.</LI>
1154 <LI>Backed out the changed the assembler driver, /usr/bin/as, when
1155 it is being run as a 64-bit program on Intel x86 hardware, to
1156 default to assemble as if the -arch x86_64 flag was set. Radar bug
1157 #6233320.</LI>
1158 </UL>
1160 <H5><FONT SIZE="+1">Changes since the last release (cctools-726 for
1161 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1163 <UL>
1164 <LI>Changed the assembler driver, /usr/bin/as , when running on an
1165 Intel x86_64 host to default to -arch x86_64 instead of -arch
1166 i386. Radar bug #6233320.</LI>
1167 </UL>
1169 <H5><FONT SIZE="+1">Changes since the last release (cctools-725 for
1170 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1172 <UL>
1173 <LI>Fixed a problem with libtool(1) incorrectly putting internal
1174 symbols from LTO objects in the archive table of contents. Radar
1175 bug #6092587.</LI>
1176 </UL>
1178 <H5><FONT SIZE="+1">Changes since the last release (cctools-724 for
1179 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1181 <UL>
1182 <LI>Added support for new compressed LINKEDIT information. Radar
1183 bug #6232822.</LI>
1185 <LI>Fixed a problem with otool(1) incorrectly print the archive
1186 table of contents of a thin LTO archive. Radar bug #6303685.</LI>
1187 </UL>
1189 <H5><FONT SIZE="+1">Changes since the last release (cctools-723 for
1190 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1192 <UL>
1193 <LI>Added the MH_KEXT_BUNDLE and MH_DEAD_STRIPPABLE_DYLIB
1194 constants to &lt;mach-o/loader.h&gt; and printing of them in
1195 otool(1). Radar bug #6272534.</LI>
1197 <LI>Updated the getsegbyname(3) man page to reference the use of
1198 _dyld_get_image_vmaddr_slide(0) with executables linked with -pie.
1199 Radar bug #6194728.</LI>
1201 <LI>Backed out the changed the assembler driver, /usr/bin/as, when
1202 it is being run as a 64-bit program on Intel x86 hardware, to
1203 default to assemble as if the -arch x86_64 flag was set. Radar bug
1204 #6233320.</LI>
1205 </UL>
1207 <H5><FONT SIZE="+1">Changes since the last release (cctools-722 for
1208 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1210 <UL>
1211 <LI>Changed the assembler driver, /usr/bin/as, when it is being
1212 run as a 64-bit program on Intel x86 hardware, to default to
1213 assemble as if the -arch x86_64 flag was set. Radar bug
1214 #6233320.</LI>
1216 <LI>Integrated the beginning changes for dwarf directive support
1217 in the assembler. This is not yet hooked up and just allows the
1218 source base to remain up to date with the work going on. Radar bug
1219 #4545225.</LI>
1220 </UL>
1222 <H5><FONT SIZE="+1">Changes since the last release (cctools-721 for
1223 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1225 <UL>
1226 <LI>Changed ar(1) if when trying to lock the output file for
1227 writing and gets a Resource temporarily unavailable error to loop
1228 up to 10 time sleeping a second before trying again. Radar bug
1229 #6085183.</LI>
1231 <LI>Changed the assembler's .fill directive to allow a size of 8.
1232 Radar bug #5783217.</LI>
1234 <LI>Changed the way otool(1)'s -ov for Objective C 2.0 prints the
1235 ivar offset. It now prints that pointer as hex and derefences it
1236 and also print sthe real offset being pointed to as well. Radar
1237 bug #5733291.</LI>
1238 </UL>
1240 <H5><FONT SIZE="+1">Changes since the last release (cctools-720 for
1241 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1243 <UL>
1244 <LI>Changed the cctools Makefiles that build kernel pieces and
1245 removed the use of the -force_cpusubtype_ALL flag. Radar bug
1246 #6233829.</LI>
1247 </UL>
1249 <H5><FONT SIZE="+1">Changes since the last release (cctools-719 for
1250 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1252 <UL>
1253 <LI>Changed the cctools Makefile remove the added a target for
1254 cctools_ofiles below and add support for the cctools_sdk project
1255 name that appends $(INSTALL_LOCATION) to DSTROOT. Radar bug
1256 #6231663.</LI>
1258 <LI>Fixed a typo in the libtool(1) man page. Radar bug
1259 #4574762.</LI>
1260 </UL>
1262 <H5><FONT SIZE="+1">Changes since the last release (cctools-718 for
1263 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1265 <UL>
1266 <LI>Changed the cctools Makefile to add a target for
1267 cctools_ofiles should optionally install into the SDK path. Radar
1268 bug #6231663.</LI>
1269 </UL>
1271 <H5><FONT SIZE="+1">Changes since the last release (cctools-717 for
1272 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1274 <UL>
1275 <LI>Fixed a bug in the assembler source that would not allow it to
1276 correctly compile with LLVMgcc42. Radar bug #6219587.</LI>
1277 </UL>
1279 <H5><FONT SIZE="+1">Changes since the last release (cctools-716 for
1280 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1282 <UL>
1283 <LI>Added the -d file option to mtoc(1) to create a debug
1284 directory entry with it. Radar bug #6211642.</LI>
1285 </UL>
1287 <H5><FONT SIZE="+1">Changes since the last release (cctools-715 for
1288 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1290 <UL>
1291 <LI>Fixed a bug in the arm assemler where it encoded load-splat
1292 and load-single as load-multiple. Radar bug #6185952.</LI>
1294 <LI>Fixed a bug introduced with the change for Radar bug #6159238
1295 in cctools-715 that caused the parsing of the .zerofill
1296 directive's segment name argument to append a space to it if the
1297 assembly code had a space before the comma. Radar bug
1298 #6195283.</LI>
1300 <LI>Fixed a problem with mtoc(1) incorrectly treating some
1301 debugging symbols as undefined symbols. Radar bug 6194828.</LI>
1302 </UL>
1304 <H5><FONT SIZE="+1">Changes since the last release (cctools-714 for
1305 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1307 <UL>
1308 <LI>Fixed a bug in the assemler that caused it in some cases to
1309 fail to assemble i386 code that used prefixes on the same line as
1310 instructions. Radar bug #6159238.</LI>
1312 <LI>Fixed a bug in otool(1) that caused it to loop with the -o
1313 options when the object file has no code and only Objective-C meta
1314 data. Radar bug 6164922.</LI>
1316 <LI>Fixed a bug in the arm assemler when used with
1317 -force_cpusubtype_ALL that incorrectly caused it to restricts
1318 instructions that could be assembled. Radar bug #6150777.</LI>
1320 <LI>Changed mtoc(1) to now use the correct constant in the f_magic
1321 field for arm binaries not use the one for i386 binaries. Radar
1322 bug #6163015.</LI>
1324 <LI>Fixed the assembler's .thumb_set directive which was failing
1325 to parse its second operand. Radar bug #6182961.</LI>
1326 </UL>
1328 <H5><FONT SIZE="+1">Changes since the last release (cctools-713 for
1329 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1331 <UL>
1332 <LI>Changed lipo(1) to not cause and error when empty files are
1333 used. Radar bug #6169510.</LI>
1335 <LI>Changed libtool(1) to create separate fat archs for each arm
1336 cpusubtype. Radar bug #6155212.</LI>
1338 <LI>Fixed a bug in the assemler that can cause a crash due to an
1339 uninitialized variable. Radar bug #6163385.</LI>
1341 <LI>Added the vmrs and vmsr instuctions to the arm assembler.
1342 Radar bug #6152739.</LI>
1343 </UL>
1345 <H5><FONT SIZE="+1">Changes since the last release (cctools-712 for
1346 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1348 <UL>
1349 <LI>Fixed a bug in lipo(1) if is used on a directory, which
1350 results in a crash after it prints out an Invalid argument
1351 message. Radar bug #6147708.</LI>
1353 <LI>Fixed a bug in otool(1) that caused it to crash with the -Lv
1354 or the -ov options when it got to printing out times and Category
1355 Definitions. Radar bug 6107717.</LI>
1357 <LI>Fixed some possible crashes with malformed binaries in
1358 otool(1). Radar bug #5796857.</LI>
1360 <LI>Updated the arm assembler to print the file and line number
1361 for a case of a bad immediate value. Radar bug #5890008.</LI>
1362 </UL>
1364 <H5><FONT SIZE="+1">Changes since the last release (cctools-711 for
1365 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1367 <UL>
1368 <LI>Fixed a bug in codesign_allocate (1) if is used on a fat file
1369 with code signatures and not all architectures are specified with
1370 the -a options, which results in a malformed output file. Radar
1371 bug #6128288.</LI>
1372 </UL>
1374 <H5><FONT SIZE="+1">Changes since the last release (cctools-710 for
1375 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1377 <UL>
1378 <LI>Fixed a bug in the arm assembler that was causing an assembly
1379 time error when assembling (L3-L10)/2 expressions in .byte
1380 expressions when the (L3-L10) value was negitive. Radar bug
1381 #6096697.</LI>
1383 <LI>Fixed the cctools sources to correctly build libkld for arm
1384 release trains.</LI>
1385 </UL>
1387 <H5><FONT SIZE="+1">Changes since the last release (cctools-709 for
1388 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1390 <UL>
1391 <LI>Fixed a bug in lipo(1). Radar bug #4545225.</LI>
1392 </UL>
1394 <H5><FONT SIZE="+1">Changes since the last release (cctools-708 for
1395 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1397 <UL>
1398 <LI>Fixed a bug in the x86_64 assembler that was incorrectly
1399 relocating items with 64 bit addend with non-zero bits in the high
1400 32-bits. Radar bug #5955044.</LI>
1402 <LI>Fixed some possible crashes with malformed binaries in their
1403 thread commands in the tools. Radar bug #5749890.</LI>
1405 <LI>Fixed some possible crashes with malformed binaries in their
1406 section headers in the tools. Radar bug #5749756.</LI>
1408 <LI>Fixed some other possible crashes with malformed binaries in
1409 the tools. Radar bug #5750382.</LI>
1411 <LI>Removed a call to abort(3) after an assembler error message
1412 that made it appear the assembler was crashing. Radar bug
1413 #6029941</LI>
1415 <LI>Fixed some other possible crashes with malformed binaries in
1416 otool(1). Radar bug #5796857.</LI>
1417 </UL>
1419 <H5><FONT SIZE="+1">Changes since the last release (cctools-707 for
1420 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1422 <UL>
1423 <LI>Changed strip(1) to deal with ld(1) -r produced objects that
1424 have no symbols but incorrectly have a filesize of the unnamed
1425 segment to include the whole file as in radar bug #6048484.</LI>
1427 <LI>Fixes a bug in checksyms(1) that was giving an error when
1428 built as an x86_64 program if it was given an archive that had
1429 64-bit objects not on offsets that were multiples of 8.</LI>
1431 <LI>Updated the comments in &lt;mach-o/x86_64/reloc.h&gt; . Radar
1432 bug #5949622.</LI>
1434 <LI>Changed libtool(1) and strip(1) to used an archive member with
1435 a long name for __.SYMDEF table of contents member so that 64-bit
1436 objects in the archive are on 8-byte offsets.</LI>
1437 </UL>
1439 <H5><FONT SIZE="+1">Changes since the last release (cctools-706 for
1440 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1442 <UL>
1443 <LI>Fixed a problem with strip(1) to using ld(1) -r to strip
1444 64-bit object files as it was incorrectly run on non MH_OBJECT
1445 files.</LI>
1447 <LI>Fixed the cctools project to build when
1448 /usr/local/include/llvm-c/lto.h is in
1449 /Developer/usr/local/include/llvm-c/lto.h .</LI>
1451 <LI>Fixed the cctools project to build the arm assembler for the
1452 Kirkwood and OunceNinety RC_RELEASE values. Radar bug
1453 #6034553.</LI>
1454 </UL>
1456 <H5><FONT SIZE="+1">Changes since the last release (cctools-705 for
1457 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1459 <UL>
1460 <LI>Fixed a propblem in the assembler getting incorrect values
1461 assembled for floating point constants caused by the ported of
1462 cctools to run on 64-bit hosts.</LI>
1464 <LI>Changed strip(1) to use ld(1) -r to strip 64-bit object files.
1465 Radar bug #5829662.</LI>
1467 <LI>Fixed a bug in codesign_allocate(1) for 64-bit objects it did
1468 not correctly extend the __LINKEDIT segment. Radar bug
1469 #6000731.</LI>
1471 <LI>Fixed a bug in checksyms(1) that was printing an incorrect
1472 error for MH_DYLIB_STUB files missing LC_ID_DYLIB command. Radar
1473 bug #6035486.</LI>
1474 </UL>
1476 <H5><FONT SIZE="+1">Changes since the last release (cctools-704 for
1477 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1479 <UL>
1480 <LI>Ported cctools programs to run on 64-bit hosts. Radar bug
1481 #6022298.</LI>
1483 <LI>Fixed a problem that gprof(1) would complain executables are
1484 "not of the host architecture". Radar bug #5960471.</LI>
1485 </UL>
1487 <H5><FONT SIZE="+1">Changes since the last release (cctools-703 for
1488 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1490 <UL>
1491 <LI>Fixed redo_prebinding(1) to only zero out the UUID and code
1492 signing data when the -u option is used. Radar bug #5984993.</LI>
1493 </UL>
1495 <H5><FONT SIZE="+1">Changes since the last release (cctools-702 for
1496 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1498 <UL>
1499 <LI>Added the new assembler directives .inlineasmstart and
1500 .inlineasmend for the compiler used to make non-numeric label
1501 definition an error in an inlineasm region. Radar bug
1502 #5896375.</LI>
1504 <LI>Improved the x86_64 assembly time. Radar bug #5902686.</LI>
1506 <LI>Change the libtool(1) sources so it can be compiled as a
1507 64-bit program and create large static libraries. Radar bug
1508 #5780008.</LI>
1509 </UL>
1511 <H5><FONT SIZE="+1">Changes since the last release (cctools-701 for
1512 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1514 <UL>
1515 <LI>Changed checksyms(1) to allow the local symbol creadted by
1516 strip(1) for the change to radar bug #5614542 and not to be
1517 counted as a local symbol or debugging symbol and string. Radar
1518 bug #5938033.</LI>
1519 </UL>
1521 <H5><FONT SIZE="+1">Changes since the last release (cctools-700 for
1522 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1524 <UL>
1525 <LI>Fixed a bug in otool(1) -ov for Objective-C 2 not printing
1526 class meta data. Radar bug #5909952.</LI>
1528 <LI>Changed the needs_redo_prebinding() API to use the
1529 allow_missing_architecture parameter so the check only applys to
1530 the slice requested isn't prebound. Radar bug #4701556.</LI>
1532 <LI>Changed strip(1) to avoid creating a file with an indirect
1533 symbol table entry with an index of zero into the symbol table
1534 which caused some programs to crash. Radar bug #5614542.</LI>
1536 <LI>Fixed a problem with the assembler using a .set directive to a
1537 symbol that is the difference of two symbols that was causing an
1538 incorrect "Complex expression" error. Radar bug #5684077.</LI>
1540 <LI>Fixed a bug in the assembler that would incorrectly calculate
1541 address differences. Radar bug #5683920.</LI>
1543 <LI>Fixed a bug in the x86_64 assembler that would not assembler a
1544 32-bit displacement as the difference of two symbols. Radar bug
1545 #5622258.</LI>
1547 <LI>Added the -align option to mtoc(1) to set both the PECOFF file
1548 and section alignment.</LI>
1550 <LI>Fixed a bug in install_name_tool(1) that was casuing it to
1551 crash when trying to print an error message saying the file needed
1552 to be relinked. Radar bug #5932327.</LI>
1554 <LI>Changed the internal implementation of cctools to avoid
1555 loading the LTO library on archive table of contents. Radar bug
1556 #5919409</LI>
1557 </UL>
1559 <H5><FONT SIZE="+1">Changes since the last release (cctools-699 for
1560 the 5.26 Mac OS X Xcode 3.2 Developer release)</FONT></H5>
1562 <UL>
1563 <LI>Fixed a bug in swap_relocation_info() when running on x86_64
1564 that did not work correctly. Radar bug #5904383.</LI>
1566 <LI>Fixed a problem with 16 character section names not getting
1567 printed correctly with otool(1)'s -ov for x86_43 binaries. Radar
1568 bug #5912294.</LI>
1570 <LI>Fixed lipo(1)'s -blank_arch option when used with arvmv6.
1571 Radar bug #5547634.</LI>
1573 <LI>Changed redo_prebinding(1)'s -u option to zero out the UUID
1574 and code signing data. Radar bug #5631467.</LI>
1575 </UL>
1577 <H5><FONT SIZE="+1">Changes since the last release (cctools-698 for
1578 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1580 <UL>
1581 <LI>Changed codesign_allocate(1) work with MH_OBJECT file types.
1582 Radar bug #5545465.</LI>
1584 <LI>Changed the ld_classic(1) source to not use obsolete dyld
1585 APIs. Radar bug #5620031.</LI>
1587 <LI>Fixed a problem in the mtoc(1) tool that did not including the
1588 zero fill part of sections in the SizeOfImage field.</LI>
1590 <LI>Updated the ARM disassembler in otool(1). Radar bug
1591 #5874064.</LI>
1593 <LI>Backed out the change to redo_prebinding(1) to set the first
1594 two pointers in the __dyld section. Radar bug #5902653.</LI>
1595 </UL>
1597 <H2>Notes Specific to Release 5.25 (Mac OS X Xcode 3.1 Developer
1598 Release)</H2>
1600 <H5><FONT SIZE="+1">Changes since the last release (cctools-697 for
1601 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1603 <UL>
1604 <LI>Added support to allow libtool(1), and ranlib(1), to work with
1605 LLVM bitcode files so static archive targets work with LTO. Radar
1606 bug #5712460.</LI>
1607 </UL>
1609 <H5><FONT SIZE="+1">Changes since the last release (cctools-696 for
1610 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1612 <UL>
1613 <LI>Changed the cctools sources to not build the ARM assembler for
1614 the Opal train. Radar bug #5844124.</LI>
1615 </UL>
1617 <H5><FONT SIZE="+1">Changes since the last release (cctools-695 for
1618 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1620 <UL>
1621 <LI>Changed the cctools Makefiles to use -iwithsysroot when
1622 building libmacho and libstuff.</LI>
1624 <LI>Changed the cctools &lt;mach/arm/thread_status.h&gt; guard to
1625 match xnu's of _ARM_THREAD_STATUS_H_ .</LI>
1626 </UL>
1628 <H5><FONT SIZE="+1">Changes since the last release (cctools-694 for
1629 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1631 <UL>
1632 <LI>Changed the cctools Makefile to use -iwithsysroot when
1633 building libkld.</LI>
1634 </UL>
1636 <H5><FONT SIZE="+1">Changes since the last release (cctools-693 for
1637 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1639 <UL>
1640 <LI>Fixed a bug in strip(1) that caused it to crash on stipping an
1641 MH_PRELOAD filetype. Radar bug #5834516.</LI>
1643 <LI>Changed the cctools Makefile to build libkld for releases:
1644 Vail, SugarBowl, BigBear and Homewood.</LI>
1645 </UL>
1647 <H5><FONT SIZE="+1">Changes since the last release (cctools-692 for
1648 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1650 <UL>
1651 <LI>Updated otool(1) to print Objective-C 2.0 information for arm
1652 binaries. Radar bug #5739542.</LI>
1654 <LI>Changed otool(1) to print ABSOLUTE for indirect symbol table
1655 entries in an i386 binary marked with only INDIRECT_SYMBOL_ABS.
1656 Radar bug #5829053.</LI>
1658 <LI>Fixed a spurious otool -I error. Radar bug #5728302.</LI>
1659 </UL>
1661 <H5><FONT SIZE="+1">Changes since the last release (cctools-691 for
1662 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1664 <UL>
1665 <LI>Updated strip(1) to support binaries that use lazy dylibs.
1666 Radar bug #5828589.</LI>
1667 </UL>
1669 <H5><FONT SIZE="+1">Changes since the last release (cctools-690 for
1670 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1672 <UL>
1673 <LI>Added a definition for a new load command for iPhone app
1674 encryption. Radar bug #5811987.</LI>
1676 <LI>Updated cctools to not choke on iPhone binary with new
1677 "encrypted binary" load command. Radar bug #5811994.</LI>
1678 </UL>
1680 <H5><FONT SIZE="+1">Changes since the last release (cctools-689 for
1681 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1683 <UL>
1684 <LI>Changed the cctools sources to not build the efitools for
1685 iPhone build as a work around to avioid a compiler problem. Radar
1686 bug #5826370.</LI>
1687 </UL>
1689 <H5><FONT SIZE="+1">Changes since the last release (cctools-688 for
1690 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1692 <UL>
1693 <LI>Fixed a bug in the arm assembler that incorrectly produced
1694 "selected processor does not support" error messages when
1695 -force_cpusubtype_AL was used. Radar bug #5817558</LI>
1697 <LI>Changed the assembler to allow (L3-L10)/2 expressions in .byte
1698 expressions. Radar bug #5819903.</LI>
1699 </UL>
1701 <H5><FONT SIZE="+1">Changes since the last release (cctools-687 for
1702 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1704 <UL>
1705 <LI>Added cctools support for lazy dylib loading. Radar bug
1706 #5760930.</LI>
1708 <LI>Fixed bug in mtoc(1) to correctly pick the next available
1709 address in a Mach-O file for the .reloc PECOFF section when the
1710 Mach-O file has a __LINKEDIT segment.</LI>
1711 </UL>
1713 <H5><FONT SIZE="+1">Changes since the last release (cctools-686 for
1714 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1716 <UL>
1717 <LI>Added checking for undefined symbols (64-bit) in mtoc(1).</LI>
1719 <LI>Added cctools support for lazy dylib loading. Radar bug
1720 #5760930.</LI>
1721 </UL>
1723 <H5><FONT SIZE="+1">Changes since the last release (cctools-685 for
1724 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1726 <UL>
1727 <LI>Added the "-section_alignment &lt;hex_value&gt;" option to
1728 mtoc(1).</LI>
1730 <LI>In mtoc(1) added a check to make sure the headers are not
1731 mapped on top of its sections in the PECOFF output.</LI>
1733 <LI>Added alternate names for the subsystem arguments in
1734 mtoc(1).</LI>
1736 <LI>Added checking for undefined symbols (32-bit only so far) in
1737 mtoc(1).</LI>
1739 <LI>Changed project to not build unneeded support libraries for
1740 libkld for SnowLeopard. Radar bug #5780592.</LI>
1741 </UL>
1743 <H5><FONT SIZE="+1">Changes since the last release (cctools-684 for
1744 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1746 <UL>
1747 <LI>Updated mtoc(1) to deal with MH_EXECUTE file types and MH_PIE
1748 flag.</LI>
1750 <LI>Again more changes for arm support. Radar bug #5490815</LI>
1751 </UL>
1753 <H5><FONT SIZE="+1">Changes since the last release (cctools-683 for
1754 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1756 <UL>
1757 <LI>Three more changes for arm support. Radar bug #5490815</LI>
1758 </UL>
1760 <H5><FONT SIZE="+1">Changes since the last release (cctools-682 for
1761 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1763 <UL>
1764 <LI>Two more changes for arm support. Radar bug #5490815</LI>
1765 </UL>
1767 <H5><FONT SIZE="+1">Changes since the last release (cctools-681 for
1768 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1770 <UL>
1771 <LI>Still more changes for arm support. Radar bug #5490815</LI>
1773 <LI>Updated cctools support for Mac OS X deployment target support
1774 and changed the highest know shipping version to 10.6 .</LI>
1776 <LI>Picked up a change to the otool Makefile to compile
1777 print_objc.o with -fobjc-abi-version=1 .</LI>
1778 </UL>
1780 <H5><FONT SIZE="+1">Changes since the last release (cctools-680 for
1781 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1783 <UL>
1784 <LI>Added the -A option to codesign_allocate(1). Rdar bug
1785 #5681427.</LI>
1787 <LI>Changed codesign_allocate(1) to be a member of
1788 com.apple.tool.codesign_allocate . Rdar bug #5681503.</LI>
1790 <LI>Added the new mtoc(1) program. Radar bug #5536661,</LI>
1792 <LI>Fixed the SSE4.1 pextrq and pinsrq instructions which did not
1793 have a REX.W byte.</LI>
1795 <LI>Fixed the SSE4.1 insertps instruction where it had the second
1796 parameter as a general register not a xmm register. Radar bug
1797 #5650346.</LI>
1799 <LI>Removed the sources changes to #ifndef __OPEN_SOURCE__ to
1800 isolate arm sections of cctools sources that was put in for Radar
1801 bug #5326431.</LI>
1803 <LI>More changes for arm support. Radar bug #5490815</LI>
1804 </UL>
1806 <H5><FONT SIZE="+1">Changes since the last release (cctools-679.3 for
1807 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1809 <UL>
1810 <LI>Changes for arm support. Radar bug #5490815.</LI>
1811 </UL>
1813 <H5><FONT SIZE="+1">Changes since the last release (cctools-679.2 for
1814 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1816 <UL>
1817 <LI>Changed the cctools project to no longer build libkld for
1818 SnowLeopard. Radar bug #5698612.</LI>
1819 </UL>
1821 <H5><FONT SIZE="+1">Changes since the last release (cctools-679.1 for
1822 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1824 <UL>
1825 <LI>Fixed a problem with symlist creation failing for some ppc
1826 projects. Radar bug #5630991.</LI>
1827 </UL>
1829 <H5><FONT SIZE="+1">Changes since the last release (cctools-679 for
1830 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1832 <UL>
1833 <LI>Backed out the changed to strip(1) so that it will strip DWARF
1834 debugging symbols by calling ld(1) to do the stripping for Radar
1835 bug #5343015. Because of the ld(1) bug 5675774. Radar bug
1836 #5660086.</LI>
1838 <LI>Fixed a problem with symlist creation failing for some ppc
1839 projects. Radar bug #5681670.</LI>
1840 </UL>
1842 <H5><FONT SIZE="+1">Changes since the last release (cctools-678 for
1843 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1845 <UL>
1846 <LI>Fixed a problem in the strip(1) program which caused it to
1847 crash when run on a file without a dynamic symbol table that was
1848 to be fully stripped. The change for Radar bug #5008421, was
1849 missing a check for a null dynamic symbol table pointer. Radar bug
1850 #5588769.</LI>
1851 </UL>
1853 <H5><FONT SIZE="+1">Changes since the last release (cctools-677 for
1854 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1856 <UL>
1857 <LI>Fixed a problem in the x86_64 assembler caused by the change
1858 for Radar bug #5122861, which was incorrectly assembling
1859 rip-relative references. Radar bug #5584168.</LI>
1860 </UL>
1862 <H5><FONT SIZE="+1">Changes since the last release (cctools-676 for
1863 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1865 <UL>
1866 <LI>Changed the cctools Makefiles to not use -Wno-long-double and
1867 -no-cpp-precomp so it will build with gcc-4.2. Radar bug
1868 #5563553.</LI>
1870 <LI>Fixed a problem in the x86_64 assembler which incorrectly
1871 added in offsets into pcrel instructions. Radar bug #5326431.</LI>
1872 </UL>
1874 <H5><FONT SIZE="+1">Changes since the last release (cctools-675 for
1875 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1877 <UL>
1878 <LI>Added the Logical and and or operators in the assembler. Radar
1879 bug #4110102.</LI>
1881 <LI>Fixed ranlib(1) to not overwrite files without write
1882 permission. Radar bug #4242330.</LI>
1884 <LI>Added the .balign assembler directive. Radar bug
1885 #4352052.</LI>
1887 <LI>Changed the assembler to accept .endmacro as .endm . Radar bug
1888 #4361968.</LI>
1890 <LI>Changed the assembler to accept carrage returns in the input
1891 assembly file. Radar bug #4372927.</LI>
1893 <LI>Fixed the assembler so that the value of symbol set with
1894 initially unresolved subtract expression can be changed. Radar bug
1895 #4433066.</LI>
1897 <LI>Fixed a bug in otool(1) that was giving a warning about a
1898 section offset being past end of file for 0-length sections at end
1899 of file. Radar bug #4455994.</LI>
1901 <LI>Changed the assembler directive .machine to allow the argument
1902 "all". Radar bug #4512478.</LI>
1904 <LI>Changed the assembler to make a section difference relocable
1905 subtraction expression using assembler temporay labels where one
1906 is at the end of the section into an assembly time constant and
1907 there are no non-assembler temporay labels between them. Radar bug
1908 #4515996.</LI>
1910 <LI>Fixed a bug in the asembler when it was generating SLINE stabs
1911 with -g so that the address is at the beginning of the
1912 instruction. Radar bug #4521858.</LI>
1914 <LI>Fixed the x86_64 assembler to correctly assemble absolute
1915 64bit addressing. Radar bug #4534958.</LI>
1917 <LI>Fixed some typos in the libtool(1) man page. Radar bug
1918 #4574762.</LI>
1920 <LI>Added pushfd and popfd as the same as pushf and popf for the
1921 i386 assembler. Radar bug #4676279.</LI>
1923 <LI>Fixed the -extract_family option in lipo(1) so it produced
1924 correct output files. Radar bug #4695968.</LI>
1926 <LI>Changed the cctools source to use the prototype of
1927 _NSetMachExecuteHeader from crt_externs.h . Radar bug
1928 #4696889.</LI>
1930 <LI>Cleaned up the libtool(1) BUGS section of the man page to
1931 reflect the current behavior. Radar bug #4708229.</LI>
1933 <LI>Fixed a bug in otool(1) that did not show all bytes of i386
1934 unknown opcodes. Radar bug #4760658.</LI>
1936 <LI>Added the PowerPC simplified mnemonic "mtvrsave". Radar bug
1937 #4955676.</LI>
1939 <LI>Fixed a typo in the nmedit(1) man page. Radar bug
1940 #5068920.</LI>
1942 <LI>Fixed a bug in the x86_64 assembly and dissembly of a
1943 rip-relative call. Radar bug #5122861.</LI>
1945 <LI>Fixed a bug in otool(1) that did not free memory between
1946 corefiles causing it to run out of memory and crash. Radar bug
1947 #5156499.</LI>
1949 <LI>Fixed a typo on the libtool(1) man page. Radar bug
1950 #5160229.</LI>
1952 <LI>Fixed a bug in otool(1) that was preventing it from printing
1953 labels in x86_64 disassembly. Radar bug #5186450.</LI>
1955 <LI>Fixed some typos in the redo_prebinding error messages. Radar
1956 bug #5188349.</LI>
1958 <LI>Changed the assembler to print Apple Inc. not Apple Computer,
1959 Inc. Radar bug #5197757</LI>
1961 <LI>Fixed a problem with nm(1) that would print architecture is
1962 missing in some cases. Radar bug #5205751.</LI>
1964 <LI>Added printiing of PECOFF base relocation entries symbolically
1965 in otool(1). Radar bug #5218665.</LI>
1967 <LI>Added support in the assembler for local labels beyond 9.
1968 Radar bug #5256532.</LI>
1970 <LI>Changed the x86 assembler to allow the implicit xmm0 first
1971 register argument to be coded with blendvpd, blendvps and
1972 pblendvb. Radar bug #5268692.</LI>
1973 </UL>
1975 <H5><FONT SIZE="+1">Changes since the last release (cctools-674 for
1976 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1978 <UL>
1979 <LI>Changed &lt;mach-o/nlist.h&gt; so that it has it is wraped
1980 with extern "C" for C++ compiles. Radar bug #5419852.</LI>
1982 <LI>Changed strip(1) so that it will strip DWARF debugging symbols
1983 by calling ld(1) to do the stripping. Radar bug #5343015.</LI>
1985 <LI>Fixed strip(1) to correctly do a full symbol strip on a
1986 relocatable .o file if it would only have LOCAL indirect symbol
1987 table and local relocation enties. Radar bug #5008421.</LI>
1989 <LI>Fixed otool(1) to not crash if given a malformed object file
1990 that had a segment command with a very large number of sections.
1991 Radar bug #5405675.</LI>
1992 </UL>
1994 <H5><FONT SIZE="+1">Changes since the last release (cctools-673 for
1995 the 5.25 Mac OS X Xcode 3.1 Developer release)</FONT></H5>
1997 <UL>
1998 <LI>Changed redo_prebinding to not put LC_PREBOUND_DYLIB commands
1999 in prebound images if MACOSX_DEPLOYMENT_TARGET is 10.4 or later.
2000 Radar bug #5350524.</LI>
2001 </UL>
2003 <H5><FONT SIZE="+1">Changes since the last release (cctools-672 for
2004 the 5.24 Mac OS X Xcode 3.0 Developer release)</FONT></H5>
2006 <UL>
2007 <LI>Changed the sources to #ifndef __OPEN_SOURCE__ to isolate arm
2008 sections of cctools sources. Radar bug #5326431.</LI>
2009 </UL>
2011 <H2>Notes Specific to Release 5.24 (Mac OS X Xcode 3.0 Developer
2012 Release)</H2>
2014 <H5><FONT SIZE="+1">Changes since the last release (cctools-671 for
2015 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2017 <UL>
2018 <LI>Fixed an issue with the change below so that a common symbol
2019 continues to have an external relocation entry. Radar bug
2020 #5259877.</LI>
2021 </UL>
2023 <H5><FONT SIZE="+1">Changes since the last release (cctools-670 for
2024 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2026 <UL>
2027 <LI>Changed the x86_64 assembler to use local relocation entries
2028 in a debug section for a defined symbol. Radar bug #5259877.</LI>
2029 </UL>
2031 <H5><FONT SIZE="+1">Changes since the last release (cctools-669 for
2032 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2034 <UL>
2035 <LI>Changed the arm assembler to provide a diagnostic for swp and
2036 swpb instructions if &lt;Rn&gt; is the same as &lt;Rm&gt; or
2037 &lt;Rd&gt;. Radar bug #5281523.</LI>
2038 </UL>
2040 <H5><FONT SIZE="+1">Changes since the last release (cctools-668 for
2041 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2043 <UL>
2044 <LI>Changed the assembler back to only warn about duplicate macro
2045 definitions.</LI>
2047 <LI>Fixed problems in the cctools source when compiled for 64-bit
2048 targets that would cause an undefined symbol for SWAP_LONG.</LI>
2049 </UL>
2051 <H5><FONT SIZE="+1">Changes since the last release (cctools-667.2 for
2052 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2054 <UL>
2055 <LI>Changed codesign_allocate(1) to never update the LC_ID_DYLIB
2056 timestamps. Radar bug #5374218.</LI>
2057 </UL>
2059 <H5><FONT SIZE="+1">Changes since the last release (cctools-667.1 for
2060 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2062 <UL>
2063 <LI>Fixed a problem codesign_allocate(1) that was incorrectly
2064 rounding up the __LINKEDIT segement for 64-bit Mach-O files to 8K
2065 not 4K. Radar bug #5363873.</LI>
2066 </UL>
2068 <H5><FONT SIZE="+1">Changes since the last release (cctools-667 for
2069 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2071 <UL>
2072 <LI>Changes to support the arm architecture were merged in. Radar
2073 bug #5241042.</LI>
2074 </UL>
2076 <H5><FONT SIZE="+1">Changes since the last release (cctools-666 for
2077 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2079 <UL>
2080 <LI>Fixed a problme with the change below to strip(1)'s -c option
2081 to always remove the LC_CODE_SIGNATURE load command and signature
2082 data from the output. Radar bug #5207629.</LI>
2083 </UL>
2085 <H5><FONT SIZE="+1">Changes since the last release (cctools-665 for
2086 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2088 <UL>
2089 <LI>Changed strip(1)'s -c option to always remove the
2090 LC_CODE_SIGNATURE load command and signature data from the output.
2091 Radar bug #5207629.</LI>
2092 </UL>
2094 <H5><FONT SIZE="+1">Changes since the last release (cctools-664 for
2095 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2097 <UL>
2098 <LI>Added support for the Intel SSE4.1 and SSE4.2 instructions.
2099 Radar bug #4943015.</LI>
2100 </UL>
2102 <H5><FONT SIZE="+1">Changes since the last release (cctools-663 for
2103 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2105 <UL>
2106 <LI>Fixed a bug that would cause an internal error when ranlib(1)
2107 was used on two or more libraries. Radar bug #5169741.</LI>
2108 </UL>
2110 <H5><FONT SIZE="+1">Changes since the last release (cctools-662 for
2111 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2113 <UL>
2114 <LI>Changed ld_classic(1)'s -macosx_version_min argument and
2115 MACOSX_DEPLOYMENT_TARGET to support minor version numbers. Radar
2116 bug #5132019.</LI>
2118 <LI>Changed the as(1) man page's reference to the the assembler
2119 manual. Radar bug #5143784.</LI>
2121 <LI>Changed libtool(1) to not make the computer unresponsive when
2122 building large static libraries. Radar bug #5052598.</LI>
2123 </UL>
2125 <H5><FONT SIZE="+1">Changes since the last release (cctools-661 for
2126 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2128 <UL>
2129 <LI>Changed the x86_64 assembler(1) to allow the .mod_init_func
2130 and .mod_term_funcs directives when -static is used. Radar bug
2131 #5127668.</LI>
2133 <LI>Changed kld(3) to keep the LC_UUID (if any) from the last
2134 object loaded in the linked output. Radar bug #5137807.</LI>
2135 </UL>
2137 <H5><FONT SIZE="+1">Changes since the last release (cctools-660 for
2138 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2140 <UL>
2141 <LI>Changed strip(1) to not change LC_ID_DYLIB timestamp in
2142 unprebound dylibs. Radar bug #5093170.</LI>
2143 </UL>
2145 <H5><FONT SIZE="+1">Changes since the last release (cctools-659 for
2146 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2148 <UL>
2149 <LI>Fixed the header file &lt;mach-o/swap.h&gt; to include an
2150 extern "C". Radar bug #5075908.</LI>
2151 </UL>
2153 <H5><FONT SIZE="+1">Changes since the last release (cctools-658 for
2154 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2156 <UL>
2157 <LI>Changed otool(1) to handle the change of the ObjcC 2.0 section
2158 names for the -ov option. Radar bug #5066149.</LI>
2160 <LI>Fixed otool(1) for disassembly of the MOV instruction with
2161 64-bit offsets for "accumulator from memory" and "accumulator to
2162 memory" and also use the mnemonic "movabsl". Radar bug
2163 #4693534</LI>
2164 </UL>
2166 <H5><FONT SIZE="+1">Changes since the last release (cctools-657 for
2167 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2169 <UL>
2170 <LI>Fixed a bug in nmedit(1) and strip(1) where when run on a
2171 64-bit relocatable object files where the string table was on an 8
2172 byte offset in the file with padding before it, it would produce a
2173 corrupt output file. Radar bug #5054452.</LI>
2174 </UL>
2176 <H5><FONT SIZE="+1">Changes since the last release (cctools-656 for
2177 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2179 <UL>
2180 <LI>Fixed a bug in nm(1) where when run with a -arch flags on a
2181 fat file archive of the non-native bytesex it crashes. Radar bug
2182 #5055223.</LI>
2183 </UL>
2185 <H5><FONT SIZE="+1">Changes since the last release (cctools-655 for
2186 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2188 <UL>
2189 <LI>Fixed a bug in codesign_allocate(1) such that when run on a
2190 64-bit Mach-O file when the string table offset is not on an 8
2191 byte boundary the resulting output file is malformed such that the
2192 symbol names appear incorrect. Radar bug #5047066</LI>
2194 <LI>Added MH_PIE to &lt;mach-o/loader.h&gt;. Radar bug
2195 #5041291.</LI>
2197 <LI>Fixed a bug in nm(1) where when run with multiple -arch flags
2198 on a fat file does not print symbol names. Radar bug
2199 #5047924.</LI>
2200 </UL>
2202 <H5><FONT SIZE="+1">Changes since the last release (cctools-654 for
2203 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2205 <UL>
2206 <LI>Fixed a bug in strip(1) so that when the -no_uuid option is
2207 used on a binary with a&nbsp;LC_SEGMENT_SPLIT_INFO load command it
2208 does not produce a corrupt binary. Radar bug #5033393.</LI>
2209 </UL>
2211 <H5><FONT SIZE="+1">Changes since the last release (cctools-653 for
2212 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2214 <UL>
2215 <LI>Fixed libtool(1) to work with Xcode coexistence and correctly
2216 open files for -lx options based on the -syslibroot and -L flags.
2217 Radar bug #5029099.</LI>
2218 </UL>
2220 <H5><FONT SIZE="+1">Changes since the last release (cctools-652 for
2221 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2223 <UL>
2224 <LI>Updated otool(1) to print the Objective-C garbage collection
2225 status. Radar bug #4983418.</LI>
2227 <LI>Added support for the LC_REEXPORT_DYLIB load command. Radar
2228 bug #4986624.</LI>
2230 <LI>Fixed gprof(1) to work with dyld shared cache. Radar bug
2231 #4960162.</LI>
2233 <LI>Backed out the change for Radar bug #4930693 in kld(1) when it
2234 called the address_func it is passed the allocated_size of memory
2235 including the symbol table. Radar bug #4994738</LI>
2236 </UL>
2238 <H5><FONT SIZE="+1">Changes since the last release (cctools-651 for
2239 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2241 <UL>
2242 <LI>Added project version information to libmacho. Radar bug
2243 #4980378.</LI>
2244 </UL>
2246 <H5><FONT SIZE="+1">Changes since the last release (cctools-650 for
2247 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2249 <UL>
2250 <LI>Fixed a bug in ld_classic(1) which was causing a crash when
2251 linking against a dyanmic library built by the unified linker that
2252 has an LC_SEGMENT_SPLIT_INFO load command. Radar bug
2253 #4953247.</LI>
2255 <LI>Fixed a bug in nm(1) that caused it to show the symbols
2256 swapped when multiple -arch flags were specified for a fat file.
2257 Radar bug #4970647.</LI>
2258 </UL>
2260 <H5><FONT SIZE="+1">Changes since the last release (cctools-649 for
2261 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2263 <UL>
2264 <LI>Changed kld(1) so when it calls the address_func it is passed
2265 the allocated_size of memory including the symbol table. Radar bug
2266 #4930693.</LI>
2267 </UL>
2269 <H5><FONT SIZE="+1">Changes since the last release (cctools-648 for
2270 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2272 <UL>
2273 <LI>Added an open source cctools.plist. Radar bug #4898129.</LI>
2275 <LI>Fixed a bug in ld_classic(1) which was getting an internal
2276 error when the -s option (strip all symbols) was used and there
2277 was a symbol that was both a private external and marked
2278 referenced dynamically. Radar bug #4885434.</LI>
2280 <LI>Updated otool(1)'s -ov option to print out the objc 2.0
2281 metadata in 64-bit objects. Radar bug #4560930.</LI>
2283 <LI>Added S_DTRACE_DOF to &lt;mach-o/loader.h&gt;. Radar bug
2284 #4918330.</LI>
2286 <LI>Added checks to ld_classic(1) so that you can't create a bad
2287 .o file with -r when the r_address field of a scattered relocation
2288 over flows. Radar bug #4921122.</LI>
2289 </UL>
2291 <H5><FONT SIZE="+1">Changes since the last release (cctools-647 for
2292 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2294 <UL>
2295 <LI>Enhanced otool(1)'s -s option when printing
2296 S_MOD_{INIT,TERM}_FUNC_POINTERS section types to print them as
2297 pointers with the -v option and print symbol names of the pointers
2298 with the -V option. Radar bug #4880624.</LI>
2300 <LI>Ported gprof(1) to work with 64-bit Mach-O files. Radar bug
2301 #4601274.</LI>
2303 <LI>Changed the cctools project to now install these private
2304 release notes in
2305 /Developer/Documentation/DocSets/com.apple.ADC_Reference_Library.DeveloperTools.docset/Contents/Resources/Documents/documentation/DeveloperTools
2306 for Xcode coexistence.</LI>
2308 <LI>Fixed bugs in otool(1), lipo(1), nm(1), and strings(1) that
2309 caused crashes with malformed fat file when the number of
2310 architectures in the fat header is a large number.&nbsp; Radar bug
2311 #4860769.</LI>
2312 </UL>
2314 <H5><FONT SIZE="+1">Changes since the last release (cctools-646 for
2315 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2317 <UL>
2318 <LI>Fixed problems with codesign_allocate(1) not correctly
2319 matching architectures with new&nbsp;capability bits set in the
2320 cpusubtype. Radar bug #4849153.</LI>
2322 <LI>Changed the cctools project to stop installing
2323 the&nbsp;deprecated&nbsp;dyld_debug(3) man page. Radar bug
2324 #4734305.</LI>
2325 </UL>
2327 <H5><FONT SIZE="+1">Changes since the last release (cctools-645 for
2328 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2330 <UL>
2331 <LI>Changed the assembler driver, /usr/bin/as, to execute the
2332 target specific assemblers relative to where the assembler driver
2333 is installed. Radar bug #4841943.</LI>
2335 <LI>Fixed otool(1)'s Intel disassembler to correctly disassemble
2336 call &lt;constant&gt;. Radar bug #4523901.</LI>
2338 <LI>Fixed otool(1)'s Intel disassembler to correctly use the rep
2339 not repz prefix with the instructions ins, outs, movs, lods, and
2340 stos. Radar bug #4467453.</LI>
2342 <LI>Fixed otool(1)'s 64-bit Intel disassembler to correctly
2343 disassemble the MOV accumulator to memory operand as a 64-bit
2344 immediate. Radar bug #4693534.</LI>
2345 </UL>
2347 <H5><FONT SIZE="+1">Changes since the last release (cctools-644 for
2348 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2350 <UL>
2351 <LI>Changed strip(1) and otool(1) to support LC_RPATH
2352 commands.&nbsp;Radar bug #4822880.</LI>
2354 <LI>Changed ld_classic(1) to support libtool(1) options. Radar bug
2355 #4758790.</LI>
2357 <LI>Changed the header file &lt;mach-o/getsect.h&gt; to be
2358 protected by extern "C" for use in C++ apps. Radar bug
2359 #4814441.</LI>
2360 </UL>
2362 <H5><FONT SIZE="+1">Changes since the last release (cctools-643 for
2363 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2365 <UL>
2366 <LI>Fixed otool(1) -c work with 64-bit Mach-O files. &nbsp;Radar
2367 bug #4458775</LI>
2369 <LI>Added support for the CPU_SUBTYPE_VEO_3 and CPU_SUBTYPE_VEO_4
2370 cpusubtypes. Radar bug #4799550.</LI>
2372 <LI>Fixed a problem with the libredo_prebinding API's leaking file
2373 descriptors and mmap(2) mappings. Radar bug #4800981.</LI>
2375 <LI>Fixed a problem with checksyms(l) failing to work with empty
2376 files. Radar bug #4795458.</LI>
2377 </UL>
2379 <H5><FONT SIZE="+1">Changes since the last release (cctools-642 for
2380 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2382 <UL>
2383 <LI>Changed strip(1) -X on x86_64 objects to silently do nothing.
2384 Radar bug #4800628.</LI>
2386 <LI>Ported cmpdylib(1) to work with 64-bit Mach-O files. Radar bug
2387 #4040804.</LI>
2388 </UL>
2390 <H5><FONT SIZE="+1">Changes since the last release (cctools-641 for
2391 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2393 <UL>
2394 <LI>Changed needs_redo_prebinding(3) when passed a Mach-O file
2395 that only has 64-bit architectures to return NOT_PREBOUND. Radar
2396 bug #4788385.</LI>
2398 <LI>Fixed otool(1) so it understands the x86 branch
2399 prediction.&nbsp;Radar bug #4474395</LI>
2401 <LI>Fixed the 64-bit assemblers not allowing a value larger
2402 than&nbsp;2GB with a .lcomm directive.&nbsp; Radar bug
2403 #4098028.</LI>
2404 </UL>
2406 <H5><FONT SIZE="+1">Changes since the last release (cctools-640.1 for
2407 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2409 <UL>
2410 <LI>Changed the x86_64 assembler to always save assembler
2411 temporary symbols in cstring literal sections and use external
2412 relocation entries when they are referenced. Radar bug
2413 #4765733.</LI>
2414 </UL>
2416 <H5><FONT SIZE="+1">Changes since the last release (cctools-640 for
2417 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2419 <UL>
2420 <LI>Fixed a problem with NXGetArchInfoFromCpuType(3) and using
2421 CPU_SUBTYPE_MULTIPLE. Radar bug #4787007.</LI>
2422 </UL>
2424 <H5><FONT SIZE="+1">Changes since the last release (cctools-639 for
2425 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2427 <UL>
2428 <LI>Updated the tools to deal with cpusubtypes that have the new
2429 capability bits set. Radar bug #4754462.</LI>
2430 </UL>
2432 <H5><FONT SIZE="+1">Changes since the last release (cctools-638 for
2433 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2435 <UL>
2436 <LI>Fixed problems with the updated strip(1) and nmedit(1) with
2437 trying to correctly handle 64-bit Mach-O files with an odd number
2438 of indirect table entires (with or without padding). Radar bug
2439 #4762627.</LI>
2440 </UL>
2442 <H5><FONT SIZE="+1">Changes since the last release (cctools-637 for
2443 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2445 <UL>
2446 <LI>Updated strip(1) and codesign_allocate(1) to correctly handle
2447 64-bit Mach-O files with an odd number of indirect table entires
2448 (with or without padding). Radar bug #4747408.</LI>
2450 <LI>Fixed the i386 assembler to not crash or get internal erors
2451 when .org is used. Radar bug #4750873.</LI>
2453 <LI>Changed the x86_64 assembler to always emit a relocation entry
2454 for @GOTPCREL reference. Radar bug #4742404,</LI>
2455 </UL>
2457 <H5><FONT SIZE="+1">Changes since the last release (cctools-636 for
2458 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2460 <UL>
2461 <LI>Changed strip(1) to correctly handle keeping symbols marked as
2462 weak defintions by default. Radar bug #4732639.</LI>
2464 <LI>Fixed a bug in strip(1) that was incorrectly causing an error
2465 when creating a stub library and not all the global symbols were
2466 kept. Radar bug #4742051.</LI>
2468 <LI>Fixed a bug in libtool(1) that caused it to crash when an
2469 input file had a bad symbol table entry for an N_SECT symbol which
2470 had a bad section number. Radar bug #4739572.</LI>
2472 <LI>Updated strip(1), codesign_allocate(1) and redo_prebinding(3)
2473 to correctly handle 64-bit Mach-O files with an odd number of
2474 indirect table entires. Radar bug #4737991.</LI>
2475 </UL>
2477 <H5><FONT SIZE="+1">Changes since the last release (cctools-635 for
2478 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2480 <UL>
2481 <LI>Fixed a problem with ld_classing iincorrectly generated a
2482 warning, ntroduced with the change to 4695477. Radar bug
2483 #4733384.</LI>
2484 </UL>
2486 <H5><FONT SIZE="+1">Changes since the last release (cctools-634 for
2487 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2489 <UL>
2490 <LI>Fixed a problem introduced with the change to 4141844 with the
2491 Intel assembler not expanding macros correctly. Radar bug
2492 #4729012.</LI>
2494 <LI>Added the -verify_arch flag to lipo(1). Radar bug
2495 #4496521.</LI>
2497 <LI>Changed strings(1) to with files that have parenthesis in
2498 their names. Radar bug #4172811.</LI>
2499 </UL>
2501 <H5><FONT SIZE="+1">Changes since the last release (cctools-633 for
2502 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2504 <UL>
2505 <LI>Updated the tools to handle the LC_SEGMENT_SPLIT_INFO load
2506 command and its data. Radar bug #4695477.</LI>
2507 </UL>
2509 <H5><FONT SIZE="+1">Changes since the last release (cctools-632 for
2510 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2512 <UL>
2513 <LI>Ported the code in libredo_prebinding and libsyminfo to work
2514 for 64-bit hosts and now build them for all architectures. Radar
2515 bug #4407440.</LI>
2516 </UL>
2518 <H5><FONT SIZE="+1">Changes since the last release (cctools-631 for
2519 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2521 <UL>
2522 <LI>Fixed a bug that caused the assembler with -static to produce
2523 incorrectly assembed files introduced with Radar bug #4096964.
2524 Radar bug #4700558.</LI>
2525 </UL>
2527 <H5><FONT SIZE="+1">Changes since the last release (cctools-630 for
2528 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2530 <UL>
2531 <LI>Fixed a bug that caused the assembler to crash introduced with
2532 Radar bug #4096964. Radar bug #4685058.</LI>
2534 <LI>Fixed a bug that casued libkld to have undefined symbols
2535 introduced with Radar bug #4599790. Radar bug #4685060.</LI>
2537 <LI>Changed libtool(1) to not invoke ld64(1). Radar bug
2538 #4682470.</LI>
2539 </UL>
2541 <H5><FONT SIZE="+1">Changes since the last release (cctools-629 for
2542 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2544 <UL>
2545 <LI>Fixed a bug that caused the assembler to crash introduced with
2546 Radar bug #4096964. Radar bug #4666308.</LI>
2548 <LI>Picked up the changes from cctools-625.1 in Radar bug #4664658
2549 that were missed. Radar bug #4678307.</LI>
2551 <LI>Fixed a problem with the assembler not returning a failure
2552 status for bogus arguments introduced with changes in
2553 cctools-590.31.1 . Radar bug #4674902.</LI>
2554 </UL>
2556 <H5><FONT SIZE="+1">Changes since the last release (cctools-628 for
2557 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2559 <UL>
2560 <LI>Fixed a bug in the codesign_allocate(1) tool that caused it to
2561 build programs that would not execute. Radar bug #4666308.</LI>
2563 <LI>Changed the x86 assemblers to use optimal NOP's for alignment
2564 padding in sections containing instructions. Radar bug
2565 #4096964.</LI>
2567 <LI>Fixed a bug in ld_classic(1) that was misaligning coalesced
2568 section contents. Radar bug #4599790.</LI>
2570 <LI>Updated the ld_classic(1) man page with the description that
2571 CPU subtypes get combined. Radar bug #3820769.</LI>
2573 <LI>Added an example to the strip(1) man page on how to create a
2574 stub library. Radar bug #4399175.</LI>
2576 <LI>Fixed a typo on the ld_classic(1) man page. Radar bug
2577 #4099445.</LI>
2579 <LI>Added the description of the -arch option to the strip(1) man
2580 page. Radar bug #4470756.</LI>
2582 <LI>Added the description of the -arch option to the strings(1)
2583 man page. Radar bug #4416906.</LI>
2585 <LI>Fixed a warning when building the x86_64 assembler. Radar bug
2586 #4504314.</LI>
2588 <LI>Clarified the error message for unknown architecture in the
2589 assembler driver. Radar bug #4666302.</LI>
2591 <LI>Updated otool(1) to print MH_DSYM symbolically. Radar bug
2592 #4511760.</LI>
2594 <LI>Changed strip(1) -R on x86_64 objects to silently do nothing.
2595 Radar bug #4568747.</LI>
2596 </UL>
2598 <H5><FONT SIZE="+1">Changes since the last release (cctools-627 for
2599 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2601 <UL>
2602 <LI>Changed the i386 assembler to allow a prefix with a space
2603 before the instruction. Radar bug #4141844.</LI>
2605 <LI>Changed the strip(1) tool to support blank stubs. Radar bug
2606 #4511628.</LI>
2607 </UL>
2609 <H5><FONT SIZE="+1">Changes since the last release (cctools-626 for
2610 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2612 <UL>
2613 <LI>Ported otool(1) to work with 64-bit Mach-O files and removed
2614 otool64(1). Radar bug #3903136 and Radar bug #4593267.</LI>
2615 </UL>
2617 <H5><FONT SIZE="+1">Changes since the last release (cctools-625 for
2618 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2620 <UL>
2621 <LI>Added the codesign_allocate(1) tool that allocates space in a
2622 Mach-O file for code signing data. Updated the other tools to
2623 allow them to work on Mach-O files with code signing data. Radar
2624 bug #4588023.</LI>
2626 <LI>Changed the command otool(1) to be build dynamically. Radar
2627 bug #4624240 and Radar bug #4633942.</LI>
2628 </UL>
2630 <H5><FONT SIZE="+1">Changes since the last release (cctools-624 for
2631 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2633 <UL>
2634 <LI>Track symbols by definition order, not value. Radar bug
2635 #4619741.</LI>
2636 </UL>
2638 <H5><FONT SIZE="+1">Changes since the last release (cctools-623 for
2639 the 5.24 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2641 <UL>
2642 <LI>Added new constants and strcutures to &lt;mach-o/loader.h&gt;
2643 to support Mac OS X 10.5 features. Radar bug #4614861.</LI>
2644 </UL>
2646 <H5><FONT SIZE="+1">Changes since the last release (cctools-622.1 for
2647 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2649 <UL>
2650 <LI>Changed the cctools project to install the static link editor
2651 as /usr/bin/ld_classic and changed the man page to ld_classic(1).
2652 Radar bug #4606627.</LI>
2653 </UL>
2655 <H2>Notes Specific to Release 5.23 (Mac OS X Xcode 2.4 Developer
2656 Release)</H2>
2658 <H5><FONT SIZE="+1">Changes since the last release (cctools-622 for
2659 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2661 <UL>
2662 <LI>Add S_16BYTE_LITERALS as a fixed-size data section. Radar bug
2663 #4610297.</LI>
2664 </UL>
2666 <H5><FONT SIZE="+1">Changes since the last release (cctools-621 for
2667 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2669 <UL>
2670 <LI>In x86-64 code, synthesize a symbol for each fixup, which
2671 allows the assembler to determine later whether to require a
2672 relocation entry for that fixup. Radar bug #4577120.</LI>
2673 </UL>
2675 <H5><FONT SIZE="+1">Changes since the last release (cctools-620 for
2676 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2678 <UL>
2679 <LI>Changed symbol_list_sort_by_value to perform a stable sort.
2680 Radar bug #4598955.</LI>
2681 </UL>
2683 <H5><FONT SIZE="+1">Changes since the last release (cctools-619 for
2684 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2686 <UL>
2687 <LI>Added the routines to byteswap the other x86-64 thread states.
2688 Radar bug #4491230.</LI>
2690 <LI>Fixed a bug in otool64(1) that truncates high address. Radar
2691 bug #4591066.</LI>
2693 <LI>Fixed a bug in the x86_64 assembler which would cause it to
2694 generate invalid relocation entries when there were forward
2695 references to local symbols. Radar bug #4501115.</LI>
2696 </UL>
2698 <H5><FONT SIZE="+1">Changes since the last release (cctools-618 for
2699 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2701 <UL>
2702 <LI>Fixed otool64(1) correctly disassemble call instructions for
2703 the x86_64 architecture so the symbols has the correct (or no
2704 offset). Radar bug #4483416.</LI>
2706 <LI>Fixed a bug in the x86_64 assembler that would cause it to
2707 crash when assembling a call instruction to an absolute address
2708 (with no symbolic symbol name). Radar bug #4523898.</LI>
2710 <LI>Fixed a bug in ld(1) that incorrectly ignored the argument
2711 after the -allow_stack_execute option. Radar bug #4571206.</LI>
2713 <LI>Fixed a problem with ld(1) getting an internal error when
2714 linking objects with DWARF information for weak symbols and
2715 linking those to shared libraries with non-weak symbols. Radar bug
2716 #4570143.</LI>
2718 <LI>Fixed a bug in the x86_64 assembler when making a call to an
2719 assembler tempoary label that generated an incorrect relocation
2720 entry. Radar bug #4581768.</LI>
2721 </UL>
2723 <H5><FONT SIZE="+1">Changes since the last release (cctools-617 for
2724 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2726 <UL>
2727 <LI>Changed checksyms(1) to not report unprebound executables when
2728 MACOSX_DEPLOYMENT_TARGET &gt;= 10.4. Radar bug #4110782.</LI>
2730 <LI>Added support for 16 byte literal constant sections. Radar bug
2731 #4555162.</LI>
2733 <LI>Changed the x86 assembler to not create a spurious undefined
2734 symbol _GLOBAL_OFFSET_TABLE_ when the source makes no reference to
2735 the symbol. Radar bug #4534951.</LI>
2736 </UL>
2738 <H5><FONT SIZE="+1">Changes since the last release (cctools-616 for
2739 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2741 <UL>
2742 <LI>Fixed the disassembly of i386 instructions in otool(1) like
2743 sete so they don't get dissassembled with a suffix. Radar bug
2744 #3873844.</LI>
2746 <LI>Fixed the disassembly of x86_64 move instructions in
2747 otool64(1) that did not used numbered registers. Radar bug
2748 #4555277.</LI>
2750 <LI>Fixed the disassembly of i386 instructions in otool(1) like
2751 pushq which was disassembled as pushl. Radar bug #4563547.</LI>
2753 <LI>Changed ld(1) to ignore ranlib "out of date" errors. Radar bug
2754 #4462449.</LI>
2756 <LI>Changed lipo(1) to not set the the timestamp of universal file
2757 containing static libraries o the earliest of the timestamps of
2758 the thin libraries. Radar bug #4492604.</LI>
2759 </UL>
2761 <H5><FONT SIZE="+1">Changes since the last release (cctools-615 for
2762 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2764 <UL>
2765 <LI>The x86-64 assembler was fixed so it does not corrupt line
2766 information for x86_64. Radar bug #4498034.</LI>
2768 <LI>The tool pagestuff(1) has now been ported to work on 64-bit
2769 binaries. Radar bug #4375624.</LI>
2771 <LI>The tool nmedit(1) has been updated to work with 64-bit
2772 binaries that have refereces to global coalesced symbols that are
2773 to be maded private symbols. Radar bug #4414533.</LI>
2775 <LI>The missing 64-bit swap routines have been added to libmacho
2776 which is part of libSystem. Radar bug #4358209.</LI>
2778 <LI>The tool lipo(1) was changed to hard code the segment
2779 alignment for ppc, ppc64, i386 and x86_64 architecutes to 4096 so
2780 that when creating universal files it always uses that segment
2781 alignment. Radar bug #4178258.</LI>
2782 </UL>
2784 <H5><FONT SIZE="+1">Changes since the last release (cctools-614 for
2785 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2787 <UL>
2788 <LI>Fixed the assembler's .comm directive so it would correctly
2789 take values greater than 32-bits.&nbsp; Radar bug #4177397.</LI>
2791 <LI>The x86-64 assembler now implements the GOT_LOAD relocation
2792 entry type. Radar bug #4486815.</LI>
2793 </UL>
2795 <H5><FONT SIZE="+1">Changes since the last release (cctools-613 for
2796 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2798 <UL>
2799 <LI>Made the needed changes to the source code and project to
2800 build with UNIX conformance header.&nbsp; Radar bug #4508798.</LI>
2801 </UL>
2803 <H5><FONT SIZE="+1">Changes since the last release (cctools-612 for
2804 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2806 <UL>
2807 <LI>Fixed a bug in the x86_64 assembler in that was not generating
2808 a relocation entries to non-local symbols that were PC-relative
2809 when it should.&nbsp; Radar bug #4545597.</LI>
2810 </UL>
2812 <H5><FONT SIZE="+1">Changes since the last release (cctools-611 for
2813 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2815 <UL>
2816 <LI>Changed strip(1) so that using the -x option on an x86_64
2817 object file does nothing.&nbsp; Radar bug #4541291.</LI>
2818 </UL>
2820 <H5><FONT SIZE="+1">Changes since the last release (cctools-610 for
2821 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2823 <UL>
2824 <LI>Fixed a bug in the x86_64 assembler in the way it generates
2825 relocation entries to "fixed-size-data" sections.&nbsp; Radar bug
2826 #4536738.</LI>
2827 </UL>
2829 <H5><FONT SIZE="+1">Changes since the last release (cctools-609 for
2830 the 5.23 Mac OS X Xcode 2.4 Developer release)</FONT></H5>
2832 <UL>
2833 <LI>Changed the sources so they can build on Tiger. Radar bug
2834 #4535019.</LI>
2836 <LI>Added support for the Intel Vanderpool instructions. Picked up
2837 from cctools-590.43. Radar bug #4534436.</LI>
2839 <LI>Fixed a bug in ld(1) that caused it to crash when using the -Y
2840 flag to trace undefined symbols. Picked up from cctools-590.42.
2841 Radar bug #4521358.</LI>
2843 <LI>Fixed a bug in the redo_prebinding code that was causing a
2844 memory leak.. Picked up from cctools-590.23.6. Radar bug
2845 #4503576.</LI>
2847 <LI>Fixed a bug in the redo_prebinding code that unnecessarily
2848 calling chmod(2) and chown(2) when no output_file is specified.
2849 Picked up from cctools-590.23.6. Radar bug #4503724.</LI>
2850 </UL>
2852 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.4
2853 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2855 <UL>
2856 <LI>The sources for cctools-590.41.4 were moved from the
2857 Mustard_bringup_branch to the trunk's top of tree. It is the same
2858 except for the version number changing to cctools-609.</LI>
2859 </UL>
2861 <H2>Notes Specific to Release 5.22 (Mac OS X Xcode 2.3.1 Developer
2862 Release)</H2>
2864 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.3
2865 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2867 <UL>
2868 <LI>Change the previous fix to not reference the reserved1 field
2869 when fixing up indirect symbols in the non-lazy symbol pointer
2870 section. Radar bug #4522347.</LI>
2871 </UL>
2873 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.2
2874 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2876 <UL>
2877 <LI>Fixed nmedit(1) so that it sets the value of symbol pointers
2878 when it changes the indirect symbol table entries for them into
2879 INDIRECT_SYMBOL_LOCAL. The change was in check_indirect_symtab()
2880 in symbols.c and a bit of code was added to take the n_value from
2881 the symbol table entry swap it if needed and write into the
2882 section contents for that symbol pointer. The additional
2883 parameters contents and host_byte_sex were added to the routine
2884 and pass from the two places it was called. Radar bug
2885 #4514531.</LI>
2886 </UL>
2888 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.41.1
2889 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2891 <UL>
2892 <LI>When stripping coalesced symbols from 64-bit files, only save
2893 symbols which are used as weak definitions. Radar bug
2894 #4487972.</LI>
2895 </UL>
2897 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.38.3
2898 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2900 <UL>
2901 <LI>Ignore multiple -syslibroot flags if they specify the same
2902 argument. Radar bug #4354876.</LI>
2903 </UL>
2905 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.38.2
2906 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2908 <UL>
2909 <LI>Force GOT and GOT_LOAD relocations to be PC-relative, as they
2910 always should be, so we don't eliminate them later in the
2911 assembler. Radar bug #4500790.</LI>
2913 <LI>Don't consider X86_64_RELOC_SUBTRACTOR relocations to be
2914 paired. Radar bug #4504190.</LI>
2916 <LI>Fix a typo for 64-bit code in an error case in strip(1) which
2917 would cause it to crash. Radar bug #4502835.</LI>
2919 <LI>Add a new -arch_blank option to lipo(1). Radar bug
2920 #4473483.</LI>
2922 <LI>Support 64-bit constants in .code64 blocks in x86-64 assembly.
2923 Radar bug #4439905.</LI>
2925 <LI>Ignore stabs when fixing up x86-64 symbols in the assembler.
2926 Radar bug #4502759.</LI>
2928 <LI>Accept 'LL' and 'ULL' as suffixes for constants in assembly
2929 code. Radar bug #4496022.</LI>
2931 <LI>Get RIP-relative relocations correct for local symbols in
2932 non-fixed-size-data sections. Radar bug #4497536.</LI>
2933 </UL>
2935 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.38.1
2936 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2938 <UL>
2939 <LI>Don't convert external relocation entries to internal ones
2940 when looking at x86-64 relocation entries in nmedit(1). Radar bug
2941 #4497429.</LI>
2942 </UL>
2944 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.37.3
2945 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2947 <UL>
2948 <LI>Merged in cctools-590.38.</LI>
2949 </UL>
2951 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.37.2
2952 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2954 <UL>
2955 <LI>Add back support for the E9 form of the jmp instruction for
2956 x86-64 disassembly. Radar bug #4489937.</LI>
2958 <LI>Use a 'q' suffix rather than an 'l' suffix when disassembling
2959 call and jmp instructions for x86-64. Radar bug #4483621.</LI>
2961 <LI>Get offsets right for RIP-relative non-external relocations in
2962 x86-64 code. Radar bug #4486817.</LI>
2964 <LI>When swap_object_headers sees a thread state flavor that it
2965 doesn't know about, print the flavor number itself in the error
2966 message in addition to the other information that was already
2967 being printed. Radar bug #4491140.</LI>
2969 <LI>Correctly swap x86_THREAD_STATE64 states when running on
2970 PowerPC. Also, update to the current definition of the x86-64
2971 thread state. Radar bug #4491228.</LI>
2973 <LI>Handle symbols with NULL names when fixing up x86-64 symbols.
2974 Radar bug #4475602.</LI>
2976 <LI>Fix a regression in the assembler which prevented it from
2977 reading 8-bit characters. Radar bug #4488556.</LI>
2979 <LI>Improve the comments in the x86-64 reloc.h. Radar bug
2980 #4488180.</LI>
2981 </UL>
2983 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.37.1
2984 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
2986 <UL>
2987 <LI>Don't go down the scattered relocation code path in the
2988 assembler for x86-64 relocation entries. Radar bug #4486807.</LI>
2990 <LI>Don't allow illegal section types for x86-64 assembly. Radar
2991 bug #4475470.</LI>
2993 <LI>Support 32-bit difference GOTPCREL syntax in x86-64 assembly.
2994 Radar bug #4485082.</LI>
2996 <LI>Generate the right relocation entry type for .long GOTPCREL
2997 expressions. Radar bug #4486764.</LI>
2999 <LI>Fix two typos in the ld(1) man page. Radar bug #4099445.</LI>
3001 <LI>Add an extern "C" block to redo_prebinding.h. Radar bug
3002 #4319807.</LI>
3004 <LI>Cleaned up some binutils merge issues in as/i386.c. Radar bug
3005 #4422698.</LI>
3006 </UL>
3008 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.36.3
3009 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3011 <UL>
3012 <LI>Don't allow illegal section types in x86-64 assembly. Radar
3013 bug #4475470.</LI>
3014 </UL>
3016 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.36.2
3017 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3019 <UL>
3020 <LI>Add support for the new relocation entry types for x86-64.
3021 Radar bug #4475165.</LI>
3023 <LI>Don't include symbol offsets in fixups for external symbols
3024 for x86-64 and don't fix up x86_64 symbols in sections that always
3025 contain fixed-size data. Also, rename i386_fixup_symbol to
3026 x86_64_fixup_symbol because it's only used for x86_64 code. Radar
3027 bug #4475152.</LI>
3029 <LI>Print %cs, %fs, and %gs as 64-bit values in x86_64 thread
3030 states in otool. Radar bug #4468148.</LI>
3032 <LI>Disassemble pushq instructions with extended x86_64 registers
3033 correctly. Radar bug #4476218.</LI>
3035 <LI>Swap the LC_ROUTINES_64 load command correctly. Radar bug
3036 #4451600.</LI>
3037 </UL>
3039 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.36.1
3040 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3042 <UL>
3043 <LI>Add #defines to ensure that libmacho builds on systems with
3044 POSIX conformant headers. Radar bug #4471574.</LI>
3045 </UL>
3047 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.34.1
3048 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3050 <UL>
3051 <LI>Fix suffixes in x86-64 disassembly for push, pop, and moves to
3052 and from control and debug registers, as well as disassembly of
3053 short jumps. Radar bug #4467441.</LI>
3054 </UL>
3056 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.31.4
3057 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3059 <UL>
3060 <LI>Improve the message that appears when we try to assemble
3061 32-bit signed static relocations in x86-64 code. Radar bug
3062 #4434039.</LI>
3064 <LI>Revert the 4-byte alignment change in lipo from the previous
3065 release. Radar bug #4428605.</LI>
3067 <LI>Disassemble x86-64 instructions with SIB bytes correctly.
3068 Radar bug #4436608.</LI>
3070 <LI>Disassemble x86-64-specific instructions properly and don't
3071 recognize i386-specific instructions when disassembling x86-64
3072 code. Radar bug #4437391.</LI>
3074 <LI>Disassemble the movslq instruction correctly for x86-64. Radar
3075 bug #4437197.</LI>
3077 <LI>Fixed addends for relocation entries for RIP-relative x86-64
3078 instructions. Radar bug #4440315.</LI>
3080 <LI>Eliminated extraneous suffixes from disassembly of some i386
3081 and x86-64 instructions. Radar bug #4441526.</LI>
3083 <LI>Fixed x86-64 disassembly for moves to and from control and
3084 debug registers. Radar bug #4439907.</LI>
3085 </UL>
3087 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.31.2
3088 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3090 <UL>
3091 <LI>Modified lipo to only require 4-byte alignment for load
3092 commands. Radar bug #4428605.</LI>
3094 <LI>Added x86_64 support to the relocation entry functions in
3095 misc/reloc.c, used by strip and other tools. Radar bug
3096 #4430570.</LI>
3098 <LI>Converted more warnings to errors in the assembler, as
3099 required by the as_warn changes in cctools-590.31.1. Radar bug
3100 #4429135.</LI>
3102 <LI>Correctly generate x86_64 relocation entries for files
3103 containing common symbols and for local symbols that resolve to
3104 the same non-local symbol. Radar bug #4427629.</LI>
3106 <LI>Fix a typo in mach-o/reloc.h. Radar bug #3754196.</LI>
3107 </UL>
3109 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.31.1
3110 for the 5.22 Mac OS X Xcode 2.3.1 Developer release)</FONT></H5>
3112 <UL>
3113 <LI>Fixed an incorrect merge of i386 relocation entry generation
3114 for intersegment jumps. Radar bug #4421123.</LI>
3116 <LI>Added support for printing x86_64 thread states to otool64.
3117 Radar bug #4424303.</LI>
3118 </UL>
3120 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.31
3121 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3123 <UL>
3124 <LI>Added support for the x86_64 architecture to all of the tools.
3125 Radar bug #4345090.</LI>
3127 <LI>Merged the i386 assembler from GNU binutils 2.16.1 into the
3128 i386 Mach-O assembler sources. Radar bugs #4178064, #4215749,
3129 #4299651, #4299664, #4359724.</LI>
3131 <LI>Added support for the Merom New Instructions to the i386
3132 assembler and disassembler. Radar bug #4407298.</LI>
3134 <LI>Improved otool's output for a number of i386
3135 instructions.</LI>
3137 <LI>Changed as_warn to be a warning rather than an error, removed
3138 as_warning, changed as_warning calls to as_warn, and changed
3139 as_warn calls which expected to be errors to as_bad or as_fatal as
3140 appropriate. This matches GNU binutils.</LI>
3142 <LI>Changed ld to invoke ld64 without any extra arguments when
3143 invoked for a 64-bit architecture.</LI>
3144 </UL>
3146 <H2>Notes Specific to Release 5.21 (Mac OS X Xcode 2.3 Developer
3147 Release)</H2>
3149 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.40
3150 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3152 <UL>
3153 <LI>Fixed a bug in ld(1) that caused it to generate an incorrect
3154 error about an attempt to redefine ___dso_handle when
3155 -bundle_loader was used. Radar bug #4482300.</LI>
3156 </UL>
3158 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.39
3159 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3161 <UL>
3162 <LI>Fixed a bug in pagestuff(1) that caused it to crash with a
3163 dSYM file. Radar bug #4495141.</LI>
3164 </UL>
3166 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.38
3167 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3169 <UL>
3170 <LI>Fixed a bug in ld(1) that caused it to generate spurious
3171 tracing of indirect undefined symbols. Radar bug #4495010.</LI>
3172 </UL>
3174 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.37
3175 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3177 <UL>
3178 <LI>Fixed a bug in ld(1) that caused a warning message that it
3179 could not understand DWARF debug information from empty files.
3180 Radar bug #4492686.</LI>
3182 <LI>Fixed a bug in ld(1) that produce the error message "internal
3183 error: output_local_symbols() inconsistent local symbol count"
3184 when there were multiple defined symbols from .o files with DWARF
3185 debugging information and the -m option was used. Radar bug
3186 #4487503.</LI>
3188 <LI>Fixed a bug in ld(1) that produce the error message "internal
3189 error: output_local_symbols() inconsistent local symbol count"
3190 when there were common symbols from .o files with DWARF debugging
3191 information and the common symbols got discarded for a true
3192 definition in a shared library. Radar bug #4446605.</LI>
3194 <LI>Changed ld(1) to allow the -Y flag to appear multiple times.
3195 Radar bug #4461031.</LI>
3197 <LI>Changed ld(1) to not cause an error if symbols listed in the
3198 file for the -unexported_symbols_list option are not found in the
3199 linked objects. Radar bug #4465511.</LI>
3201 <LI>Changed the compiler tools source to compile with the lastest
3202 conformance headers. Radar bug #4438650.</LI>
3203 </UL>
3205 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.36
3206 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3208 <UL>
3209 <LI>Fixed a problem using a relocatable expression with an
3210 absolute symbol who's value came from a .set directive and an
3211 expression of the form "symbol1 + constant - symbol2" where the
3212 constant was non-zero. Radar bug #4473241.</LI>
3214 <LI>Changed the static linker to not remove the contents of a
3215 section created from a file with -sectcreate when -dead_strip is
3216 specified. Radar bug #4439885.</LI>
3218 <LI>Fixed a bug in the static linker when the ___dso_handle linker
3219 defined symbol in an executable is not exported using
3220 -exported_symbol_list which resulted in an internal error. Radar
3221 bug #4461173.</LI>
3223 <LI>Fixed a bug in the 32-bit assemblers when a symbol's value was
3224 used in an expression it was not being signed extended correctly.
3225 This caused problems because expressions are internally
3226 represented as 64-bit values so if the expression's sign was
3227 tested it would not correctly be negitive in those cases. Radar
3228 bug #4461836.</LI>
3230 <LI>Added a synonym for the i386 assembler for the "fisttp"
3231 instruction without a suffix that is the same as "fisttps". Radar
3232 bug #4462289.</LI>
3234 <LI>Changed libtool to pass the -t flag on to ld(1). Radar bug
3235 #4213190.</LI>
3237 <LI>Changed the assembler to allow a string that has a single
3238 quote escaped with a backslash. Radar bug #4391495.</LI>
3239 </UL>
3241 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.35
3242 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3244 <UL>
3245 <LI>Changed the linker defined symbol __dso_handle to
3246 ___dso_handle.(three leading underbars). Radar bug #3992244.</LI>
3247 </UL>
3249 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.34
3250 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3252 <UL>
3253 <LI>Added the linker defined symbol __dso_handle for all linked
3254 images types that can be used with the dynamic liker. Radar bug
3255 #3992244.</LI>
3257 <LI>Added the MH_DSYM filetype constant to
3258 &lt;mach-o/loader.h&gt;. Radar bug #4443871.</LI>
3260 <LI>Added a warning to nmedit(1) when a global coalesced symbol is
3261 seen in a final linked image that it can't be turned into a staitc
3262 symbol and suggest the use of ld(1)'s -exported_symbols_list
3263 option. Radar bug #4269492.</LI>
3265 <LI>Changed seg_hack(1) to not affect debug sections. Radar bug
3266 #4421656.</LI>
3267 </UL>
3269 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.33
3270 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3272 <UL>
3273 <LI>Changed nm(1) to not exit with a non-zero status when run on a
3274 file with no symbols. Radar bug #4421611.</LI>
3276 <LI>Fixed a bug in the assembler that was not correctly handling
3277 constants as 64-bit values. Radar bug #4434572.</LI>
3278 </UL>
3280 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.32
3281 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3283 <UL>
3284 <LI>Suppress compilation directory SO stab when none is
3285 provided/necessary and append '/' to it otherwise. Radar bug
3286 #4426731.</LI>
3288 <LI>Fix another bug in the DWARF debug map code that could produce
3289 'inconsistent local symbol count'. Radar bug #4428677.</LI>
3290 </UL>
3292 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.31
3293 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3295 <UL>
3296 <LI>Fixed two bugs in the DWARF debug map code that could produce
3297 the message 'inconsistent local symbol count'. Radar bug #441933
3298 and bug #4421606.</LI>
3300 <LI>Don't produce debug map symbols for sections with
3301 S_ATTR_STRIP_STATIC_SYMS set.</LI>
3303 <LI>Added support for the debug map to nmedit. Radar bug
3304 #4421583.</LI>
3306 <LI>cctools will now build without using buildit again! Radar bug
3307 #4402489.</LI>
3309 <LI>Added support for logging of command-line options to stderr
3310 with LD_PRINT_OPTIONS.</LI>
3312 <LI>Changed XBS environment variables to begin with LD instead of
3313 RC. Radar bug #4420393.</LI>
3315 <LI>Updated XBS logging output to use string XBS instead of Build
3316 &amp; Integration. Radar Bug #4214105.</LI>
3318 <LI>Added support for XBS logging output directly to a file. Radar
3319 bug #4214101.</LI>
3321 <LI>Added the environment variable LD_LIBRARY_PATH as a colon
3322 separated set of paths to be searched just before the default list
3323 of paths. Radar bug #4314159.</LI>
3325 <LI>Changed the assemblers to allow the .quad directive with the
3326 32-bit assemblers. Radar bug #4227961.</LI>
3328 <LI>Picked up the changed in the source code of cctools-590.23.4
3329 to add macros that rename structure members of the
3330 ppc_thread_state_t for building with Unix conformance headers.
3331 Radar bug #4340681.</LI>
3332 </UL>
3334 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.30
3335 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3337 <UL>
3338 <LI>Fixed a bug in ld(1) that caused it to crash when the argument
3339 to -init or -e was an undefined symbol. Radar bug #4401068.</LI>
3341 <LI>Changed ld(1) to not create an LC_UUID load command unless an
3342 input file contains a debug section or an LC_UUID load command.
3343 Also added the -no_uuid option to ld(1) to always suppress the
3344 creation of the LC_UUID load command. Radar bug #4415529.</LI>
3346 <LI>Added the -no_uuid option to strip(1) to remove any LC_UUID
3347 load commands. Radar bug #4415536.</LI>
3348 </UL>
3350 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.29
3351 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3353 <UL>
3354 <LI>Change output_local_symbols in symbols.c to give the N_OSO
3355 stab in the DWARF map a n_desc of 1. Radar bug #4414139.</LI>
3357 <LI>Add support for generating the DWARF debug map. Radar bugs
3358 #4370126 and #4409967.</LI>
3359 </UL>
3361 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.28
3362 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3364 <UL>
3365 <LI>Removed the check in the static linker to produce an error if
3366 there is a relocation entry for a global coalesced symbol and
3367 non-zero offset. Radar bug #4405403.</LI>
3368 </UL>
3370 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.27
3371 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3373 <UL>
3374 <LI>Fixed a bug in ld(1) that caused it to crash when linking for
3375 the non-host bytesex and an input file has an LC_UUID load
3376 command. Radar bug #4401375.</LI>
3378 <LI>Added a check to the static linker to produce an error if
3379 there is a relocation entry for a global coalesced symbol and
3380 non-zero offset. Radar bug #4213478.</LI>
3381 </UL>
3383 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.26
3384 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3386 <UL>
3387 <LI>Changed the assembler to allow the .set direcitve to be used
3388 with a subtract expression between two symbols where one of the
3389 symbols is not defined at the point of the .set directive. Radar
3390 bug #4390251.</LI>
3391 </UL>
3393 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.25
3394 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3396 <UL>
3397 <LI>Fixed a bug in ld(1) that did not ignore the uuid load command
3398 in .o files. Radar bug #4388766.</LI>
3399 </UL>
3401 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.24
3402 for the 5.21 Mac OS X Xcode 2.3 Developer release)</FONT></H5>
3404 <UL>
3405 <LI>Added support for the debug attribute and other DWARF support.
3406 Radar bug #3415593.</LI>
3407 </UL>
3409 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.23
3410 for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>
3412 <UL>
3413 <LI>Added support for the debug attribute and .debug_note asembler
3414 directive in the assembler. Radar bug #4367423.</LI>
3415 </UL>
3417 <H2>Notes Specific to Release 5.20 (Mac OS X Xcode 2.2.1 Developer
3418 Release)</H2>
3420 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.22
3421 for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>
3423 <UL>
3424 <LI>Fixed the routines that byteswap the i386 floating point
3425 thread state. Radar bug #4350771.</LI>
3426 </UL>
3428 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.21
3429 for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>
3431 <UL>
3432 <LI>Fixed a bug in ld(1) code that caused it to crash when linking
3433 Objective-C code. Radar bug #4348548.</LI>
3434 </UL>
3436 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.20
3437 for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>
3439 <UL>
3440 <LI>Fixed a bug in the libkld code that caused it to crash using
3441 the kld_forget_symbol() api. Radar bug #4346485.</LI>
3443 <LI>Fixed a bug in strip(1) that caused it to crash when stripping
3444 a dynamic library with multiple cpusubtypes on a host machine with
3445 different byte sex, Radar bug #4265381.</LI>
3447 <LI>Fixed a bug otool(1) when a -arch flag was specified on a thin
3448 binary which caused an incorrect error about the architecture not
3449 being present. Radar bug #4337271.</LI>
3450 </UL>
3452 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.19
3453 for the 5.20 Mac OS X Xcode 2.2.1 Developer release)</FONT></H5>
3455 <UL>
3456 <LI>Fixed a bug in the redo_prebinding code for the new self
3457 (dyld) modifying Intel stubs that was not correctly setting the
3458 jmp instruction target for symbols defined in a shared library.
3459 Radar bug #4335281.</LI>
3461 <LI>Fixed a bug in ld(1) that was causing an internal error if
3462 both -s and -dead_strip were used and there were dead private
3463 extern symbols. Radar bug #4286691.</LI>
3465 <LI>Fixed a bug in ld(1) when -w was used that did not suppress
3466 printing the list of multiply defined symbols from dylibs. Radar
3467 bug #4334705.</LI>
3469 <LI>Cleaned up the cctools source code so it will build cleanly
3470 without warnings. Radar bug #4340147.</LI>
3472 <LI>Fixed a problem in the cctools source that would not allow it
3473 to build on Leopard9A68. Radar bug #4342523.</LI>
3474 </UL>
3476 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.18
3477 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3479 <UL>
3480 <LI>Made changes to improve the performance of the static link
3481 editor. Radar bug 4299546.</LI>
3482 </UL>
3484 <H2>Notes Specific to Release 5.19 (Mac OS X Xcode 2.2 Developer
3485 Release)</H2>
3487 <H3><FONT SIZE="+1">New Features</FONT></H3>
3489 <P>The static link editor now supports the new option -Sp to strip,
3490 edit and add debugging symbols so the debugger can used most of the
3491 debugging symbols from the object files.</P>
3493 <P>The ar(1) tool has the new -S option to suppress building the
3494 table of contents.</P>
3496 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.17
3497 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3499 <UL>
3500 <LI>Fixed a bug in nmedit(1) which caused it to produced a bad
3501 relocation entry when there was one for a global coalesced symbol
3502 defined in the file being changed into a static. Radar bug
3503 4318688.</LI>
3504 </UL>
3506 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.16
3507 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3509 <UL>
3510 <LI>Fixed a bug in strip(1) which caused it to produced a bad
3511 indirect symbol table entry when there was more than one non-lazy
3512 pointer section with the same indirect symbol defined in the file
3513 being stripped. Radar bug 4316021.</LI>
3514 </UL>
3516 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.15
3517 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3519 <UL>
3520 <LI>Changed ld(1) so that the -Sp option discards all type stabs.
3521 Radar bug 4312007.</LI>
3522 </UL>
3524 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.14
3525 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3527 <UL>
3528 <LI>Changed ld(1) so that the -Sp option discards unnamed type
3529 stabs. Radar bug 4305465.</LI>
3531 <LI>Added support for encrypted binaries. Radar bug #4298526.</LI>
3532 </UL>
3534 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.13
3535 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3537 <UL>
3538 <LI>Made changes to the cctools source to allow it to build on the
3539 current Mac OS X version for Intel. Radar bug 4303606.</LI>
3540 </UL>
3542 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.12
3543 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3545 <UL>
3546 <LI>Fixed a bug in ld(1) when using -dead_strip that incorrectly
3547 removed local symbols for coalesced sections. This caused
3548 debugging C++ templements not to work. Radar bug #4293942.</LI>
3549 </UL>
3551 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.11
3552 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3554 <UL>
3555 <LI>Made changes to support non executable stacks. Radar bug
3556 4281171.</LI>
3558 <LI>Added the assembler directives.secure_log_unique and
3559 .secure_log_reset . Radar bug #4255881.</LI>
3560 </UL>
3562 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.10
3563 for the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3565 <UL>
3566 <LI>Made changes to the cctools source to allow it to build on the
3567 what will ship for Mac OS X 10.5. Radar bug 4282026.</LI>
3568 </UL>
3570 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.9 for
3571 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3573 <UL>
3574 <LI>Added support for the new self (dyld) modifying Intel stubs.
3575 Radar bug #4202415.</LI>
3577 <LI>Fixed the PowerPC assembler so it will correctly assembly
3578 conditional branch instructions that use the count register or
3579 link register that have prediction. Radar bug #4274713.</LI>
3581 <LI>Fixed ld(1) so that the -Sp option correctly keeps C++ scoped
3582 type stabs. Radar bug #4233860.</LI>
3584 <LI>Added the i386 pushfd/popfd mnemonics as synonyms for
3585 pushf/popf. Radar bug #4272274.</LI>
3587 <LI>Made changes to the cctools source to allow it to build on the
3588 current Mac OS X 10.5 9A40. Radar bug 4279472.</LI>
3589 </UL>
3591 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.8 for
3592 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3594 <UL>
3595 <LI>Improved ld(1')'s implementaion of -Sp to be faster. Radar bug
3596 #4157062.</LI>
3598 <LI>Changed ld(1) to cause it to not use a weak symbol from a
3599 shared library but rather on in a .o file being linked even if it
3600 is linked in afterwards. Radar bug #4231836.</LI>
3601 </UL>
3603 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.7 for
3604 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3606 <UL>
3607 <LI>Changed the tools to understand the new non-general register
3608 thread states for i386. Radar bug #4200908.</LI>
3610 <LI>Changed the tools to understand both the new and old general
3611 register thread state for i386. Radar bug #4240450 .</LI>
3612 </UL>
3614 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.6 for
3615 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3617 <UL>
3618 <LI>Changed ld(1')'s implementaion of -dead_strip to be faster
3619 especially with large .o file created with ld -r. Radar bug
3620 #4228195.</LI>
3622 <LI>Changed ld(1) so that dead code C++ with exeception
3623 information will be stripped with -dead_strip. Radar bug
3624 #4213358</LI>
3626 <LI>Added the -macosx_version_min command line option to ld(1) to
3627 override the MACOSX_DEPLOYMENT_TARGET environment variable. Radar
3628 bug #4195253.</LI>
3629 </UL>
3631 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.5 for
3632 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3634 <UL>
3635 <LI>Changed ld(1) to not delete type stabs in groups of stabs
3636 paired by N_BNSYM/N_ENSYM stabs that are for deleted coalesced
3637 symbols or dead code stripped symbols. Radar bug #4205997.</LI>
3639 <LI>Fixed a problem when the -Sp below was added that caused
3640 libkld to have incorrect undefined references. Radar bug
3641 #4220100.</LI>
3642 </UL>
3644 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.4 for
3645 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3647 <UL>
3648 <LI>The static link editor now supports the new option -Sp to
3649 strip, edit and add debugging symbols so the debugger can used
3650 most of the debugging symbols from the object files. Radar bug
3651 #4202462.</LI>
3653 <LI>The static link editor now does not cause an error on an empty
3654 archive thinking it is malformed. Radar bug #4201492.</LI>
3655 </UL>
3657 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.3 for
3658 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3660 <UL>
3661 <LI>The static link editor was change to not issue a warning
3662 message about both NEXT_ROOT being set and -syslibroot being
3663 specified unless the two values are different. Radar bug
3664 #3593340.</LI>
3666 <LI>The warning message the static link editor issues about a
3667 missing indirectly referenced dynamic library now includes the
3668 name of the library that made the reference. Radar bug
3669 #4106804.</LI>
3671 <LI>Fixed a bug in the i386 assembler that did not assembler the
3672 outw and inw instructions correctly. Radar bug #4110183.</LI>
3674 <LI>Added the -S option to ar(1) to suppress creating the table of
3675 contents. Radar bug #4130034.</LI>
3677 <LI>The man pages have been updated to not use the term fat files
3678 but changed to use the term universal files. Radar bug
3679 #4171207.</LI>
3681 <LI>Fixed a bug in the static link editor that could incorrectly
3682 issue a mismatching weak reference error message when a
3683 -weak_framework flag was used. Radar bug #4180599.</LI>
3685 <LI>Fixed a bug in the i386 assembler that did not assemble the
3686 "fsubrp %st(i)" instruction correctly. Radar bug #4182849.</LI>
3688 <LI>Fixed the i386 assembler so that the -n option would work and
3689 not cause a crash. Radar bug #4192255.</LI>
3691 <LI>Changed the PowerPC assembler to allow the dcbzl instruction
3692 without the -force_cpusubtype_ALL or -arch ppc64. Radar bug
3693 #4181833.</LI>
3694 </UL>
3696 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.2 for
3697 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3699 <UL>
3700 <LI>Changed as(1) now sets the n_value field of BINCL stabs to be
3701 the BINCL/EINCL checksum. Radar bug #4181871.</LI>
3702 </UL>
3704 <H5><FONT SIZE="+1">Changes since the last release (cctools-590.1 for
3705 the 5.19 Mac OS X Xcode 2.2 Developer release)</FONT></H5>
3707 <UL>
3708 <LI>Changed ld(1) to now unique the BINCL/EXCL strings, which
3709 reduces the size of final linked images built with -gfull. Radar
3710 bug #4151821.</LI>
3711 </UL>
3713 <H5><FONT SIZE="+1">Changes since the last release (cctools-590 for
3714 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3716 <UL>
3717 <LI>Fixed a bug in processing ld(1) symbols lists for flags such
3718 as -unexported_symbols where if more than two duplicates are on
3719 the list only one of the duplicates are removed. Radar bug
3720 #4139106.</LI>
3722 <LI>Fixed the assembler so that when a .private_extern appears
3723 before a .zerofill for a symbol it correctly gets created as a
3724 private extern symbol. Radar bug #4156921.</LI>
3725 </UL>
3727 <H2>Notes Specific to Release 5.18 (Mac OS X Xcode 2.1 Developer
3728 Release)</H2>
3730 <H3><FONT SIZE="+1">New Features</FONT></H3>
3732 <P>The tools now have support for the handful of x86 sse3
3733 instructions.</P>
3735 <H5><FONT SIZE="+1">Changes since the last release (cctools-589 for
3736 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3738 <UL>
3739 <LI>Changed the static linker to prepend the value of -syslibroot
3740 to all absolute search paths of -L and -F if they exist. Radar bug
3741 #4127020.</LI>
3743 <LI>Added code to libredo_prebinding when undoing the prebinding,
3744 to reset the (__DATA,__dyld) section contents to a canonical
3745 value. Radar bug #4126660.</LI>
3747 <LI>Changed the code to libredo_prebinding when undoing the
3748 prebinding,, to reset the values of symbol pointers to symbols
3749 defined in the image depending on if either MH_WEAK_DEFINES or
3750 MH_BINDS_TO_WEAK is set to work with the Tiger dyld. Radar bug
3751 #4126666.</LI>
3752 </UL>
3754 <H5><FONT SIZE="+1">Changes since the last release (cctools-588 for
3755 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3757 <UL>
3758 <LI>Added support for the CPU_SUBTYPE_PENTIUM_4 cpusubtype and the
3759 -arch pentium4 to be used with the tools. Radar bug #4115802.</LI>
3761 <LI>Changed the cctools project to allow it to build with the
3762 changes to the i386 header files with the field names "environ"
3763 changed and also build on releases without that change. Radar bug
3764 #4113580.</LI>
3765 </UL>
3767 <H5><FONT SIZE="+1">Changes since the last release (cctools-587 for
3768 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3770 <UL>
3771 <LI>Added code to libredo_prebinding to provide fix-ups to work
3772 around the problems with the FCS Tiger dyld's prebinding
3773 incorrectly changing some stab's addresses. Radar bug
3774 #4113681.</LI>
3775 </UL>
3777 <H5><FONT SIZE="+1">Changes since the last release (cctools-586 for
3778 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3780 <UL>
3781 <LI>Added code to libredo_prebinding to provide fix-ups to work
3782 around the problems with the FCS Tiger dyld's prebinding
3783 incorrectly changing some absolute symbols addresses and not
3784 updateding the objc_module_info_addr field in the module table.
3785 Radar bug #4108651.</LI>
3787 <LI>Fixed the libredo_prebinding code to not change the time stamp
3788 of 64-bit Mach-O files. Radar bug #4105452.</LI>
3789 </UL>
3791 <H5><FONT SIZE="+1">Changes since the last release (cctools-585 for
3792 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3794 <UL>
3795 <LI>Fixed a problem with the libsyminfo.a build that was
3796 incorrectly built with -static. Radar bug #4105797.</LI>
3797 </UL>
3799 <H5><FONT SIZE="+1">Changes since the last release (cctools-584 for
3800 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3802 <UL>
3803 <LI>Fixed a problem with the libkld.a build that had an undefined
3804 symbol _get_macosx_deployment_target. Radar bug #4100992.</LI>
3805 </UL>
3807 <H5><FONT SIZE="+1">Changes since the last release (cctools-583 for
3808 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3810 <UL>
3811 <LI>Fixed a bug in assembling the i386 movd instructions with MMX
3812 register to memory forms that encoded the operands in the wrong
3813 order. Radar bug #4098884 (aka #4100636)</LI>
3814 </UL>
3816 <H5><FONT SIZE="+1">Changes since the last release (cctools-582 for
3817 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3819 <UL>
3820 <LI>Added the value 10.5 to be one of the known values allowed for
3821 environment variable MACOSX_DEPLOYMENT_TARGET (Radar bug
3822 #4098516).</LI>
3824 <LI>Changed the cctools project so it does not use the -MD
3825 compiler option when RC_XBS is YES so that it will build with
3826 gcc-5000 series compilers and multiple -arch options. Radar bug
3827 #4029936.</LI>
3828 </UL>
3830 <H5><FONT SIZE="+1">Changes since the last release (cctools-581 for
3831 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3833 <UL>
3834 <LI>Fixed a bug in the ppc64 assembler that incorrectly caused an
3835 error for instructions like fsqrt that said the
3836 -force_cpusubtype_ALL option was needed. Radar bug #4092588.</LI>
3837 </UL>
3839 <H5><FONT SIZE="+1">Changes since the last release (cctools-580 for
3840 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3842 <UL>
3843 <LI>Fixed a bug in assembling the i386 movq instructions with
3844 register to register forms that encoded the operands in the wrong
3845 order. Radar bug #4089432.</LI>
3847 <LI>Fixed a bug in ld(1) introduced in cctools-580 in the handling
3848 of MACOSX_DEPLOYMENT_TARGET which would cause errors when options
3849 that required specific values were being checked. Radar bug
3850 #4092246.</LI>
3851 </UL>
3853 <H5><FONT SIZE="+1">Changes since the last release (cctools-579 for
3854 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3856 <UL>
3857 <LI>Fixed a bug in the static linker that would incorrectly
3858 produce a "mismatching weak references" error when a symbol
3859 defined in a dylib is first linked in followed by an undefined
3860 weak reference from a .o file. Radar bug #4016228.</LI>
3862 <LI>Changed the PowerPC assembler to accept "mtocrf" as a synonym
3863 for "mtcrf" and accept "mfocrf" as a synonym for "mfcr". And when
3864 these mnemonic is used the argument must have exactly one bit set.
3865 Also changed otool(1)'s disassembler to use mtocrf/mfocrf when bit
3866 11 is set. Radar bug #4034280.</LI>
3868 <LI>Changed the cctools project to also use gcc-3.5 when
3869 RC_USE_GCC35_FOR_PPC64 is YES. Radar bug #4066237.</LI>
3871 <LI>Changed the i386 disassembler to use 32-bit values for
3872 negitive constants who's width is less than 32-bits. Radar bug
3873 #4079507.</LI>
3875 <LI>Change ld(1) to default MACOSX_DEPLOYMENT_TARGET to 10.4 for
3876 x86 architectures. Radar bug #4081062.</LI>
3878 <LI>Fixed the assembly of the i386 ud2 instruction to use the 0x0f
3879 0x0b opcodes. Radar bug #4085845.</LI>
3881 <LI>Changed the i386 disassembler to use the 0x0f 0x0b opcodes for
3882 the i386 ud2 instruction. Radar bug #4085846.</LI>
3884 <LI>Fixed the as(1) man page path to the assembler manual is
3885 correct. Radar bug #4088403.</LI>
3887 <LI>Fixed a bug in the Panther dynamic linker that would cause
3888 programs to crash that were buildt with -bind_at_load that had
3889 images with weak references to symbols. Radar bug #4062410.</LI>
3890 </UL>
3892 <H5><FONT SIZE="+1">Changes since the last release (cctools-578 for
3893 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3895 <UL>
3896 <LI>Changed the cctools project to build with RC_RELEASE being
3897 Saffron like Tiger so the 3-way fat libmacho objects are compiled
3898 with gcc-3.5.</LI>
3899 </UL>
3901 <H5><FONT SIZE="+1">Changes since the last release (cctools-577 for
3902 the 5.18 Mac OS X Xcode 2.1 Developer release)</FONT></H5>
3904 <UL>
3905 <LI>Added support to the x86 assembler and disassembler for the
3906 sse3 instructions. (Radar bug #4014327).</LI>
3908 <LI>Fixed ld(1) when running on x86 machines to ignore 64-bit
3909 Mach-O files when -no_arch_warnings is specified. (Radar bug
3910 #4014404).</LI>
3911 </UL>
3913 <H5><FONT SIZE="+1">Changes since the last release (cctools-576 for
3914 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
3916 <UL>
3917 <LI>Fixed a bug in the libredo_prebinding(3) code that was casuing
3918 an incorrect error message that file was malformed and an
3919 r_address field was bad. (Radar bug #4054854).</LI>
3920 </UL>
3922 <H2>Notes Specific to Release 5.17 (Mac OS X Xcode 2.0 Developer
3923 Release)</H2>
3925 <H3><FONT SIZE="+1">New Features</FONT></H3>
3927 <H3><FONT SIZE="+1">The support for 64-bit tools for
3928 Tiger.</FONT></H3>
3930 <P>The current version of cctools has tools needed to do the
3931 development of binaries for 64-bit systems. The only tools that are
3932 not seamless and handle both 32-bit and 64-bit objects are otool(1)
3933 and ld(1). The cctools project provides an otool64(1) for 64-bit
3934 objects. More fixes and changes to the tools are expected in releases
3935 to follow.</P>
3937 <H5><FONT SIZE="+1">Changes since the last release (cctools-575 for
3938 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
3940 <UL>
3941 <LI>Changed the ld(1) man page noting 64-bit differences. (Radar
3942 bug #3853561).</LI>
3943 </UL>
3945 <H5><FONT SIZE="+1">Changes since the last release (cctools-574 for
3946 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
3948 <UL>
3949 <LI>Fixed a bug in ld(1) that when building a two-level namespace
3950 image and linking against flat namespace shared libraries it could
3951 result in undefined symbol errors from references from the flat
3952 namespace shared libraries. (Radar bug #4022543).</LI>
3953 </UL>
3955 <H5><FONT SIZE="+1">Changes since the last release (cctools-573 for
3956 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
3958 <UL>
3959 <LI>Changed the x86 assembler to have -force_cpusubtype_ALL as the
3960 default. (Radar bug #4002758).</LI>
3962 <LI>Changed the static linler when linking x86 objects to have
3963 -force_cpusubtype_ALL as the default. (Radar bug #4002756).</LI>
3964 </UL>
3966 <H5><FONT SIZE="+1">Changes since the last release (cctools-572 for
3967 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
3969 <UL>
3970 <LI>No changes, there was a filesystem problem with the submission
3971 to B&amp;I of cctools-572 so a cctools-573 was resubmitted to fix
3972 that.</LI>
3973 </UL>
3975 <H5><FONT SIZE="+1">Changes since the last release (cctools-571 for
3976 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
3978 <UL>
3979 <LI>Fixed a bug that will now allow MallocScribble to be on and
3980 ld(1) not to crash. (Radar bug #3980535).</LI>
3982 <LI>Fixed a bug that caused nm(1) to crash for ppc64 binaries when
3983 run on Darwin Intel. (Radar bug #3987993).</LI>
3985 <LI>Fixed a typo in the lipo(1) man page that incorrectly
3986 referenced VAX and Mips architectures. (Radar bug #4007112).</LI>
3988 <LI>Fixed a bug in the assemblers that incorrectly removed
3989 /dev/null when the it was used as the output file. (Radar bug
3990 #4007180).</LI>
3992 <LI>Fixed a bug that caused libkld.dylib to be built with no
3993 exported symbols when built with gcc-4.0. (Radar bug
3994 #4008570).</LI>
3996 <LI>Fixed a bug that caused strip(1) to crash for ppc64 binaries
3997 when run on Darwin Intel. (Radar bug #4010859).</LI>
3999 <LI>Fixed a bug in the assembler that cause it to crash with 8-bit
4000 characters input that had the high bit set. (Radar bug
4001 #3943609).</LI>
4003 <LI>Changed the output of nm(1) with the -P option to print the
4004 size field as zero. (Radar bug #3652346).</LI>
4005 </UL>
4007 <H5><FONT SIZE="+1">Changes since the last release (cctools-570 for
4008 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4010 <UL>
4011 <LI>Changed the cctools project so it will build in the SUPanWheat
4012 release train. (Radar bug #3979451).</LI>
4013 </UL>
4015 <H5><FONT SIZE="+1">Changes since the last release (cctools-569 for
4016 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4018 <UL>
4019 <LI>Fixed a bug in the assembler that caused it to incorrectly
4020 generate an error for a symbol being already defined if the .desc
4021 directive was used to set the REFERENCED_DYNAMICALLY bit before
4022 the label was seen. (Radar bug #3975121).</LI>
4023 </UL>
4025 <H5><FONT SIZE="+1">Changes since the last release (cctools-568 for
4026 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4028 <UL>
4029 <LI>Fixed a bug in the static linker that caused it to generate an
4030 internal error for the count of relocation entries. (Radar bug
4031 #3934341).</LI>
4032 </UL>
4034 <H5><FONT SIZE="+1">Changes since the last release (cctools-567 for
4035 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4037 <UL>
4038 <LI>The interposing section type was added. (Radar bug
4039 #3965794).</LI>
4041 <LI>A bug in the 32-bit Mach-O static link editor was fixed which
4042 was incorrectly generating a error of the form: "illegal reference
4043 for -dynamic code (reference to a coalesced section ..." when it
4044 should not have been. (Radar bug #3961903).</LI>
4045 </UL>
4047 <H5><FONT SIZE="+1">Changes since the last release (cctools-566 for
4048 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4050 <UL>
4051 <LI>The unneeded 64-bit Mach-O assembler driver, /usr/bin/as64,
4052 has been removed. (Radar bug #3953127).</LI>
4054 <LI>A man page for otool64(1) has been added that simply sources
4055 the otool(1) man page. (Radar bug #3954720).</LI>
4056 </UL>
4058 <H5><FONT SIZE="+1">Changes since the last release (cctools-565 for
4059 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4061 <UL>
4062 <LI>The tool strings(1) has been updated to work with 64-bit
4063 Mach-O files. (Radar bug #3943477).</LI>
4065 <LI>Fixed another bug in nmedit(1) that cause it to make fat
4066 dylibs with 64-bit Mach-O files to render the 64-bit Mach-O dylib
4067 unusable. (Radar bug #3949527).</LI>
4068 </UL>
4070 <H5><FONT SIZE="+1">Changes since the last release (cctools-564 for
4071 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4073 <UL>
4074 <LI>Fixed a bug in nmedit(1) with the -p option that cause it to
4075 crash with 64-bit Mach-O files. (Radar bug #3945219).</LI>
4076 </UL>
4078 <H5><FONT SIZE="+1">Changes since the last release (cctools-563 for
4079 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4081 <UL>
4082 <LI>Changed the cctools project source to no longer install the
4083 header file &lt;mach-o/dyld_debug.h&gt;. (Radar bug
4084 #3937664).</LI>
4086 <LI>Fixed a bug in nmedit(1) that cause it to make fat dylibs with
4087 64-bit Mach-O files to render the 64-bit Mach-O dylib unlinkable.
4088 (Radar bug #3940965).</LI>
4089 </UL>
4091 <H5><FONT SIZE="+1">Changes since the last release (cctools-562 for
4092 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4094 <UL>
4095 <LI>Fixed bugs in the 32-bit static link editor with respect to
4096 private extern common symbols. (Radar bug #3928792),</LI>
4098 <LI>Changed the redo_prebinding(1)(3) code on how it sets the
4099 values of the two pointers in the (__DATA,__dyld) section. (Radar
4100 bug #3828403).</LI>
4102 <LI>Made enhancements to 32-bit static link editor to support dyld
4103 coalescing symbols across dylibs.(Radat bug #3933777).</LI>
4104 </UL>
4106 <H5><FONT SIZE="+1">Changes since the last release (cctools-561 for
4107 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4109 <UL>
4110 <LI>Changed the cctools project source to be compatible with the
4111 upcoming UNIX03-333 branch of xnu. (Radar bug #3930480).</LI>
4113 <LI>Changed install_name_tool (1) to to work with both 64-bit and
4114 32-bit Mach-O files. (Radar bug #3930775).</LI>
4115 </UL>
4117 <H5><FONT SIZE="+1">Changes since the last release (cctools-560 for
4118 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4120 <UL>
4121 <LI>Fixed a bug in nmedit(1) that would produce malformed output
4122 files with bad symbol tables from dynamic shared librarie files
4123 without a module table. (Radar bug #3926028).</LI>
4125 <LI>Changed ld(1) to disable prebinding when the environment
4126 variable MACOSX_DEPLOYMENT_TARGET &gt;= 10.4 for anything that is
4127 not a split shared library. (Radar bug #3924730).</LI>
4128 </UL>
4130 <H5><FONT SIZE="+1">Changes since the last release (cctools-559 for
4131 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4133 <UL>
4134 <LI>Changed the constant FAT_CIGAM in &lt;mach-o/fat.h&gt; to be a
4135 real constant and not use NXSwapInt(). (Radar bug #3914142).</LI>
4137 <LI>Changed strip(1) to follow symlinks and not replace them with
4138 the stripped file they are pointing to. (Radar bug #3889109)</LI>
4139 </UL>
4141 <H5><FONT SIZE="+1">Changes since the last release (cctools-558 for
4142 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4144 <UL>
4145 <LI>Fixed a problem with building libkld that cause the kernel to
4146 fail to link. (Radar bug #3906133).</LI>
4148 <LI>Fixed a problem with a strip(1) fix that caused it to print
4149 extra newlines. (Radar bug #3907726).</LI>
4151 <LI>Fixed a problem with the assembler not allowing altivec
4152 instructions with ppc64 assembly files. (Radar bug #3906004).</LI>
4154 <LI>Fixed a problem with strip(1) and the -c option that did not
4155 correctly set the filetype for stub libraries. (Radar bug
4156 #3909472).</LI>
4158 <LI>Changed nm(1) to deal with dynamic shared libraries without
4159 module tables. (Radar bug #3883039).</LI>
4160 </UL>
4162 <H5><FONT SIZE="+1">Changes since the last release (cctools-557 for
4163 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4165 <UL>
4166 <LI>The tool seg_addr_table(1) has been changed to not emit split
4167 addresses for libraries built nonsplit. (Radar bug #3903547).</LI>
4169 <LI>A fix to otool(1), for the option to print the hints table,
4170 -H, when it was used without the verbose option, -v, was made to
4171 remove an incorrect warning about Inconsistent mh_sizeofcmds".
4172 (Radar bug #3902811).</LI>
4173 </UL>
4175 <H5><FONT SIZE="+1">Changes since the last release (cctools-556 for
4176 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4178 <UL>
4179 <LI>The tool size(1) has been updated to work with 64-bit Mach-O
4180 files. (Radar bug #3900014).</LI>
4182 <LI>The sources of the cctools project have been change to remove
4183 the old support for the WWDC 2004 interim 64-bit format. (Radar
4184 bug #3600419).</LI>
4185 </UL>
4187 <H5><FONT SIZE="+1">Changes since the last release (cctools-555 for
4188 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4190 <UL>
4191 <LI>Added the -syslibroot &lt;argument&gt; option to ld(1) as
4192 another way to specifiy NEXT_ROOT. (Radar bug #3886145).</LI>
4194 <LI>Changed ranlib(1) with the -q option not to print a warning
4195 about empty archives. (Radar bug #3893339).</LI>
4197 <LI>Changed ranlib(1) with the -q option not to add a table of
4198 contents when the archive contains no objects. (Radar bug
4199 #3893392).</LI>
4201 <LI>Change the way ld(1) lays out dyld to make the first address
4202 of the first section remain semi-constant. (Radar bug
4203 #3893651).</LI>
4204 </UL>
4206 <H5><FONT SIZE="+1">Changes since the last release (cctools-554 for
4207 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4209 <UL>
4210 <LI>Fixed a problem with libkld having an undefined symbol
4211 _pass2_nsect_merged_symbol_section_type introduced by the change
4212 in Radar bug #3884596 for ld(1)'s checking of illegal references
4213 to coalesced sections that did not correctly flag an illegal
4214 reference. (Radar bug #3894721).</LI>
4215 </UL>
4217 <H5><FONT SIZE="+1">Changes since the last release (cctools-553 for
4218 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4220 <UL>
4221 <LI>Fixed a bug in strings(1) -a option that was failing to print
4222 the last character of a string a the end of a section. (Radar bug
4223 #3766901).</LI>
4225 <LI>Changed ranlib(1) when used witht the -q option to not print
4226 warnings about empty libraries. (Radar bug #3878332).</LI>
4228 <LI>Changed strip(1) to better handle filenames of PATH_MAX .
4229 (Radar bug #3878381).</LI>
4231 <LI>Changed nm(1) to take the a -- argument that treats all
4232 remaining arguments as file names, make the default format for the
4233 -P option hex, and print the pathname on each line for the -A
4234 option. (Radar bug #3878451).</LI>
4236 <LI>Fixed a bug in ld(1) checking of illegal references to
4237 coalesced sections that did not correctly flag an illegal
4238 reference. (Radar bug #3884596).</LI>
4240 <LI>Fixed a bug in otool(1) that did not print symbol names when
4241 disassembling. (Radar bug #3889188).</LI>
4243 <LI>Fixed a bug in the ppc64 assembler that would produce an
4244 object file with bad fileoff/filesize values in the LC_SEGMENT_64
4245 load command. (Radar bug #3891223).</LI>
4246 </UL>
4248 <H5><FONT SIZE="+1">Changes since the last release (cctools-552 for
4249 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4251 <UL>
4252 <LI>The static linker, ld(1), now support the environment variable
4253 LD_UNPREBOUND_LIBRARIES which is the name of a file containing
4254 dynamic library install names not to prebind. Also supports the
4255 environment variable LD_SPLITSEGS_NEW_LIBRARIES to build libraries
4256 not in the seg_addr_table as split. (Radar bug #3875865).</LI>
4258 <LI>Fixed a bug in the nmedit(1) tools that incorrectly produced
4259 errors about symbols having bad n_sect values. (Radar bug
4260 #3880780).</LI>
4262 <LI>Made changes to the seg_addr_table(1) tools for the Mac OS X
4263 10.4 prebinding. (Radar bug #3871826).</LI>
4265 <LI>Changed the redo_prebinding code to ignore 64-bit Mach-O
4266 files. (Radar bug #3877703).</LI>
4267 </UL>
4269 <H5><FONT SIZE="+1">Changes since the last release (cctools-551 for
4270 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4272 <UL>
4273 <LI>The tool strip(1) how has the "--" option which treats all
4274 arguments after it as files. (Radar bug #3571788).</LI>
4276 <LI>The cctools project now builds with a stdio.h that does not
4277 include stdarg.h. (Radar bug #3640701).</LI>
4279 <LI>The strings(1) command now has the UNIX standard conformance
4280 -n and -t options (see the man page for more details). (Radar bug
4281 #3644256).</LI>
4283 <LI>The nm(1) command now has the UNIX standard conformance -A and
4284 -P options (see the man page for more details). (Radar bug
4285 #3652346).</LI>
4287 <LI>The ld(1) command now does not ignore the umask(2) value when
4288 creating output files. (Radar bug #3761943).</LI>
4290 <LI>The ld(1) command no longer overwrites non-writeable files.
4291 (Radar bug #3762029).</LI>
4293 <LI>The ar(1) command will now produce archives libraries that
4294 ld(1) will process without running ranlib(1) if the archive
4295 members are not fat .o files. (Radar bug #3762136).</LI>
4297 <LI>The ld(1) command now writes its diagnostics to stderr.(Radar
4298 bug #3762151).</LI>
4300 <LI>The strip(1) command no longer overwrites non-writeable files
4301 (Radar bug #3852702).</LI>
4303 <LI>The nm(1) command's usage line now matches the SYNOPSIS of the
4304 nm(1) man page. (Radar bug #3856321).</LI>
4305 </UL>
4307 <H5><FONT SIZE="+1">Changes since the last release (cctools-550 for
4308 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4310 <UL>
4311 <LI>Sped up the 32-bit Mach-O static link editor, ld(1), symbol
4312 searching. (Radar bug #3836837).</LI>
4314 <LI>Changed otool64(1) to symbolically print the PowerPC 64-bit
4315 thread state. (Radar bug #3866755)</LI>
4317 <LI>Fixed a bug in the undo prebinding code that would not
4318 correctly set the MH_ALLMODSBOUND flag in the mach header when it
4319 should have. (Radar bug #3864573).</LI>
4321 <LI>Changed the 32-bit Mach-O static link editor, ld(1), to remove
4322 symbol stubs and lazy pointers when linking the dynamic linker,
4323 (Radar bug #3863439).</LI>
4325 <LI>Changed ranlib(1) to not produce a waning about 64-bit Mach-O
4326 files not on 8 byte offsets. (Radar bug #3818951).</LI>
4328 <LI>Changed the PowerPC assembler to not treat the instruction
4329 stfiwx as optional so it will assemble without the
4330 -force_cpusubtype_ALL option. (Radar bug #3841472).</LI>
4331 </UL>
4333 <H5><FONT SIZE="+1">Changes since the last release (cctools-549 for
4334 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4336 <UL>
4337 <LI>Changed libsyminfo to work with both 64-bit and 32-bit Mach-O
4338 files. (Radar bug #3854972).</LI>
4340 <LI>Changed the seg_addr_table(1) tools to ignore 64-bit Mach-O
4341 files. (Radar bug #3861276).</LI>
4343 <LI>Changed nm(1) to to work with both 64-bit and 32-bit Mach-O
4344 files and removed the nm64(1) tool. (Radar bug #3859090).</LI>
4345 </UL>
4347 <H5><FONT SIZE="+1">Changes since the last release (cctools-548 for
4348 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4350 <UL>
4351 <LI>Fixed a bug in ghe the get_prebind_cksums(3) API that would
4352 cause it to crash on corrupt input. (Radar bug #3839049)</LI>
4354 <LI>Made a changed to ld(1) when the -dead_strip option is used
4355 that improves debugging with -O3 compiled files. (Radar bug
4356 #3839049).</LI>
4358 <LI>Changed ld(1) to disable prebinding when the environment
4359 variable LD_PREBIND_SPLITSEGS_ONLY for anything that is not a
4360 split shared library. (Radar bug #3855581).</LI>
4362 <LI>Fixed the ppc64 assembler so it will accept the <B>.machine
4363 ppc970-64</B> directive. (Radar bug #3856997).</LI>
4365 <LI>Changed libsyminfo to not crash if presented with a 64-bit
4366 Mach-O file. (Radar bug #3854972).</LI>
4367 </UL>
4369 <H5><FONT SIZE="+1">Changes since the last release (cctools-547 for
4370 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4372 <UL>
4373 <LI>Fixed a bug in tool tool strip(1) that caused it to not
4374 correctly update the indirect symbol table entries in 64-bit
4375 Mach-O files (Radar bug #3848104).</LI>
4376 </UL>
4378 <H5><FONT SIZE="+1">Changes since the last release (cctools-546 for
4379 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4381 <UL>
4382 <LI>Ported the libredo_prebinding code to not creash when it sees
4383 a 64-bit Mach-O files (Radar bug #3851599).</LI>
4384 </UL>
4386 <H5><FONT SIZE="+1">Changes since the last release (cctools-546 for
4387 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4389 <UL>
4390 <LI>Ported the libmacho code for libSystem to work with both
4391 64-bit and 32-bit Mach-O files. (Radar bug #3780704).</LI>
4393 <LI>Fixed a bug in otool64(1) that did not correctly print the
4394 cpusubtype for -arch ppc970-64 objects. (Radar bug #3825281).</LI>
4395 </UL>
4397 <H5><FONT SIZE="+1">Changes since the last release (cctools-544 for
4398 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4400 <UL>
4401 <LI>Fixed a bug in tool tool strip(1) that caused it to corrupt
4402 64-bit Mach-O files and archives containing 64-bit Mach-O files
4403 (Radar bug #3836060).</LI>
4404 </UL>
4406 <H5><FONT SIZE="+1">Changes since the last release (cctools-543 for
4407 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4409 <UL>
4410 <LI>Fixed a bug in the libdyld code that would cause it to not
4411 load any fat bundles. (Radar bug #3837563).</LI>
4412 </UL>
4414 <H5><FONT SIZE="+1">Changes since the last release (cctools-542 for
4415 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4417 <UL>
4418 <LI>Fixed a bug in ld(1) that would cause it to crash on i386
4419 machines. (Radar bug #3830818).</LI>
4421 <LI>Fixed a regression in the tool nmedit(1) from the changes put
4422 in for 3812858 that manifiested it self the same as 3806356.
4423 (Radar bug #3833852).</LI>
4424 </UL>
4426 <H5><FONT SIZE="+1">Changes since the last release (cctools-541 for
4427 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4429 <UL>
4430 <LI>Fixed a bug in tool tool strip(1) that caused it to corrupt
4431 the __LINKEDIT section in 64-bit Mach-O files. (Radar bug
4432 #3831401).</LI>
4433 </UL>
4435 <H5><FONT SIZE="+1">Changes since the last release (cctools-540 for
4436 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4438 <UL>
4439 <LI>Fixed a bug in tha tool strip(1) that cause it to produce an
4440 internal eroor for 64-bit Mach-O files. (Radar bug #3829545).</LI>
4441 </UL>
4443 <H5><FONT SIZE="+1">Changes since the last release (cctools-539 for
4444 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4446 <UL>
4447 <LI>Fixed a bug in the tool strip(1) that cause it to produce an
4448 incorrect malformed object file eroor for 64-bit Mach-O files.
4449 (Radar bug #3829149).</LI>
4450 </UL>
4452 <H5><FONT SIZE="+1">Changes since the last release (cctools-538 for
4453 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4455 <UL>
4456 <LI>The tool strip(1) was changed to understand both 32-bit and
4457 64-bit Mach-O files. (Radar bug #3812858).</LI>
4458 </UL>
4460 <H5><FONT SIZE="+1">Changes since the last release (cctools-537 for
4461 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4463 <UL>
4464 <LI>As part of the transition, ld(1) now executes /usr/bin/ld64 if
4465 a "-arch ppc64" is seen anywhere on the command line. (Radar bug
4466 #3823359).</LI>
4467 </UL>
4469 <H5><FONT SIZE="+1">Changes since the last release (cctools-536 for
4470 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4472 <UL>
4473 <LI>Fix a bug in libtool(1)/ranlib(1) that caused it to grow the
4474 size of member names. (Radar bug #3817546).</LI>
4476 <LI>Changed the redo_prebinding(3) API to return
4477 REDO_PREBINDING_SUCCESS any time a new file is created. (Radar bug
4478 #3818477).</LI>
4480 <LI>Changed ld(1) to ignore 64-bit Mach-O files when
4481 -no_arch_warnings is specified. (Radar bug #3815344).</LI>
4482 </UL>
4484 <H5><FONT SIZE="+1">Changes since the last release (cctools-535 for
4485 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4487 <UL>
4488 <LI>Fix a bug in the PowerPC assembler that produced an incorrect
4489 expression out of range error. (Radar bug #3813143).</LI>
4491 <LI>Fix a bug in the i386 assembler that produced an incorrect "no
4492 opcode suffix given; can't determine immediate size" error and use
4493 larger instructions that it should. (Radar bug #3813924).</LI>
4494 </UL>
4496 <H5><FONT SIZE="+1">Changes since the last release (cctools-534 for
4497 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4499 <UL>
4500 <LI>Fix problems with strip(1) not being able to process static
4501 libraries produced by libtool(1) that had archive members on 8
4502 byte boundaries. (Radar bug #3811489).</LI>
4503 </UL>
4505 <H5><FONT SIZE="+1">Changes since the last release (cctools-533 for
4506 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4508 <UL>
4509 <LI>Fixing libtool(1) and ranlib(1) to correctly place 64-bit
4510 Mach-O files on 8 byte boundaries. (Radar bug #3808740).</LI>
4512 <LI>The cctools-534 sources no longer installs its libdyld
4513 archives for libSystem builds. (Radar bug #3780216).</LI>
4515 <LI>The lipo(1) -info and -detailed_info options now work for
4516 64-bit Mach-O files. (Radar buf #3793539).</LI>
4518 <LI>The value of CPU_TYPE_POWERPC64 has been changed to include a
4519 CPU_IS64BIT (0x1000000) and is that or'ed with the old value of
4520 CPU_TYPE_POWERPC. (Radar bug #3806447).</LI>
4522 <LI>libtool(1) now runs ld64(1) when for 64-bit architectures.
4523 (Radar bug #3807911).</LI>
4524 </UL>
4526 <H5><FONT SIZE="+1">Changes since the last release (cctools-532 for
4527 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4529 <UL>
4530 <LI>Changed libtool(1) and ranlib(1) to understand both 32-bit and
4531 64-bit Mach-O files and removed the creation of libtool64(1) and
4532 ranlib64(1). (Radar bug #3793394).</LI>
4534 <LI>The cctools-533 souces were changed to no longer use the
4535 obsolete NX*Zone routines. (Radar bug #3461591).</LI>
4537 <LI>Changed ld(1) to allow more padding of load commands so that
4538 output files linked with -prebind can be successfully re-prebound.
4539 (Radar bug #3784597).</LI>
4540 </UL>
4542 <H5><FONT SIZE="+1">Changes since the last release (cctools-531 for
4543 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4545 <UL>
4546 <LI>Changed lipo(1) understands both 32-bit and 64-bit Mach-O
4547 files . (Radar bug #3600431).</LI>
4549 <LI>Fixed the cctools sources so that it would build with the
4550 gcc-3.5 compiler. (Radar bug #3751608).</LI>
4552 <LI>Removed the -mc68000 and -mc68010 options should from as man
4553 page. (Radar bug #3704760).</LI>
4555 <LI>Changed the constants MH_CIGAM and MH_CIGAM_64 in
4556 &lt;mach-o/loader.h&gt; to be real constants not use NXSwapInt().
4557 (Radar bug #3762888).</LI>
4558 </UL>
4560 <H5><FONT SIZE="+1">Changes since the last release (cctools-530 for
4561 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4563 <UL>
4564 <LI>Added libtool64(1) and an ranlib64(1) which are the
4565 development tools targeting 64-bit systems . (Radar bug
4566 #3600431).</LI>
4567 </UL>
4569 <H5><FONT SIZE="+1">Changes since the last release (cctools-529 for
4570 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4572 <UL>
4573 <LI>The redo_prebinding code now sets the first two pointers in
4574 the __dyld section. (Radar bug #3751608).</LI>
4575 </UL>
4577 <H5><FONT SIZE="+1">Changes since the last release (cctools-528.5 for
4578 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4580 <UL>
4581 <LI>Changed nmedit(1) to allow it to handle changing global
4582 coalesced symbols into static symbols when they have a pcrel
4583 relocation entry to them. (Radar bug #3806356).</LI>
4584 </UL>
4586 <H5><FONT SIZE="+1">Changes since the last release (cctools-528.5 for
4587 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4589 <UL>
4590 <LI>Added as64(1), otool64(1) and an nm64(1) which are the
4591 development tools targeting 64-bit systems . (Radar bug
4592 #3600431).</LI>
4593 </UL>
4595 <H5><FONT SIZE="+1">Changes since the last release (cctools-528.4 for
4596 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4598 <UL>
4599 <LI>Fixed a problem with the seg_addr_table(1) tool that did not
4600 correctly set the read-write address of split libraries that
4601 overlapped. (Radar bug #3767036).</LI>
4603 <LI>Changed the cctools-528.5 sources to assume a Mac OS 10.3
4604 build when RC_RELEASE is set to MuonSeed.</LI>
4606 <LI>Fixed a problem with the assembler's .machine directive that
4607 did not correctly allow altivec instructions to be assembled.
4608 (Radar bug #3492132).</LI>
4610 <LI>Changed the undo_prebinding code to so it correctly adjusts
4611 relocation entries of nonprebound dylibs. (Radar bug #
4612 3652989).</LI>
4614 <LI>Fixed a bug in ld(1) that caused it to crash when tracing
4615 undefined symbols with the -Y option, which was introduced in
4616 cctools-528.3 with the change to Radar 3737622. (Radar bug
4617 #3797052).</LI>
4619 <LI>Fixed a problem with ld(1)'s -dead_strip option producing
4620 binaries that gdb(1) was having trouble debugging. (Radar bug
4621 #3739451).</LI>
4622 </UL>
4624 <H5><FONT SIZE="+1">Changes since the last release (cctools-528.3 for
4625 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4627 <UL>
4628 <LI>Changed the filesize and fileoff fields of the struct
4629 segment_command_64 structure to be 64-bits. (Radar bug
4630 #3781406).</LI>
4632 <LI>Fixed a build problem building libkld for the kernel. (Radar
4633 bug #3782212).</LI>
4635 <LI>Changed the assember to not use the new section difference
4636 relocations to local symbols when -static is specified, which
4637 allows kernel extensions to be compatible for linking on older
4638 systems. (Radar bug #3753904).</LI>
4639 </UL>
4641 <H5><FONT SIZE="+1">Changes since the last release (cctools-528.2 for
4642 the 5.17 Mac OS X Xcode 2.0 Developer release)</FONT></H5>
4644 <UL>
4645 <LI>The static link editor no longer searches indirectly
4646 referenced shared libraries when -twolevel_namespace is in effect.
4647 (Radar bug #3737622).</LI>
4648 </UL>
4650 <H5><FONT SIZE="+1">Changes since the last release (cctools-528 for
4651 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4653 <UL>
4654 <LI>Allowed duplicate symbols in kexts. (Radar bug #3633627).</LI>
4656 <LI>Fixed handling of forward labels in the 64-bit assembler.
4657 (Radar bug #3757398).</LI>
4658 </UL>
4660 <H2>Notes Specific to Release 5.16 (Mac OS X Xcode 1.5 Developer
4661 Release)</H2>
4663 <H3><FONT SIZE="+1">New Features</FONT></H3>
4665 <H3><FONT SIZE="+1">The static linker has an option to do dead code
4666 stripping</FONT></H3>
4668 <P>See the Public release notes for the details.</P>
4670 <H5><FONT SIZE="+1">Changes since the last release (cctools-527 for
4671 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4673 <UL>
4674 <LI>Added support for section difference relocations to local
4675 symbols inside procedures referenced by a globally visible
4676 coalesced symbol, on i386. (Radar bug #3744821).</LI>
4677 </UL>
4679 <H5><FONT SIZE="+1">Changes since the last release (cctools-526 for
4680 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4682 <UL>
4683 <LI>Added the structures for 64-bit Mach-O files to the Mach-O
4684 headers. (Radar bug #3742429).</LI>
4686 <LI>The assembler was made faster. (Radar bug #3739375).</LI>
4688 <LI>The checksymb(1) tool once again has a what(1) string. (Radar
4689 bug #3746707).</LI>
4691 <LI>Added support for section difference relocations to local
4692 symbols inside procedures referenced by a globally visible
4693 coalesced symbol, on powerpc. (Radar bug #3744821).</LI>
4694 </UL>
4696 <H5><FONT SIZE="+1">Changes since the last release (cctools-525 for
4697 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4699 <UL>
4700 <LI>Fixed a missed worded linker error message where the
4701 -flat_namespace flag is mentioned as -flatname_space. (Radar bug
4702 #3743186).</LI>
4704 <LI>Changed the Mach-O headers need to be 64-bit clean. (Radar bug
4705 #3742429).</LI>
4707 <LI>Changed the cctools sources to compile without warnings and
4708 the 64-bit clean Mach-O headers. (Radar bug #3744082).</LI>
4710 <LI>Fixed the mispelling of 'meaningless' in linker error message.
4711 (Radar bug #3739217).</LI>
4713 <LI>Added the -V flag to libtool(1) to print its version
4714 information. (Radar bug #3738616).</LI>
4716 <LI>Added support for the i386 3DNow! instructions to the
4717 assembler and otool(1)'s disassembler. (Radar bug #3737535).</LI>
4718 </UL>
4720 <H5><FONT SIZE="+1">Changes since the last release (cctools-524 for
4721 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4723 <UL>
4724 <LI>Changed the static link editor, ld(1), to link output files
4725 for use by the dynamic linker faster. (Radar bug #3728427).</LI>
4726 </UL>
4728 <H5><FONT SIZE="+1">Changes since the last release (cctools-523 for
4729 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4731 <UL>
4732 <LI>Changed the static link editor, ld(1), to not create scattered
4733 relocation entried in output files for use with the dynamic
4734 linker. And also to disable prebinding when the output is too
4735 large that it would run into the limitation of the 24-bit
4736 r_address field of scattered relocation entries. (Radar bug
4737 #3451378).</LI>
4739 <LI>Fixed the otool(1) command's <B>-fv</B> output so that it does
4740 not print <I>(illegal duplicate architecture)</I> and take a long
4741 time producing the output on a two-way fat file. (Radar bug
4742 #3709358).</LI>
4744 <LI>Fixed the strip(1) command that caused it to crash when run
4745 with no options on a the dynamic linker.(Radar bug #3697374).</LI>
4747 <LI>Fixed a bug in selecting an i386 architecture from fat file
4748 that only contained a i686 architecture which would cause ld(1) to
4749 think the file was a bad Mach-O file. (Radar bug #3694812).</LI>
4750 </UL>
4752 <H5><FONT SIZE="+1">Changes since the last release (cctools-522 for
4753 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4755 <UL>
4756 <LI>Fixed a bug in the Power PC assembler that would cause it to
4757 incorrectly assemble lwa instructions. Radar bug #3687246.</LI>
4758 </UL>
4760 <H5><FONT SIZE="+1">Changes since the last release (cctools-521 for
4761 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4763 <UL>
4764 <LI>Fixed a bug in the interum ppc64 assembler that would cause it
4765 to incorrectly generate an error about a missing expression. Radar
4766 bug #3682374.</LI>
4768 <LI>Changed how otool(1) gets built so it will build in the
4769 current B&amp;I Tiger BuildRoot with libc changes from 3535291.
4770 Radar bug #3685865.</LI>
4771 </UL>
4773 <H5><FONT SIZE="+1">Changes since the last release (cctools-520 for
4774 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4776 <UL>
4777 <LI>Changed where the public release notes get installed. They are
4778 now installed in the directory /Developer/ADC Reference
4779 Library/releasenotes/DeveloperTools. Radar bug #3678389.</LI>
4780 </UL>
4782 <H5><FONT SIZE="+1">Changes since the last release (cctools-519 for
4783 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4785 <UL>
4786 <LI>Added the cmovnz instruction as an equivalent to cmovne for
4787 the i386 assrmbler. Radar bug #3345900.</LI>
4789 <LI>Fixed otool(1)'s disassembly of the i386 assrmbler movdq2q
4790 instruction. (Radar bug #3488840).</LI>
4792 <LI>Fixed otool(1)'s disassembling the move word to accumulator
4793 i386 nstructions. (Radar bug #3515794).</LI>
4795 <LI>Fixed typos in the ld(1) man page. (Radar bug #3545222).</LI>
4797 <LI>Fixed a bug in ld(1)'s relocation of jbsr pseudo instructions
4798 in multi-module dynamic libraries which was are not correctly
4799 setting to branch to the true target when the branch reaches.
4800 (Radar bug #3545578).</LI>
4802 <LI>Added the -v flag to ld(1) to print its version information.
4803 (Radar bug #3557760).</LI>
4805 <LI>Fixed libtool(1)'s printing of logging file names when -static
4806 is used when the environment variable RC_TRACE_ARCHIVES is set so
4807 that it prints out the path returned by realpath(3). (Radar bug
4808 #3585834).</LI>
4810 <LI>Fixed libsyminfo so it will not crash if it encounters a
4811 binary that contains an unknown architecture. (Radar bug
4812 #3590209)</LI>
4814 <LI>Fixed the kld(3) man page to correctly reference kextload(8)
4815 not the obsoleted kmodload(8). (Radar bug #3633604).</LI>
4817 <LI>Fixed the strip(1) command when run with no options on a
4818 dynamic library so that it does not produce a malformed
4819 file.(Radar bug #3641669).</LI>
4821 <LI>Fixed a bug in otool(1) that caused it to crash when run on
4822 Java class files. (Radar bug #3670740).</LI>
4824 <LI>Fixed a bug in ld(1) when the -dead_strip option that was
4825 always stripping static symbols in symbol stub and symbol pointer
4826 sections. (Radar bug #3669400)</LI>
4828 <LI>Changed libtool(1) to take and pass along ld(1)'s
4829 -executable_path flag. (Radar bug #3489733).</LI>
4831 <LI>Added the.machine directive to the assembler. (Radar bug
4832 #3492132)</LI>
4834 <LI>Fixed a bug in ld(1) when -x and -bundle were used when
4835 linking objects with private extern coalesced symbols. This would
4836 result in bad bundle output files that would crash when used.
4837 (Radar bug #3464004).</LI>
4839 <LI>Fixed a bug in ld(1) when -s was used on an executable output
4840 file that could produce bad indirect symbol table entries. (Radar
4841 bug #3534709).</LI>
4843 <LI>Changed the PowerPC assembler to allow the streaming dcbt
4844 instructions without the -force_cpusubtype_ALL flag. (Radar bug
4845 #3468847).</LI>
4847 <LI>Changed ld(1) when the -sectorder option is used so that the
4848 symbols not listed in the order file will be linked in the order
4849 they appeared in the input .o files. (Radar bug #3382272).</LI>
4851 <LI>Fixed a bug in the assembler that could cause it to generate
4852 bad relocation entries if the .o file had a relocatable item after
4853 more than 16megs of code or data in the same section. (Radar bug
4854 #3604972).</LI>
4856 <LI>Changed ld(1)'s -sectorder file format to treat lines that
4857 start with a # as a comment. (Radar bug #3360823)</LI>
4859 <LI>Changed the i386 assembler to allow the prefetcht0,
4860 prefetcht1, prefetcht2 and prefetchnta instructions without the
4861 -force_cpusubtype_ALL flag. (Radar bug #3500323).</LI>
4863 <LI>Fixed a typo in install_name_tool(1) man page. (Radar bug
4864 #3501918).</LI>
4866 <LI>Changed the PowerPC assembler to allow the frsqrte and fres
4867 instructions without the -force_cpusubtype_ALL flag. (Radar bug
4868 #3519365).</LI>
4870 <LI>Fixed a memory leak in libsyminfo. (Radar bug #3554267).</LI>
4872 <LI>Removed a warning in the static linker, ld(1), when the
4873 -dead_strip option is used that generated a warning saying that
4874 -gused was used to compile a .o file and -gfull should be used
4875 even though -gfull was used. (Radar bug #3663248).</LI>
4877 <LI>Fixed a bug in the assembler when a .private_extern directive
4878 for a symbol was seen before an assignment of the symbol to an
4879 absolute value that resulted in the symbol not being marked as a
4880 private extern symbol. (Radar bug #3660818).</LI>
4882 <LI>Changed the tools that produce archive table of contents,
4883 libtool(1) and ranlib(1), as well as the static linker, ld(1), to
4884 no longer warn about creating or using an archive with multiple
4885 members defining the same symbol. (Radar bug #3653845).</LI>
4887 <LI>Fixed a bug with ld(1) -s produced executables having invalid
4888 indirect symbol table entries for stripped symbols.(Radar bug
4889 #3534709).</LI>
4890 </UL>
4892 <H5><FONT SIZE="+1">Changes since the last release (cctools-518 for
4893 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4895 <UL>
4896 <LI>Fixed a problem with the cctools project not installing all of
4897 its man pages.</LI>
4898 </UL>
4900 <H5><FONT SIZE="+1">Changes since the last release (cctools-517 for
4901 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4903 <UL>
4904 <LI>Fixed a problem with the cctools project not installing all of
4905 its man pages when RC_RELEASE is not set.</LI>
4906 </UL>
4908 <H5><FONT SIZE="+1">Changes since the last release (cctools-516 for
4909 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4911 <UL>
4912 <LI>Fixed a problem with the cctools project not installing all of
4913 its headers when RC_RELEASE is not set.</LI>
4914 </UL>
4916 <H5><FONT SIZE="+1">Changes since the last release (cctools-515 for
4917 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4919 <UL>
4920 <LI>Fixed the cctools project to for the change in Radar bug
4921 #3639836 to install the dynamic linker and other pieces for the
4922 MuonPrime RC_RELEASE. (Radar bug #3657739).</LI>
4923 </UL>
4925 <H5><FONT SIZE="+1">Changes since the last release (cctools-514 for
4926 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4928 <UL>
4929 <LI>Added the installGASsrc and fromGASsrc Makefile targets to
4930 install and build just the PowerPC assembler from the GAS sources.
4931 (Radar bug #3657295).</LI>
4932 </UL>
4934 <H5><FONT SIZE="+1">Changes since the last release (cctools-513 for
4935 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4937 <UL>
4938 <LI>Fixed a build problem with cctools' "mach/machine.h" header
4939 file not containing the typedef for cpu_threadtype_t.</LI>
4940 </UL>
4942 <H5><FONT SIZE="+1">Changes since the last release (cctools-512 for
4943 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4945 <UL>
4946 <LI>Changed the cctools project to no longer install the dynamic
4947 linker, /usr/lib/dyld, and the header files &lt;mach-o/dyld.h&gt;,
4948 &lt;mach-o/dyld_gdb.h&gt; and &lt;mach-o/dyld_priv.h&gt; as well
4949 as the man pages dyld(1), dyld(3), NSModule(3),
4950 NSObjectFileImage(3) and NSObjectFileImage_priv(3). (Radar bug
4951 #3639836).</LI>
4953 <LI>Integrated the changes from cctools-495.8 in Mac OS X 10.3.4
4954 (Radar bug #3650224).</LI>
4955 </UL>
4957 <H5><FONT SIZE="+1">Changes since the last release (cctools-511 for
4958 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
4960 <UL>
4961 <LI>Fixed bug in the static linker that cause it to crash when the
4962 -dead_strip option was used with -preload output files. (Radar bug
4963 #3649317).</LI>
4965 <LI>Fixed a bug that cuased strip(1) an other tools that created
4966 archive libraries to not correctly set the time stamp on the
4967 archive resulting in ld(1) thinking the archive's table of
4968 contents was out of date. (Radar bug #3645280).</LI>
4970 <LI>Fixed bug in the static linker that caused it to generate an
4971 internal error when referencing an undefined symbol from a
4972 coalesced section that is defined in another .o file as a global
4973 coalesced symbol. (Radar bug #3644011).</LI>
4975 <LI>Removed a debugging print statement in ld(1) (Radar bug
4976 #3643349).</LI>
4978 <LI>Fixed bug in the static linker when the -dead_strip option was
4979 used that caused it to generate an internal error (Radar bug
4980 #3643111).</LI>
4982 <LI>Fixed bug in the static linker when the -dead_strip option and
4983 the -s option was used that caused it to generate an internal
4984 error (Radar bug #3639490).</LI>
4986 <LI>Change the compiler tools project to install the
4987 redo_prebinding(3) man page as a local man page. (Radar bug
4988 #3638779).</LI>
4990 <LI>Fixed the compiler tools release notes for -arch ppc64 to say
4991 -dynamic binaries are not supported. (Radar bug #3638698).</LI>
4993 <LI>Integrated the changes from cctools-495.7 in Mac OS X 10.3.4
4994 (Radar bug #3629498).</LI>
4995 </UL>
4997 <H5><FONT SIZE="+1">Changes since the last release (cctools-510 for
4998 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5000 <UL>
5001 <LI>Fixed bug in the static linker when the -dead_strip option
5002 that caused some things not to be aligned correctly. This would
5003 happen for things that used assembler temporary labels such as
5004 compiler generated altivec constants (Radar bug #3625632).</LI>
5005 </UL>
5007 <H5><FONT SIZE="+1">Changes since the last release (cctools-509 for
5008 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5010 <UL>
5011 <LI>Integrated the changes from cctools-495.6 in Mac OS X 10.3.4
5012 (Radar bug #3630920).</LI>
5013 </UL>
5015 <H5><FONT SIZE="+1">Changes since the last release (cctools-508 for
5016 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5018 <UL>
5019 <LI>Integrated the changes from cctools-499.4 for the interium
5020 -arch ppc64 architecture.</LI>
5021 </UL>
5023 <H5><FONT SIZE="+1">Changes since the last release (cctools-507 for
5024 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5026 <UL>
5027 <LI>Integrated the changes from cctools-495.&#91;345&#93; in Mac
5028 OS X 10.3.4.</LI>
5029 </UL>
5031 <H5><FONT SIZE="+1">Changes since the last release (cctools-506 for
5032 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5034 <UL>
5035 <LI>Fixed another bug in the static linker when the -dead_strip
5036 option is used with object files containing multiple gobal symbols
5037 at the same address. This too caused ld(1) produce files that
5038 would crash due to incorrectly dead stripping (Radar bug
5039 #3625582).</LI>
5040 </UL>
5042 <H5><FONT SIZE="+1">Changes since the last release (cctools-505 for
5043 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5045 <UL>
5046 <LI>Fixed a bug in the static linker when the -dead_strip option
5047 is used with object files containing multiple gobal symbols at the
5048 same address. This caused ld(1) produce files that would crash due
5049 to incorrectly dead stripping (Radar bug #3625582).</LI>
5050 </UL>
5052 <H5><FONT SIZE="+1">Changes since the last release (cctools-504 for
5053 the 5.16 Mac OS X Xcode 1.5 Developer release)</FONT></H5>
5055 <UL>
5056 <LI>Fixed a bug in the static linker when the -dead_strip option
5057 is used with object files containing indirect symbol table entries
5058 that are INDIRECT_SYMBOL_LOCAL or INDIRECT_SYMBOL_ABS that caused
5059 ld(1) to crash or produce files that would crash due to
5060 incorrectly dead stripping live blocks (Radar bug #3625527)</LI>
5062 <LI>Fixed a bug in the static linker when the -dead_strip option
5063 is used with C++ that caused it to incorrectly point an error
5064 message about an illegal reference into a stub section (Radar bug
5065 #3625527).</LI>
5066 </UL>
5068 <H5><FONT SIZE="+1">Changes since the last release (cctools-503 for
5069 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5071 <UL>
5072 <LI>Added the environment variable LD_DEAD_STRIP_DYLIB which
5073 causes -dead_strip to specified for all ld(1) commands that have
5074 the -dylib option specified.</LI>
5076 <LI>Fixed a problem with the cctools source that would not build
5077 the kld libraries (Radar bug #3625471).</LI>
5078 </UL>
5080 <H5><FONT SIZE="+1">Changes since the last release (cctools-502 for
5081 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5083 <UL>
5084 <LI>Fixed problems linking with the kld libraries getting
5085 undefined symbols caused by the changes to the code base for dead
5086 code stripping. (Radar bug #2284500).</LI>
5087 </UL>
5089 <H5><FONT SIZE="+1">Changes since the last release (cctools-501 for
5090 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5092 <UL>
5093 <LI>Fixed a bug in the static link editor with the use of
5094 -dead_strip and -prebind that caused an internal error. (Radar bug
5095 #2284500).</LI>
5097 <LI>Fixed a bug in the static link editor with the use of
5098 -dead_strip that in some cases would incorrectly produce a warning
5099 message about "symbol appears more than once in the same file".
5100 (Radar bug #2284500).</LI>
5102 <LI>Fixed a bug where common symbols were not correctly dead
5103 stripped if a -sectorder file was not used. (Radar bug
5104 #2284500).</LI>
5106 <LI>Added support for -dead_strip for i386 and m68k
5107 architectures.</LI>
5108 </UL>
5110 <H5><FONT SIZE="+1">Changes since the last release (cctools-500 for
5111 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5113 <UL>
5114 <LI>Added support for the new <B>subsections_via_symbols</B>
5115 assembler directive to mark objects ok to divide their section
5116 contents via symbols. Objects without this mark have their
5117 sections kept whole if anything in the section is live. (Radar bug
5118 #2284500).</LI>
5120 <LI>Fixed a bug in the assembler that would cause an incorrect
5121 symbol re-definition error if a .no_dead_strip directive was used
5122 before a .comm directive for the same symbol. (Radar bug
5123 #2284500).</LI>
5124 </UL>
5126 <H5><FONT SIZE="+1">Changes since the last release (cctools-499.4 for
5127 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5129 <UL>
5130 <LI>Added dead code stripping to the static linker, ld(1), with
5131 the new flag <B>-dead_strip</B> (see the Public release notes for
5132 the details ). Also the new flag
5133 <B>-no_dead_strip_inits_and_terms</B> causes all constructors and
5134 destructors to never be dead code stripped. (Radar bug
5135 #2284500).</LI>
5136 </UL>
5138 <H5><FONT SIZE="+1">Changes since the last release (cctools-499.3 for
5139 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5141 <UL>
5142 <LI>Removed the partial support for -arch ppc64-970.</LI>
5143 </UL>
5145 <H5><FONT SIZE="+1">Changes since the last release (cctools-499.2 for
5146 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5148 <UL>
5149 <LI>Fixed a bug in the static linker, ld(1), that caused it to
5150 generate an error message about malformed objects when linking
5151 ppc64 objects with -r. (Radar bug #3594978).</LI>
5153 <LI>Fixed a bug in the assembler with handling of integer
5154 expressions when hosted on i386. (Radar bug #3591543).</LI>
5156 <LI>Added a definition of _NSGetProgname() in dyld to resolve a
5157 dyld link failure due to changes in Libc-327. (Radar bug
5158 #3593079).</LI>
5159 </UL>
5161 <H5><FONT SIZE="+1">Changes since the last release (cctools-499.1 for
5162 the 5.16 Mac OS X Xcode 1.5 Developer release) </FONT></H5>
5164 <UL>
5165 <LI>Added a dummy definition of __cxa_finalize() in dyld to
5166 resolve a dyld link failure due to changes in Libc-326. (Radar bug
5167 #3586910).</LI>
5168 </UL>
5170 <H5><FONT SIZE="+1">Changes since the last release (cctools-499 for
5171 the 5.15 Mac OS X Xcode 1.2 release)</FONT></H5>
5173 <UL>
5174 <LI>Added support for the interium -arch ppc64 architecture (LP64
5175 code gen in a Mach-O 32-bit file). (Radar bugs #3562133 and
5176 #3562232).</LI>
5177 </UL>
5179 <H2>Notes Specific to Release 5.15 (Mac OS X Xcode 1.2 Release)</H2>
5181 <H5><FONT SIZE="+1">Changes since the last release (cctools-498 for
5182 the 5.14 Mac OS X December 2003 Developer release) </FONT></H5>
5184 <UL>
5185 <LI>Fixed a bug in the static linker, ld(1), that caused it to
5186 generate an internal error message about the count of local
5187 relocation entries does not matching when jbsr pseudo instructions
5188 were used when creating a dynamic library. (Radar bug
5189 #3518096).</LI>
5190 </UL>
5192 <H2>Notes Specific to Release 5.14 (Mac OS X December 2003 Developer
5193 Release)</H2>
5195 <H5><FONT SIZE="+1">Changes since the last release (cctools-497 for
5196 the 5.14 Mac OS X December 2003 Developer release) </FONT></H5>
5198 <UL>
5199 <LI>Added the PowerPC pseudo-instruction <B>jmp</B> as the
5200 non-linking form of <B>jbsr</B>. (Radar bug #3458928).</LI>
5201 </UL>
5203 <H5><FONT SIZE="+1">Changes since the last release (cctools-496 for
5204 the 5.14 Mac OS X December 2003 Developer release) </FONT></H5>
5206 <UL>
5207 <LI>Changed the assembler to accept the --gstabs option to be the
5208 same as the -g option and treat the --gdwarf2 option as an unknown
5209 option. (Radar bug #3411071).</LI>
5211 <LI>Change the libtool(1) command to pass the
5212 -prebind_allow_overlap on to ld(1). (Radar bug #3452484).</LI>
5214 <LI>Fixed a bug in the static linker, ld(1), that caused it to
5215 generate an error message about relocation entries in read-only
5216 sections when jbsr pseudo instructions were used when creating a
5217 dynamic library. (Radar bug #3452964).</LI>
5218 </UL>
5220 <H5><FONT SIZE="+1">Changes since the last release (cctools-495 for
5221 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5223 <UL>
5224 <LI>Added the value 10.4 to be one of the known values allowed for
5225 environment variable MACOSX_DEPLOYMENT_TARGET (Radar bug
5226 #3445632).</LI>
5228 <LI>Changed the cctools project to include the FSF COPYING file at
5229 the top level of the assembler. (Radar bug #3443583).</LI>
5231 <LI>Changed seg_addr_table(3) so it does not reserves more space
5232 than necessary for flat dylibs. (Radar bug #3440884).</LI>
5234 <LI>Changed NSModule(3) man page so NSLinkModule states you need
5235 to pass the image path as the module name if you want to use
5236 gdb(1) on it (Radar bug #3408768).</LI>
5238 <LI>Changed the header file &lt;mach-o/dyld.h&gt; so the API's
5239 introduced in 10.3 are marked with the AvailabilityMacros (Radar
5240 bug #3401910).</LI>
5242 <LI>Changed ld(1) to call realpath(3) on the filenames printed
5243 with RC_TRACE_ARCHIVES. (Radar bug #3443289).</LI>
5244 </UL>
5246 <H2>Notes Specific to Release 5.13.2 (Mac OS X 10.3.4 Release)</H2>
5248 <H5><FONT SIZE="+1">Changes since the last release (cctools-495.7 for
5249 the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>
5251 <UL>
5252 <LI>Fixed a bug that was caused by the changes to dyld in
5253 cctools-495.3 for Radar bug #3622330 that would cause undefined
5254 symbols errors. (Radar bug #3650224).</LI>
5255 </UL>
5257 <H5><FONT SIZE="+1">Changes since the last release (cctools-495.6 for
5258 the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>
5260 <UL>
5261 <LI>Fixed a bug that was caused by the changes to dyld in
5262 cctools-495.3 for Radar bug #3622330 that would not correctly
5263 fully bind symbols and modules. (Radar bug #3629498).</LI>
5264 </UL>
5266 <H5><FONT SIZE="+1">Changes since the last release (cctools-495.5 for
5267 the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>
5269 <UL>
5270 <LI>Fixed a bug that was caused by the changes to dyld in
5271 cctools-495.3 for Radar bug #3622330 that would cause private
5272 bundles to fail to load if they had mutiply defined symbols (Radar
5273 bug #3626905).</LI>
5274 </UL>
5276 <H5><FONT SIZE="+1">Changes since the last release (cctools-495.4 for
5277 the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>
5279 <UL>
5280 <LI>Fixes a bug that was caused by the changes to dyld in
5281 cctools-495.3 for Radar bug #3622330 that would cause a crash in
5282 apps that were built ld(1) -s and the un fixed bug 3534709. The
5283 work around for this bug had a logic error (Radar bug
5284 #3627380).</LI>
5286 <LI>Fixed a bug that was caused by the changes to dyld in
5287 cctools-495.3 for Radar bug #3622330 that would cause a crash in
5288 dyld when there were unused non-lazy symbols in a multi-module
5289 dynamic library (Radar bug #3625797).</LI>
5290 </UL>
5292 <H5><FONT SIZE="+1">Changes since the last release (cctools-495.3 for
5293 the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>
5295 <UL>
5296 <LI>Changes were made to dyld that improve launch times. (Radar
5297 bug #3622330).</LI>
5298 </UL>
5300 <H5><FONT SIZE="+1">Changes since the last release (cctools-495.2 for
5301 the 5.13.1 Mac OS X 10.3.3 release) </FONT></H5>
5303 <UL>
5304 <LI>Added the <I>unprebind</I>(3) API to libredo_prebinding and
5305 the <B>-u</B> option to the <I>redo_prebinding</I>(1) command.
5306 (Radar bug #3176679).</LI>
5308 <LI>Added the <B>-seg1addr</B> <I>hex_addeess</I> option to to the
5309 <I>redo_prebinding</I>(1) command to specify the address of a
5310 dynamic shared library. (Radar bug #3176679).</LI>
5312 <LI>Added the <B>-s</B> option to to the <I>redo_prebinding</I>(1)
5313 command to cause it to write its output to standard output, rather
5314 than to an output file. (Radar bug #3176679).</LI>
5315 </UL>
5317 <H2>Notes Specific to Release 5.13.1 (Mac OS X 10.3.3 Release)</H2>
5319 <H5><FONT SIZE="+1">Changes since the last release (cctools-495 for
5320 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5322 <UL>
5323 <LI>Fixed a bug in dyld that was causing it not to trigger
5324 fix_prebinding. (Radar bug #3489918).</LI>
5325 </UL>
5327 <H2>Notes Specific to Release 5.13 (Mac OS X 10.3)</H2>
5329 <H5><FONT SIZE="+1">Changes since the last release (cctools-494 for
5330 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5332 <UL>
5333 <LI>Changed the default headerpad in ld(1) when it creates a
5334 prebound executable to be 3 times instead of 6 times the size of
5335 its LC_PREBOUND_DYLIB load commands so it has a better chance of
5336 its prebinding being able to be redone if the dependent libaries
5337 change and does not increase the size of the file as much. (Radar
5338 bug #3410151).</LI>
5339 </UL>
5341 <H5><FONT SIZE="+1">Changes since the last release (cctools-493 for
5342 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5344 <UL>
5345 <LI>Changed the default headerpad in ld(1) when it creates a
5346 prebound executable to be 6 times the size of its
5347 LC_PREBOUND_DYLIB load commands so it has a better chance of its
5348 prebinding being able to be redone if the dependent libaries
5349 change. (Radar bug #3410151).</LI>
5350 </UL>
5352 <H5><FONT SIZE="+1">Changes since the last release (cctools-492 for
5353 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5355 <UL>
5356 <LI>Fixed a bug in the redo_prebinding(1)(3) code that would cause
5357 an error if an indirectly dependent library changed its install
5358 name. (Radar bug #3408696).</LI>
5359 </UL>
5361 <H5><FONT SIZE="+1">Changes since the last release (cctools-491 for
5362 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5364 <UL>
5365 <LI>Changed the seg_addr_table(1) tool to assign addresses for
5366 _debug and _profile libraries addresses to start at 0x40000000
5367 through lower addresses. (Radar bug #3360593).</LI>
5369 <LI>Fixed a bug in the seg_addr_table(1) tool where the bounds
5370 checking of an assigned address would be allowed when it shouldn't
5371 have been if the library entirely fit inside a reserved region.
5372 (Radar bug #3359505).</LI>
5373 </UL>
5375 <H5><FONT SIZE="+1">Changes since the last release (cctools-490 for
5376 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5378 <UL>
5379 <LI>Fixed a bug in the dynamic linker in the code that implements
5380 of the API NSLookupSymbolInImage() that can cause it to crash when
5381 looking up a symbol in a bundle when another thread is still
5382 loading that bundle. (Radar bug #3393517).</LI>
5383 </UL>
5385 <H5><FONT SIZE="+1">Changes since the last release (cctools-489 for
5386 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5388 <UL>
5389 <LI>Fixed problems dealing with ppc970 cpusubtype binaries being
5390 incorrectly selected when not on a G5 for execution and not being
5391 selected when building and linking with a fat file containing only
5392 a ppc970 object file. (Radar bug #3387962).</LI>
5393 </UL>
5395 <H5><FONT SIZE="+1">Changes since the last release (cctools-488 for
5396 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5398 <UL>
5399 <LI>Change the code for otool(1) to have stub versions of the
5400 notify API so it will build. (Radar bug #3378781).</LI>
5401 </UL>
5403 <H5><FONT SIZE="+1">Changes since the last release (cctools-487 for
5404 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5406 <UL>
5407 <LI>Fixed a problem with the ld(1) man page where the description
5408 of -weak_framework got incorrectly inserted in the description of
5409 -framework. (Radar bug #3375695).</LI>
5411 <LI>Updated the source code in the cctools project to the APSL
5412 2.0. (Radar bug #3369348).</LI>
5414 <LI>Change the code in the dynamic linker to define its own
5415 version of gettimeofday() so it will build with the latest Libc
5416 and Libnotify projects. (Radar bug #3375399).</LI>
5417 </UL>
5419 <H5><FONT SIZE="+1">Changes since the last release (cctools-485 for
5420 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5422 <UL>
5423 <LI>Fixed a bug in the dynamic linker that would cause incorrectly
5424 relocate items causing the program to crash. (Radar bug
5425 #3364959).</LI>
5427 <LI>Fixed a bug in the PowerPC assembler that would cause it to
5428 print an error message when it sees a 64-bit compare instruction
5429 or optional instructions the 970 implements even though <B>-arch
5430 ppc970</B> was specified. (Radar bug #3364523).</LI>
5431 </UL>
5433 <H5><FONT SIZE="+1">Changes since the last release (cctools-485 for
5434 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5436 <UL>
5437 <LI>Added the environment variable
5438 DYLD_PRINT_LIBRARIES_POST_LAUNCH as an option to the dynamic
5439 linker that cause it to print out the dynamic libraries that are
5440 loaded after the program reaches its entry point. (Radar bug
5441 #3342354).</LI>
5442 </UL>
5444 <H5><FONT SIZE="+1">Changes since the last release (cctools-484 for
5445 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5447 <UL>
5448 <LI>Fixed some bugs in the static linker that would cause it to
5449 not mark an umbrella library or framework weak when it was linked
5450 with -weak_framework when the program used symbols just from the
5451 umbrella framework's sub-frameworks. (Radar bug #3337262).</LI>
5452 </UL>
5454 <H5><FONT SIZE="+1">Changes since the last release (cctools-483 for
5455 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5457 <UL>
5458 <LI>Fixed a bug in the static linker that would cause it to print
5459 an error message when the argument to -bundle_loader contained a
5460 non default stack. (Radar bug #3329902).</LI>
5462 <LI>Fixed a bug in the dynamic linker that would cause it to crash
5463 if a weak library in an umbrella library or framework was missing.
5464 (Radar bug #3328875).</LI>
5465 </UL>
5467 <H5><FONT SIZE="+1">Changes since the last release (cctools-482 for
5468 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5470 <UL>
5471 <LI>Fixed a bug in the static linker that would cause it to print
5472 a malloc(3) warning if a -lx option were used when the string x
5473 ends in a dot followed by a single character. (Radar bug
5474 #3285575).</LI>
5476 <LI>Fixed a bug in the libtool(1) command when using the
5477 -weak_framework and -weak_library options that was causing it to
5478 incorrecly produce an error. (Radar bug #3318491).</LI>
5480 <LI>Change the libtool(1) command to pass the ld(1) -m option on
5481 to ld(1). (Radar bug #3305123)</LI>
5482 </UL>
5484 <H5><FONT SIZE="+1">Changes since the last release (cctools-481 for
5485 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5487 <UL>
5488 <LI>Added the SPI NSFindSectionAndOffsetInObjectFileImage() to the
5489 new file &lt;mach-o/dyld_priv.h&gt;. (Radar bug #3318440).</LI>
5490 </UL>
5492 <H5><FONT SIZE="+1">Changes since the last release (cctools-480 for
5493 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5495 <UL>
5496 <LI>Fixed a bug in the optimization of trying to use prebound
5497 libraries post-launch into programs that were built with
5498 -prebind_all_twolevel_modules when loading bundles that was taking
5499 uneeded time. (Radar bug #3303038).</LI>
5500 </UL>
5502 <H5><FONT SIZE="+1">Changes since the last release (cctools-479 for
5503 the 5.13 Mac OS X 10.3 release) </FONT></H5>
5505 <UL>
5506 <LI>Changed the kld(3) and rld(3) load calls to zero out the
5507 alignment of existing sections before loading the specified
5508 objects takes place. (Radar bug #3261751).</LI>
5509 </UL>
5511 <H5><FONT SIZE="+1">Changes since the last release (cctools-478 for
5512 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5514 <UL>
5515 <LI>Added the <B>-executable_path</B> <I>path_name</I> option to
5516 the static linker where <I>path_name</I> is is used to replace
5517 @executable_path for dependent libraries. (Radar bug
5518 #3278995).</LI>
5520 <LI>Fixed the error message in dyld for multiply defined symbols
5521 to use the physical name not the logical name of the modules
5522 defining the symbols. (Radar bug #3295565).</LI>
5523 </UL>
5525 <H2>Notes Specific to Release 5.12 (Mac OS X June 2003 Developer
5526 Release)</H2>
5528 <H5><FONT SIZE="+1">Changes since the last release (cctools-477 for
5529 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5531 <UL>
5532 <LI>Fixed a bug in dyld that was causing things to be doublely
5533 relocated and causing programs to crash. (Radar bug
5534 #3274768).</LI>
5535 </UL>
5537 <H5><FONT SIZE="+1">Changes since the last release (cctools-476 for
5538 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5540 <UL>
5541 <LI>Added the new PowerPC assembler mnemonic "dcbzl" to be the
5542 same as "dcbz128" and changed the assembler to disassemble this as
5543 "dcbzl". (Radar bug #3270067).</LI>
5545 <LI>Added the kld_set_link_options() to the kld library to contol
5546 the stripping of the generated files. (Radar bug #3270588).</LI>
5548 <LI>Changed the source of the cctools project to allow it to build
5549 with Libc-302 by stubbing out the functions __fpclassifyd(), for
5550 PowerPC and __fpclassify() for i386. (Radar bug #3271830).</LI>
5551 </UL>
5553 <H5><FONT SIZE="+1">Changes since the last release (cctools-475 for
5554 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5556 <UL>
5557 <LI>Fixed a bug in the otool(1)'s i386 disassembly of some of the
5558 movq instructions where it was not printing the mnemonic. (Radar
5559 bug #3268255).</LI>
5560 </UL>
5562 <H5><FONT SIZE="+1">Changes since the last release (cctools-474 for
5563 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5565 <UL>
5566 <LI>Updated the assembler man page, as(1) and the arch(3) man
5567 page. (Radar bug #3265334).</LI>
5569 <LI>Fixed The Data Cache Block Touch Instruction variant with the
5570 TH field so it is 4 bits and marked as a 64-bit instruction.
5571 (Radar bug #3265411).</LI>
5572 </UL>
5574 <H5><FONT SIZE="+1">Changes since the last release (cctools-473 for
5575 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5577 <UL>
5578 <LI>Fixed a bug the libredo_prebinding(3) code that caused it to
5579 leak memory when run on system with partially fat files. (Radar
5580 bug #3144803).</LI>
5581 </UL>
5583 <H5><FONT SIZE="+1">Changes since the last release (cctools-472 for
5584 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5586 <UL>
5587 <LI>Fixed a bug the static linker that can cause it to crash when
5588 linking with large dynamic libraries. (Radar bug #3255992).</LI>
5589 </UL>
5591 <H5><FONT SIZE="+1">Changes since the last release (cctools-471 for
5592 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5594 <UL>
5595 <LI>Fixed the libkld routines so that symbol files for kernel
5596 extensions for i386 can be built on ppc. (Radar bug
5597 #3251273).</LI>
5599 <LI>Fixed a bug in the i386 assembler where it used the incorrect
5600 operand for the movq instruction so that the source &amp;
5601 destination got reversed. (Radar bug #3250086).</LI>
5603 <LI>Fixed a bug in the seg_addr_table(1) tools that when the
5604 -relayout option is used it did not set the &lt;&lt;&lt; Next
5605 split address to assign &gt;&gt;&gt; properly. . (Radar bug
5606 #3245958).</LI>
5607 </UL>
5609 <H5><FONT SIZE="+1">Changes since the last release (cctools-470 for
5610 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5612 <UL>
5613 <LI>Fixed a bug in the dynamic linker that caused it to crash if a
5614 symbol is undefined that is using -undefined dynamic_lookup when
5615 trying to print out the name of the undefined symbol. (Radar bug
5616 #3246167).</LI>
5618 <LI>Fixed a bug in the kld libraries where the code that was not
5619 ignoring the alignment of non-regular non-zerofill sections from
5620 the base file. (Radar bug #3245534).</LI>
5622 <LI>Backed out the change made in ld(1) to call _exit instead of
5623 exit() done for Radar bug #3245341 as it does not correctly flush
5624 the output buffers. (Radar bug #3245341).</LI>
5626 <LI>Changed the dynamic linker so that when the private
5627 LINK_OPTION_RELOC_JUST_THIS_MODULE option to NSLinkModule() is
5628 used the undefined handler gets the last undefined symbol not the
5629 first. (Radar bug #3243939).</LI>
5631 <LI>Fixed a bug in the dynamic linker where it incorrectly stopped
5632 trying to use prebound libraries after a launch if a plugin was
5633 loaded that was out of date with respect to its libraries. (Radar
5634 bug #3243961).</LI>
5635 </UL>
5637 <H5><FONT SIZE="+1">Changes since the last release (cctools-469 for
5638 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5640 <UL>
5641 <LI>Added the private LINK_OPTION_RELOC_JUST_THIS_MODULE option to
5642 NSLinkModule() to be used by ZeroLink to improve the performance
5643 by avoid spending time filling in the indirect symbol pointers for
5644 anything but the new image. (Radar bug #3235113).</LI>
5646 <LI>Added the strip(1) option <B>-c</B> to create create stub
5647 libraries from dynamic libraries by stripping the section
5648 contents. (Radar bug #3235093).</LI>
5650 <LI>Improved the interface between the dynamic linker and debugger
5651 so that the debugger spends less time reading the state of the
5652 dynamic linker, especially for ZeroLink. (Radar bug
5653 #3233782).</LI>
5655 <LI>Added the ld(1) option <B>-search_paths_first</B> . When
5656 specified and <B>-dynamic</B> is in effect this casuses ld(1) to
5657 search for files for <B>-l</B><I>x</I> arguments in each library
5658 search path for libx.dylib then libx.a before searching the next
5659 library search path. (Radar bug #3176974).</LI>
5661 <LI>Changed ld(1) to call _exit instead of exit(). (Radar bug
5662 #3245341).</LI>
5663 </UL>
5665 <H5><FONT SIZE="+1">Changes since the last release (cctools-468 for
5666 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5668 <UL>
5669 <LI>Added the ld(1) options <B>-weak_framework</B>,
5670 <B>-weak_library</B> and <B>-weak-l</B> to force a dynamic library
5671 and all references to it to be marked as weak imports. (Radar bug
5672 #3069758).</LI>
5674 <LI>Changed the dynamic linker's internal inline strcmp to have
5675 the correct GNU asm constrains. (Radar bug #3225099)</LI>
5677 <LI>Fixed a bug in seg_addr_table(1) that caused it to crash
5678 introduced in cctools-464. (Radar bug #3225931).</LI>
5680 <LI>Fixed a bug in the assembler's .p2align directive when used
5681 with no fill expression that did not fill with no-op instructions
5682 when appropriate. (Radar bug #3227897).</LI>
5684 <LI>Fixed a problem with the fix to Radar bug #3208399 that caused
5685 an incorrect "malformed object" error on a dynamic shared library
5686 with the opposite byte sex of the host machine. (Radar bug
5687 #3228664).</LI>
5689 <LI>Added private callbacks in the dynamic linker so ZeroLink can
5690 help locate definitions faster. (Radar bug #3229077).</LI>
5691 </UL>
5693 <H5><FONT SIZE="+1">Changes since the last release (cctools-467 for
5694 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5696 <UL>
5697 <LI>Fixed a bug in the compiler tools that caused the static link
5698 editor, ld(1), to mess up the static branches that were predicted
5699 using the Y-bit in cases it changed the sign of the displacement.
5700 (Radar bug #3223045).</LI>
5702 <LI>Fixed a bug in the static link editor, ld(1), when linking
5703 against stub libraries it would incorrectly record the dependent
5704 libraries of the stub libraries. This caused library ordinals for
5705 undefined symbols to be incorrect causing the program to fail to
5706 run with an error from the dynamic linker saying it can't find a
5707 symbol from the incorrecly recorded library. (Radar bug
5708 #3220772).</LI>
5709 </UL>
5711 <H5><FONT SIZE="+1">Changes since the last release (cctools-466 for
5712 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5714 <UL>
5715 <LI>Changed the assember to allow .section directives with
5716 diffenent attributes. (Radar bug #3218644).</LI>
5718 <LI>Changed the compiler tools to allow section difference
5719 relocations with PowerPC load/store double instructions. (Radar
5720 bug #3218027).</LI>
5721 </UL>
5723 <H5><FONT SIZE="+1">Changes since the last release (cctools-465 for
5724 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5726 <UL>
5727 <LI>Fixed a bug in nm(1), and other object tools, that could cause
5728 it to crash on a malformed dynamic library with bad module table
5729 entries. (Radar bug #3208399).</LI>
5731 <LI>Added the <B>-undefined dynamic_lookup</B> option to
5732 <I>ld</I>(1) to allow two-level namespace images to have their
5733 remaining undefined symbols marked to be dynamically looked up at
5734 runtime. This option is only allowed when MACOSX_DEPLOYMENT_TARGET
5735 is set to <B>10.3</B> or greater (since this requires a new
5736 version of dyld). As such this option is not described yet in the
5737 public compiler tools release notes. (Radar bug #3210803).</LI>
5739 <LI>Fixed the problem with gprof(1) crashing introduced when
5740 fixing warnings in the code in cctools-464 (Radar bug
5741 #3212306).</LI>
5743 <LI>Added the <B>-undefined define_a_way</B> option to
5744 <I>ld</I>(1) as a work a round to not having dead-code stripping
5745 that also strips out references to undefined symbols from the dead
5746 code. Which leads to link time failures due to undefined symbols.
5747 With this option <I>ld</I>(1) defines the remaining undefined
5748 symbols as private definitions and allows the link to succeed. The
5749 program then runs as long as it does not use any of the undefined
5750 symbols. (Radar bug #3216770).</LI>
5752 <LI>Fixed a bug in <I>libtool</I>(1) when the <B>-static</B>
5753 option is used to create an archive library that caused it to
5754 crash when the input object files do not contain symbols that will
5755 be in the archive table of contents. (Radar bug #3217471).</LI>
5756 </UL>
5758 <H5><FONT SIZE="+1">Changes since the last release (cctools-465 for
5759 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5761 <UL>
5762 <LI>Added the .p2align&#91;wl&#93; directives to the assembler
5763 which take the form:
5765 <UL>
5766 <LI>.p2align&#91;wl&#93; align, &#91;fill&#91;,
5767 max_bytes_to_fill&#93;&#93;</LI>
5768 </UL>
5770 <P>and allows a maximum number of bytes to fill to be specified.
5771 (Radar bug #3207027).</P></LI>
5773 <LI>Fixed a bug in otool(1)'s disassembly of "movd -12(%ebp),
5774 %mm0" which was disassembling incorrectly without the
5775 displacement. (Radar bug #3206331).</LI>
5777 <LI>Changed the dynamic link editor to align its stack on a 16
5778 byte (SSE2) boundary. (Radar bug #3204580).</LI>
5780 <LI>Changed the static link editor's handing of begin include/end
5781 include stab groups (BINCL/ENCL) such that if the starting BINCL
5782 has a non-zero checksum it is preserved and then the static link
5783 editor does not calculate the a checksum for the group. (Radar bug
5784 #3201935).</LI>
5786 <LI>Fixed the assembler's
5788 <UL>
5789 <LI>.fill repeat_expression , fill_size , fill_expression</LI>
5790 </UL>
5792 <P>directive where for a fill_size of anything but 1 it was is
5793 broken. (Radar bug #3201031).</P></LI>
5794 </UL>
5796 <H5><FONT SIZE="+1">Changes since the last release (cctools-464 for
5797 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5799 <UL>
5800 <LI>Fixed a spelling error in &lt;mach-o/loader.h&gt; in the
5801 MH_NOMULTIDEFS comment. (Radar bug #3198288).</LI>
5803 <LI>Added the API NSHasModInitObjectFileImage() to
5804 &lt;mach-o/dyld.h&gt;. (Radar bug #3196951).</LI>
5806 <LI>Updated the cctools-464 project to build with gcc-3.3.</LI>
5807 </UL>
5809 <H5><FONT SIZE="+1">Changes since the last release (cctools-462 for
5810 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5812 <UL>
5813 <LI>Added support for dynamic shared library stubs. (Radar bug
5814 #3193744).</LI>
5816 <LI>Implemented the NSGetSectionDataInObjectFileImage() API which
5817 was previously stubbed out. (Radar bug #3194204).</LI>
5818 </UL>
5820 <H5><FONT SIZE="+1">Changes since the last release (cctools-461 for
5821 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5823 <UL>
5824 <LI>Added the new NSLINKMODULE_OPTION_TRAILING_PHYS_NAME option to
5825 the NSLinkModule(3) to allow ZeroLink so it can specify both the
5826 logical name of the image and the physical name of the object file
5827 . (Radar bug #3190599).</LI>
5829 <LI>Fixed a problem with the static linker not correctly detecting
5830 the case when the relocated displacement of 14-bit PowerPC branch
5831 instruction did not reach. (Radar bug #3190434).</LI>
5832 </UL>
5834 <H5><FONT SIZE="+1">Changes since the last release (cctools-460 for
5835 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5837 <UL>
5838 <LI>Fixed a bug in install_name_tool(1) that caused it to crash
5839 when changing the shared library names to shorter names. (Radar
5840 bug #3161586).</LI>
5842 <LI>Changed the assembler to allow for the code generation for
5843 fix-n-continue to use symbol pointers for local symbols. (Radar
5844 bug #3182683).</LI>
5846 <LI>Added the new NSLINKMODULE_OPTION_DONT_CALL_MOD_INIT_ROUTINES
5847 option to the NSLinkModule(3) to not run module initializers to be
5848 used for fix-n-continue. (Radar bug #3183011).</LI>
5850 <LI>Fixed the building of libdyld so that it can be linked against
5851 without getting an out of date table of contents error. (Radar bug
5852 #3183053).</LI>
5853 </UL>
5855 <H5><FONT SIZE="+1">Changes since the last release (cctools-459 for
5856 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5858 <UL>
5859 <LI>Install the Tachyon special pre-release of dyld for zero-link
5861 /System/Library/PrivateFrameworks/ZeroLink.framework/Versions/A/Resources/dyld.
5862 (Radar bug #3180833).</LI>
5864 <LI>Implemented the following API's<BR>
5865 NSSymbolDefinitionCountInObjectFileImage<BR>
5866 NSSymbolDefinitionNameInObjectFileImage<BR>
5867 NSSymbolReferenceCountInObjectFileImage<BR>
5868 NSSymbolReferenceNameInObjectFileImage<BR>
5869 NSIsSymbolDefinedInObjectFileImage<BR>
5870 which were previously stubbed out. (Radar bug #3179011).</LI>
5872 <LI>Fixed a bug in the dynamic linker so that when the undefined
5873 handler loaded the needed symbol it would correctly check to see
5874 if there were any more undefined symbols and if not resume the
5875 program instead of exit. (Radar bug #3178607).</LI>
5876 </UL>
5878 <H5><FONT SIZE="+1">Changes since the last release (cctools-457 for
5879 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5881 <UL>
5882 <LI>Change the i386 assembler to not treat the pause instruction
5883 as optional so it can be assembled without requiring
5884 -force_cpusubtype_ALL (Radar bug #3173226).</LI>
5885 </UL>
5887 <H5><FONT SIZE="+1">Changes since the last release (cctools-456 for
5888 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5890 <UL>
5891 <LI>Implemented NSCreateObjectFileImageFromMemory() which was
5892 previously stubbed out. (Radar bug #3131622).</LI>
5894 <LI>Fixed a bug in the static link editor that was not removing
5895 the symbol stubs of private extern coalesced symbols when creating
5896 a single module dynamic library. (Radar bug #3163714).</LI>
5897 </UL>
5899 <H5><FONT SIZE="+1">Changes since the last release (cctools-455 for
5900 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5902 <UL>
5903 <LI>Changed the environment variable XBS_TRACE_BUNDLE_LOADER to
5904 LD_TRACE_BUNDLE_LOADER. Radar bug #3152604).</LI>
5906 <LI>Picked up the internal libsyminfo library which has API to
5907 extract export/import information from Mach-O files. (Radar bug
5908 #3145742).</LI>
5910 <LI>Backed out the change to the dynamic linker to force any
5911 module containing an initialization or termination routine to be
5912 fully bound when any symbol in the module is bound. This caused
5913 launch time regressions in programs not built with
5914 -prebind_all_twolevel_modules. (Radar bug #3158070).</LI>
5916 <LI>Fixed a bug in the dynamic linker that caused loading a bundle
5917 into a program that is built with -prebind_all_twolevel_modules to
5918 crash. (Radar bug #3148967).</LI>
5920 <LI>Fixed a bug in the redo_prebinding(3) API that incorrectly
5921 caused a error return in the case that there is a fat file that
5922 the architecture we don't care about which depends on a library in
5923 another fat file and the time stamps for the libraries don't match
5924 instead of ignoring it as it should. (Radar bug #3144552).</LI>
5925 </UL>
5927 <H5><FONT SIZE="+1">Changes since the last release (cctools-454 for
5928 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5930 <UL>
5931 <LI>Changed the seg_addr_table(1) tool to no longer require that
5932 the actual path of a dynamic library equals the install name of
5933 the dynamic library (Radar bug #3147668).</LI>
5935 <LI>Fixed a bug in the redo_prebinding code that would cause it to
5936 not correctly set the bits in the linked_module bit vector for
5937 modules referenced via private externs (Radar bug #3126383).</LI>
5938 </UL>
5940 <H5><FONT SIZE="+1">Changes since the last release (cctools-453 for
5941 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5943 <UL>
5944 <LI>Fixed a bug in otool(1)'s i386 disassembler when disassembling
5945 an instruction with a bad segment register encoding that caused it
5946 to crash (Radar bug #3144846).</LI>
5948 <LI>Fixed a bug in ld(1) when using the -m flag when there are
5949 multiply defined private external symbols that cause an internal
5950 error. (Radar bug #3143764).</LI>
5952 <LI>Change the assembler's .include directive to automatically
5953 find files in the same directotry as the file including it if
5954 assembled in a different directory (Radar bug #3139454).</LI>
5956 <LI>Change the assembler to no longer have a fixed sized input
5957 buffer so it can assembler the very long stabs lines generated by
5958 the compiler (Radar bug #3138898).</LI>
5960 <LI>Updated the prebinding release notes to reflect the change of
5961 the range of split address libraries from 10.1 to 10,2. (Radar bug
5962 #3135553).</LI>
5964 <LI>Fixed a bug in the seg_addr_table(1) tool that did not
5965 correctly generate an error message when a split library was
5966 allocated an address in the alternate area. (Radar bug
5967 #3138181).</LI>
5969 <LI>Fixed a bug in ld(1) when using the -i flag with a private
5970 external symbol that cause an internal error. (Radar bug
5971 #3134759).</LI>
5973 <LI>Changed the dynamic linker to force any module containing an
5974 initialization or termination routine to be fully bound when any
5975 symbol in the module is bound. The effect this will have is that
5976 if a C++ executable has a constructor the entire program will be
5977 fully bound at launch time. (Radar bug #3016816).</LI>
5978 </UL>
5980 <H5><FONT SIZE="+1">Changes since the last release (cctools-452 for
5981 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5983 <UL>
5984 <LI>Changed the dyld's dyld_mach_thread_self() to match the
5985 updated system's implementation to check if the port is not
5986 MACH_PORT_NULL before deallocating the port (Radar bug
5987 #3133910).</LI>
5988 </UL>
5990 <H5><FONT SIZE="+1">Changes since the last release (cctools-451 for
5991 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
5993 <UL>
5994 <LI>Fixed a bug in the bug fix for Radar bug #3124262 (below in
5995 cctools-451). This caused fix_prebinding to crash (Radar bug
5996 #3133589).</LI>
5997 </UL>
5999 <H5><FONT SIZE="+1">Changes since the last release (cctools-450 for
6000 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
6002 <UL>
6003 <LI>Fixed a bug in the redo_prebinding code that would cause it to
6004 loose the -prebind_all_twolevel_modules state if the binary had a
6005 new dependency (Radar bug #3124262).</LI>
6006 </UL>
6008 <H5><FONT SIZE="+1">Changes since the last release (cctools-449 for
6009 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
6011 <UL>
6012 <LI>Fixed a bug in the assembler that was incorrectly causing an
6013 error message for a section difference expresion using a symbol at
6014 the end of a section for a .lcomm symbol (Radar bug
6015 #3123561).</LI>
6017 <LI>Changed the static linker's default segment alignment for the
6018 i386 architecture is 4K instead of 8K (Radar bug #3120579).</LI>
6020 <LI>Fixed the i386 assembler so that the i386 movd instructions
6021 using GPR registers are assembled correctly (Radar bug
6022 #3117280).</LI>
6024 <LI>Fixed otool's disassembler so that the i386 movd instructions
6025 using GPR registers is correctly disassembled (Radar bug
6026 #3117176).</LI>
6028 <LI>Fixed the i386 assembler so that it will assemble mov to/from
6029 segment register instructions in 32-bit mode (Radar bug
6030 #3114720).</LI>
6032 <LI>Fixed the cctools Makefile so that the project can be built
6033 when in a directory which has a space in the name (Radar bug
6034 #3114622).</LI>
6036 <LI>Fixed ld(1)'s -S symbol stripping option to strip symbols in
6037 sections marked with the section attribute
6038 S_ATTR_STRIP_STATIC_SYMS (Radar bug #3114458).</LI>
6040 <LI>Fixed ld(1)'s -x symbol stripping option to strip private
6041 externs symbol that get turned into statics (Radar bug
6042 #3114182).</LI>
6044 <LI>Changed the ar(1) tool to deal with creating files on NFS
6045 servers that support file locking (Radar bug #3105943)</LI>
6046 </UL>
6048 <H5><FONT SIZE="+1">Changes since the last release (cctools-448 for
6049 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
6051 <UL>
6052 <LI>Changed the i386 assembler use the ALL subtype even if a
6053 processor specific instruction is used. And added the -arch i686
6054 flag to be the same as -arch pentpro flag (Radar bug
6055 #3111977)</LI>
6057 <LI>Fixed a memory leak in the dynamic linker with the
6058 NSUnLinkModule() API that leaked the memory for the moduleName
6059 parameter of the NSLinkModule() API (Radar bug #3073359).</LI>
6061 <LI>Changed the dynamic linker to use the prebinding of dynamic
6062 libraries loaded via runtime APIs if possible (Radar bug
6063 #3055389).</LI>
6065 <LI>Changed the gprof(1) man page to include "dyld(1) and the
6066 DYLD_IMAGE_SUFFIX environment variable" in the SEE ALSO section
6067 (Radar bug #2572028).</LI>
6069 <LI>Changed the assembler to generate an error message for a
6070 subtraction expression that uses a label at the end of a section
6071 and suggest how to create an assembly time constant expression
6072 (Radar bug #2259427).</LI>
6074 <LI>Changed the assembler error message for a non-relocatable
6075 subtraction expression to print the file and line number along
6076 with which symbol is undefined (Radar bug #2254439).</LI>
6077 </UL>
6079 <H5><FONT SIZE="+1">Changes since the last release (cctools-447 for
6080 the 5.12 MacOS June 2003 Developer release) </FONT></H5>
6082 <UL>
6083 <LI>Fixed nm(1) to print the OPT for the N_OPT stab gcc2_compiled.
6084 stab produced by the compiler (Radar bug #3104328).</LI>
6086 <LI>Fixed ld(1)'s -x option to strip out all stabs including the
6087 N_OPT gcc2_compiled. stab produced by the compiler (Radar bug
6088 #3104019).</LI>
6090 <LI>Changed the dynamic linker to make the internal routine
6091 relocate_symbol_pointers more efficient (Radar bug #3102491).</LI>
6093 <LI>Backed out the change in the dynamic linker to force any
6094 module containing an initialization or termination routine to be
6095 fully bound when any symbol in the module is bound. The original
6096 Radar bug was #3016816 but this change caused a preformance
6097 regression (Radar bug #3101666).</LI>
6099 <LI>Fixed the i386 assembler so it assembles the cmpxchg8b
6100 instruction correctly (Radar bug #3099684).</LI>
6102 <LI>Added the _dyld_get_image_header_containing_address() SPI that
6103 returns a pointer to the mach header if the address is a dyld
6104 image. See the dyld(3) man page for more detailes (Radar bug
6105 #2967928).</LI>
6107 <LI>Changed the dynamic linker to not leak memory when using the
6108 NSADDIMAGE_OPTION_WITH_SEARCHING option with NSAddImage() and
6109 loading a malformed library (Radar bug #2956804).</LI>
6110 </UL>
6112 <H5><FONT SIZE="+1">Changes since the last release (cctools-446 for
6113 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6115 <UL>
6116 <LI>Changed the NXGetArchInfoFromName() API to work with VEO
6117 binaries (Radar bug #3096745).</LI>
6119 <LI>Changed the dynamic linker to make the API
6120 _dyld_image_containing_address more efficient (Radar bug
6121 #3096691).</LI>
6123 <LI>Fixed a bug in the static link editor that was causing dynamic
6124 libraries that had nothing referenced in them that also were used
6125 indirectly that did have symbols indirectly referenced in them to
6126 be marked as weak libraries when they shouldn't have been, (Radar
6127 bug #3094497).</LI>
6129 <LI>Changed the dynamic linker to not cause fix_prebinding to be
6130 notified if the problem dynamic library is non-prebound (Radar bug
6131 #3091026).</LI>
6133 <LI>Changed the assembler to pad sections containing instructions
6134 with nops (Radar bug #3073763).</LI>
6136 <LI>Added the SPI _dyld_all_twolevel_modules_prebound() that can
6137 be used to check if all libraries are currently being used as
6138 two-level namespace libraires, are prebound and all modules in
6139 them are bound (Radar bug #3055372).</LI>
6141 <LI>Added the <B>-noprebind_all_twolevel_modules</B> flag that
6142 overrides the setting of the environment variable
6143 LD_PREBIND_ALL_TWOLEVEL_MODULES static linker (Radar bug
6144 #3055372).</LI>
6146 <LI>Changed the dynamic linker to force any module containing an
6147 initialization or termination routine to be fully bound when any
6148 symbol in the module is bound. The effect this will have is that
6149 if a C++ executable has a constructor the entire program will be
6150 fully bound at launch time. (Radar bug #3016816).</LI>
6151 </UL>
6153 <H2>Notes Specific to Release 5.11 (Mac OS X November 2002 Developer
6154 Release)</H2>
6156 <H5><FONT SIZE="+1">Changes since the last release (cctools-445 for
6157 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6159 <UL>
6160 <LI>Fixed a bug in the static linker that caused it to crash when
6161 an export lists was specified that did not include common symbols
6162 that was not dynamically referenced. (Radar bug #3088916).</LI>
6164 <LI>Changed the static linker so that the <B>-s</B> option can
6165 when used building an executable that uses the dynamic linker that
6166 results in the same size output as <I>strip</I>(1) with no options
6167 (Radar bug #3089997).</LI>
6169 <LI>Changed libtool(1) so that it passes the -x option to the
6170 static linker (Radar bug #3088301).</LI>
6172 <LI>Changed the i386 assembler so that it allows all of the
6173 supported operands to the cmpxchg8b (Radar bug #3089041).</LI>
6174 </UL>
6176 <H5><FONT SIZE="+1">Changes since the last release (cctools-444 for
6177 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6179 <UL>
6180 <LI>Changed the static linker so that the <B>-s</B> option can be
6181 used when building an executable that uses the dynamic linker that
6182 results in the same output as <I>strip</I>(1) with no options
6183 (Radar bug #2545288).</LI>
6184 </UL>
6186 <H5><FONT SIZE="+1">Changes since the last release (cctools-443 for
6187 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6189 <UL>
6190 <LI>Export lists can now be specified to the static link editor
6191 with the new options <B>-exported_symbols_list </B><I>filename
6192 </I>and<I> </I><B>-unexported_symbols_list </B><I>filename</I>.
6193 See the ld(1) man page for more details. (Radar bug
6194 #3083844).</LI>
6196 <LI>Fixed a bug in the seg_addr_table(1) tool that was causing it
6197 to crash when the -release does not have a DylibProjects file in
6198 its directory. (Radar bug #3079374).</LI>
6200 <LI>Fixed a bug in the static linker when doing an ld(1) -r
6201 building kexts where a jbsr to a symbol that is undefined in
6202 output file is relocated wrong (Radar bug #3054747).</LI>
6204 <LI>Fixed the formating on the arch(3) man page (Radar bug
6205 #2903710).</LI>
6206 </UL>
6208 <H5><FONT SIZE="+1">Changes since the last release (cctools-442 for
6209 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6211 <UL>
6212 <LI>The static link editor can now build dynamic libraries as a
6213 single module with the new option -single_moule. The default
6214 remains the same and can explicitly specified with -multi_module.
6215 (Radar bug #3080780).</LI>
6216 </UL>
6218 <H5><FONT SIZE="+1">Changes since the last release (cctools-441 for
6219 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6221 <UL>
6222 <LI>Fixed the ld(1) man page to not reference the obsolete
6223 CALL_ON_MODULE_BIND pragma where it now references the current
6224 CALL_ON_LOAD pragma (Radar bug #3078181).</LI>
6226 <LI>Changed where the i386 assembler gets installed so it will be
6227 on the developer CD and not in the Local package (Radar bug
6228 #3074138).</LI>
6230 <LI>Changed the i386 assembler to take an fxch instruction with no
6231 operands (Radar bug #3073760).</LI>
6232 </UL>
6234 <H5><FONT SIZE="+1">Changes since the last release (cctools-439 for
6235 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6237 <UL>
6238 <LI>Fixed the headers (and source code) so that they won't get the
6239 "extra tokens at end of #endif directive" warnings (Radar bug
6240 #3072042).</LI>
6241 </UL>
6243 <H5><FONT SIZE="+1">Changes since the last release (cctools-438 for
6244 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6246 <UL>
6247 <LI>Added support for the VEO cpu type (Radar bug #3068161).</LI>
6249 <LI>Added the install_name(3) API for extracting install_name
6250 value from dylibs to libredo_prebinding (Radar bug #3065586).</LI>
6252 <LI>Changed the needs_redo_prebinding(3) API to check all archs if
6253 allow_missing_archs is zero (Radar bug #3065577).</LI>
6255 <LI>Changed the libtool(1) command to allow the -no_arch_warnings
6256 option as a no-op when -dynamic is specified (Radar bug
6257 #3064819).</LI>
6259 <LI>Changed the static link editor to remove partial output files
6260 when coredumping (Radar bug #3062745).</LI>
6262 <LI>Made a fix to the a bug fix in cctools-436 for Radar bug
6263 #3037279 in the static link editor that was not removing a symbol
6264 stubs for private weak definitions (Radar bug #3054990).</LI>
6266 <LI>Fixed a bug in the static link editor that fail to mark a
6267 dynamic library weak if all of the references to it were weak when
6268 the library had internal references (Radar bug #3051119).</LI>
6270 <LI>Updated the code in the make_dyld_image_data_writable(3) dyld
6271 debug API to use the dyld preferred address in Mac OS X 10.2 as
6272 its initial guess when scaning memory looking for dyld (Radar bug
6273 #3042819).</LI>
6275 <LI>Removed the support for the dyld DYLD_MEM_PROTECT feature
6276 (Radar bug #3035901).</LI>
6278 <LI>Added support for the Intel SSE2/SSE/MMX instructions in
6279 otool(1)'s disassembler (Radar bug #2972491).</LI>
6281 <LI>Finished the support for the Intel SSE2/SSE/MMX instructions
6282 in the assembler (Radar bug #2972486).</LI>
6284 <LI>Added the .align32 assembler directive that takes a 32bit fill
6285 value for use by the compiler with -falign-loops. (Radar bug
6286 #2680692).</LI>
6287 </UL>
6289 <H5><FONT SIZE="+1">Changes since the last release (cctools-437 for
6290 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6292 <UL>
6293 <LI>Added the value 10.3 to be one of the known values allowed for
6294 environment variable MACOSX_DEPLOYMENT_TARGET (Radar bug
6295 #3049974).</LI>
6296 </UL>
6298 <H5><FONT SIZE="+1">Changes since the last release (cctools-436 for
6299 the 5.11 MacOS November 2002 Developer release) </FONT></H5>
6301 <UL>
6302 <LI>Added most of the Intel SSE2/SSE/MMX instructions to the
6303 assembler (Radar bug #2972486).</LI>
6305 <LI>Fixed many bugs in ld(1) and kld(3) having to do with the
6306 relocation of the PowerPC pseudo instruction jbsr which are
6307 generated with the compiler -mlong_branch option (Radar bug
6308 #3046962).</LI>
6310 <LI>Changed the cctools project to not build a -static compiled
6311 libredo_prebinding library (Radar bug #3000895).</LI>
6313 <LI>Updated the nm(1) tool to print the new stab entry containing
6314 full compiler flags, compiler version and the optimization level
6315 (Radar bug #3000792).</LI>
6317 <LI>Fixed a bug the static link editor that can cause it to crash
6318 when dealing with a truncated dynamic library (Radar bug
6319 #2999466).</LI>
6321 <LI>Fixed the static link editor error message handling of an
6322 archive that does not have the needed architecture when the
6323 -no_arch_warnings is used (Radar bug #2986587).</LI>
6325 <LI>Fixed a crash that can occur in the nmedit(1) tool if the list
6326 of symbols contains duplicate symbol names (Radar bug
6327 #2962899).</LI>
6328 </UL>
6330 <H5><FONT SIZE="+1">Changes since the last release (cctools-435 for
6331 the 5.10 MacOS 10.2 release) </FONT></H5>
6333 <UL>
6334 <LI>Fixed a bug the static link editor that was incorrectly
6335 removing a symbol stub for a weak definition (Radar bug
6336 #3037279).</LI>
6337 </UL>
6339 <H1>Notes Specific to Release 5.10 (Mac OS X 10.2)</H1>
6341 <H3><FONT SIZE="+1">New Features</FONT></H3>
6343 <H3><FONT SIZE="+1">The dynamic linker now supports weak references
6344 and weak dylibs</FONT></H3>
6346 <P>The dynamic linker now supports weak symbol references and weak
6347 dymamic libraries. When creating a binary with the static link editor
6348 if all the symbols referenced from a given dependent dynamic library
6349 are weak references then the library is marked weak. When the binary
6350 is used at execution time and a weak library is missing the dynamic
6351 linker will not cause an error. For all weak symbols that are missing
6352 execution time the dynamic linker uses zero as their address. This
6353 allows a weak symbol's address to be tested for zero at runtime
6354 allowing the code to avoid using the weak symbol when it is missing.
6355 Binaries that use weak references require a dynamic linker from Mac
6356 OS X 10.2 or later.</P>
6358 <P>To indicate a symbol is to be a weak reference the
6359 __attribute((weak_import)) is used on the prototype of the symbol.
6360 When a binary is created by the static link editor normally the all
6361 the undefined symbol references of the object files being linked
6362 should be consistent for each undefined symbol. That is all undefined
6363 symbols should either be weak or non-weak references. If they are not
6364 by default this is treated as an error and can be changed with the
6365 ld(1) <B>-weak_reference_mismatches</B> <I>treatment</I> flag (see
6366 the ld(1) man page for more details).</P>
6368 <P>Weak referenced symbols and weak libraries are only created in the
6369 output by the static link editor, <I>ld</I>(1), when the
6370 MACOSX_DEPLOYMENT_TARGET environment variable is set to 10.2. If not
6371 a warning is generated when a weak reference would be in the output
6372 and it is not marked weak. Note the default for the
6373 MACOSX_DEPLOYMENT_TARGET environment variable 10.1 so weak referenced
6374 symbols and weak libraries are not created by default. See the
6375 <I>ld</I>(1) man page for more information on the
6376 MACOSX_DEPLOYMENT_TARGET environment variable.</P>
6378 <H3><FONT SIZE="+1">redo_prebinding can now slide dylibs</FONT></H3>
6380 <P>The <I>redo_prebinding</I>(1) command and the
6381 <I>redo_prebinding</I>(3) API now can slide dymamic libraries to new
6382 prefered addresses (see the man page for more details).</P>
6384 <H3><FONT SIZE="+1">Support for weak definitions in coalesced
6385 sections</FONT></H3>
6387 <P>There is now support for the <I>.weak_definition</I>
6388 <B>symbol_name</B> assembler directive for symbols in a coalesced
6389 section. This is used by the C++ compiler to support explicit
6390 template instantiation. The assembler symtax for this is:</P>
6392 <BLOCKQUOTE>.section __TEXT, __template, coalesced<BR>
6393 .private_extern _template_func<BR>
6394 .weak_definition _template_func<BR>
6395 _template_func:<BR>
6396 li r3,1<BR>
6397 blr</BLOCKQUOTE>
6399 <P>The compiler uses a coalesced section with the
6400 <I>.weak_definition</I> directive for implicitly instantiated
6401 templates. And uses a regualr section (.text, .data, etc) for an
6402 explicit template instantiation.</P>
6404 <P>The static link editor then discards all of the copies of a weak
6405 symbol in a coalesced section if the same symbol is defined in
6406 another section. If there exists only definitions of the weak symbols
6407 in a coalesced section then the one from the first object file being
6408 linked will be used and the others will be discarded.</P>
6410 <P>The support for flat namespace images using weak symbols from a
6411 coalesced section is likely to be buggy as the semantics for it and
6412 lazy binding are not well defined.</P>
6414 <H5><FONT SIZE="+1">Changes since the last releases (cctools-434 for
6415 the 5.10 MacOS 10.2 release) </FONT></H5>
6417 <UL>
6418 <LI>Change redo_prebinding(1)(3) to not attempt to redo the
6419 prebinding on any file that has a resource fork. (Radar bug
6420 #2987656).</LI>
6422 <LI>Fixed a bug in the redo_prebinding(3) APIs of
6423 get_prebind_cksums() and object_file_type() where its error
6424 handling code was causing a crash in processing the error. (Radar
6425 bug #2992414).</LI>
6426 </UL>
6428 <H5><FONT SIZE="+1">Changes since the last releases (cctools-433 for
6429 the 5.10 MacOS 10.2 release) </FONT></H5>
6431 <UL>
6432 <LI>Fixed a bug in the nmedit(1) tool when the -p option was used
6433 that incorrectly changed the indirect symbol table entries to be
6434 marked as INDIRECT_SYMBOL_LOCAL which it shouldn't do when the -p
6435 option is used. (Radar bug #2986703).</LI>
6436 </UL>
6438 <H5><FONT SIZE="+1">Changes since the last releases (cctools-432 for
6439 the 5.10 MacOS 10.2 release) </FONT></H5>
6441 <UL>
6442 <LI>Changed the dynamic linker handling of global coalesced
6443 symbols in two-level prebound images to be faster. (Radar bug
6444 #2951657).</LI>
6445 </UL>
6447 <H5><FONT SIZE="+1">Changes since the last releases (cctools-431 for
6448 the 5.10 MacOS 10.2 release) </FONT></H5>
6450 <UL>
6451 <LI>Change libtool(1) when the -static is in effect to not copy a
6452 dynamic library file that is on the command line into the output
6453 file. (Radar bug #2970223).</LI>
6455 <LI>Fixed a bug in the static link editor that was incorrectly
6456 setting the weak definition bit on an undefined symbol. (Radar bug
6457 #2969501).</LI>
6459 <LI>Fixed a bug in the static link editor that was incorrectly
6460 produce the error message "illegal reference to symbol defined in
6461 indirectly referenced dynamic library" when the -r option was
6462 used. (Radar bug #2969437).</LI>
6464 <LI>Fixed a crash in the static link editor that was introduced
6465 with the change for Radar bug #2969353. (Radar bug #2969353).</LI>
6466 </UL>
6468 <H5><FONT SIZE="+1">Changes since the last releases (cctools-430 for
6469 the 5.10 MacOS 10.2 release) </FONT></H5>
6471 <UL>
6472 <LI>Fixed a bug in the static link editor that caused it to
6473 produce the internal error message:
6475 <P>ld: internal error: output_section() count of external
6476 relocation entries does not match</P>
6478 <P>when the input object files contained a reference to a
6479 coalesced symbol and a definition of the symbol in a different
6480 object file and -bundle was used.(Radar bug #2963045).</P></LI>
6481 </UL>
6483 <H5><FONT SIZE="+1">Changes since the last releases (cctools-427,8,9
6484 for the 5.10 MacOS 10.2 release) </FONT></H5>
6486 <UL>
6487 <LI>Changed the nmedit(1) tool so that with the -s option when run
6488 on MH_OBJECT files it turns global coalesced symbols into static
6489 symbols. (Radar bug #2957909).</LI>
6490 </UL>
6492 <H5><FONT SIZE="+1">Changes since the last release (cctools-426 for
6493 the 5.10 MacOS 10.2 release) </FONT></H5>
6495 <UL>
6496 <LI>Fixed a bug in the static linker, ld(1), when creating a
6497 two-level namespace image where it was producing a bad image when
6498 a symbol from an object was discared and became an illegal
6499 reference to an indirectly referenced dylib. (Radar bug
6500 #2956332).</LI>
6502 <LI>Changed the nmedit(1) tool so that with the -p option it turns
6503 global coalesced symbols into private extern symbols. (Radar bug
6504 #2956057).</LI>
6505 </UL>
6507 <H5><FONT SIZE="+1">Changes since the last release (cctools-425 for
6508 the 5.10 MacOS 10.2 release) </FONT></H5>
6510 <UL>
6511 <LI>The fix below in the static linker, ld(1), was still
6512 incomplete. If multiple weak private externs are seen then a
6513 non-weak global symbol was seen it was also have the same problem.
6514 (Radar bug #2952209).</LI>
6515 </UL>
6517 <H5><FONT SIZE="+1">Changes since the last release (cctools-424 for
6518 the 5.10 MacOS 10.2 release) </FONT></H5>
6520 <UL>
6521 <LI>The fix below in the static linker, ld(1), was incomplete. If
6522 the second symbol came from a dynamic library or the
6523 -bundle_loader argument it was also have the same problem. (Radar
6524 bug #2952209).</LI>
6525 </UL>
6527 <H5><FONT SIZE="+1">Changes since the last release (cctools-423 for
6528 the 5.10 MacOS 10.2 release) </FONT></H5>
6530 <UL>
6531 <LI>Fixed a bug in the static linker, ld(1), when creating a
6532 dynamic library. The bug was when the static linker first sees a
6533 weak private extern symbol from an object file, which is later
6534 discarded for a non-weak symbol the resulting dynamic library has
6535 the wrong reference type for the symbol in the module created for
6536 the object file with the weak private extern symbol. This would
6537 result in a error of the form: (Radar bug #2952209).
6539 <UL>
6540 <LI>ld: /usr/local/lib/private/libstdc++.dylib(strstream.o)
6541 isym field (2683) of reference table entry 609 for private
6542 reference not in the local symbols for any module</LI>
6543 </UL>
6544 </LI>
6545 </UL>
6547 <H5><FONT SIZE="+1">Changes since the last release (cctools-422 for
6548 the 5.10 MacOS 10.2 release) </FONT></H5>
6550 <UL>
6551 <LI>Re-fixed a bug in the dynamic linker that caused it to crash
6552 if it loaded an image with a zero sized segment. (Radar bug
6553 #2931784).</LI>
6555 <LI>Changed the dynamic linker's default error handling to cause a
6556 break point trap instead of exiting. (Radar bug #2405619).</LI>
6557 </UL>
6559 <H5><FONT SIZE="+1">Changes since the last release (cctools-421 for
6560 the 5.10 MacOS 10.2 release) </FONT></H5>
6562 <UL>
6563 <LI>Fixed a small memory leak when malformed library is loaded via
6564 a search path in the dynamic linker. (Radar bug #2914747).</LI>
6566 <LI>Added some pentium pro instructions to the Intel assembler and
6567 disassembler in otool(1). (Radar bug #2928507).</LI>
6569 <LI>Added the section attribute strip_static_syms to be used by
6570 the compiler for the C++ exception frame section. This will cause
6571 the static symbols in that section to be stripped by the strip(1)
6572 tool when they are in a binary built for the dynamic linker.
6573 (Radar bug #2945659).</LI>
6574 </UL>
6576 <H5><FONT SIZE="+1">Changes since the last release (cctools-420 for
6577 the 5.10 MacOS 10.2 release) </FONT></H5>
6579 <UL>
6580 <LI>Changed the dynamic linker to use the mach service interface
6581 for the prebinding on demand feature to allow dyld to send a mach
6582 message to a server registered with the bootstrap port. (Radar bug
6583 #2944779).</LI>
6585 <LI>Changed the dynamic linker to not trigger the prebinding on
6586 demand feature when the program is not using the system shared
6587 regions. (Radar bug #2942209).</LI>
6589 <LI>Added the new -nofixprebinding option to ld(1) to be used when
6590 building the tool fix_prebinding(1). Since this is likely not to
6591 be needed by any other program it will need to be passed to ld(1)
6592 via the -Wl,-nofixprebinding compiler driver flag. (Radar bug
6593 #2941669).</LI>
6595 <LI>Added the new -relayout_nonsplit option to the
6596 seg_addr_table(1) tool that could be run in tandem with the
6597 -update_overlaps option to assign new addresses to all flat
6598 libraries and fix up any overlaps found in the split region.
6599 (Radar bug #2935630).</LI>
6601 <LI>Fixed a bug in the redo_prebinding(3) APIs where calling a
6602 sequence of the redo_prebinding(3) APIs caused one of the later
6603 API to give the wrong answer. (Radar bug #2933102).</LI>
6605 <LI>Changed the libkld libraries to not call the routine
6606 reset_prebound_undefines() to avoid a possible kernel panic.
6607 (Radar bug #2931331).</LI>
6609 <LI>Changed the way the gprof(1) tool reads the gmon.out file to
6610 be faster. (Radar bug #2876478).</LI>
6611 </UL>
6613 <H5><FONT SIZE="+1">Changes since the last release (cctools-419 for
6614 the 5.10 MacOS 10.2 release) </FONT></H5>
6616 <UL>
6617 <LI>Fixed a problem introduced in cctools-419 where the libkld
6618 libraries had an undefined symbol for get_output_section. (Radar
6619 bug #2936244</LI>
6621 <LI>Changed the libtool(1) command to take and pass through the
6622 ld(1) -M option. (Radar bug #2935497).</LI>
6624 <LI>Updated the size(1) man page in include the description of te
6625 -arch flag that was missing from the man page. (Radar bug
6626 #2934869).</LI>
6628 <LI>Changed the return values for redo_prebinding(3) API's for
6629 statically linked executables. So needs_redo_prebinding(3) returns
6630 NOT_PREBINDABLE and redo_prebinding(3) when the only_if_needed
6631 parameter is non-zero returns REDO_PREBINDING_NOT_NEEDED. (Radar
6632 bug #2934831).</LI>
6633 </UL>
6635 <H5><FONT SIZE="+1">Changes since the last release (cctools-418 for
6636 the 5.10 MacOS 10.2 release) </FONT></H5>
6638 <UL>
6639 <LI>Fixed a bug in the dynamic linker that caused it to crash if
6640 it loaded an image with a zero sized segment. (Radar bug
6641 #2931784).</LI>
6643 <LI>Fixed a bug in the static link editor that caused it to
6644 produce a bad object file with the -r option if the input object
6645 files contained a weak coalesced symbol and a non-weak symbol that
6646 has a reference to the symbol coalesced symbol. (Radar bug
6647 #2931708).</LI>
6648 </UL>
6650 <H5><FONT SIZE="+1">Changes since the last release (cctools-417 for
6651 the 5.10 MacOS 10.2 release) </FONT></H5>
6653 <UL>
6654 <LI>Changed the assembler to not cause an error if a section
6655 attribute is used with out -dynamic. (Radar bug #2929120).</LI>
6657 <LI>Changed the dynamic linker to ignore any filename that is
6658 matched when using a DYLD PATH environment variable that is a
6659 directory. (Radar bug #2917660).</LI>
6660 </UL>
6662 <H5><FONT SIZE="+1">Changes since the last release (cctools-416 for
6663 the 5.10 MacOS 10.2 release) </FONT></H5>
6665 <UL>
6666 <LI>Fixed a bug in the static linker that would cause incorrect
6667 "illegal reference" error messages (Radar bug #2925564).</LI>
6669 <LI>Changed the compiler tools project to build a -static compiled
6670 version of libredo_prebinding for fix_prebinding(1) to link with
6671 when it is compiled -static. (Radar bug #2922145).</LI>
6673 <LI>Changed the dynamic linker to never run fix_prebinding(1) when
6674 any of its DYLD PATH or INSERT environment variables are set.
6675 (Radar bug #2921735).</LI>
6676 </UL>
6678 <H5><FONT SIZE="+1">Changes since the last release (cctools-415 for
6679 the 5.10 MacOS 10.2 release) </FONT></H5>
6681 <UL>
6682 <LI>Changed the static linker to not generate multiply defined
6683 warnings and errors when one of the multiple symbols comes from a
6684 indirectly referenced dynamic library (Radar bug #2921080).</LI>
6686 <LI>Changed the support for weak coalesced symbols to not use the
6687 <I>weak_definitions</I> attribute for coalesced sections but use a
6688 <I>.weak_definition</I> <B>symbol_name</B> assembler directive
6689 (see the notes above for the new features) (Radar bug
6690 #2919646).</LI>
6692 <LI>Fixed a bug in ld(1) where it was incorrectly generating a
6693 warning message about archives that did not match the -arch flag
6694 when the -no_arch_warnings flag was specified.(Radar bug
6695 #2918296).</LI>
6697 <LI>Fixed a bug in the redo_prebinding(3) API when the
6698 allow_missing_architectures prarmeter was non-zero and one of the
6699 dependent library's architecture was missing. The code incorrectly
6700 updated the timestamp in the dylib for all architectutes when it
6701 should not have done this for architectures it did not update the
6702 prebinding. (Radar bug #2914003).</LI>
6704 <LI>Fixed a bug in the PowerPC assembler that did not correctly
6705 generate an error when a 5 parameter instruction had more than 5
6706 parameters (Radar bug #2911611).</LI>
6708 <LI>Added the -m option to otool(1) to not treat the filenames
6709 containing parenthesis as archive and an archive member syntax
6710 Radar bug #2904708).</LI>
6711 </UL>
6713 <H5><FONT SIZE="+1">Changes since the last release (cctools-414 for
6714 the 5.10 MacOS 10.2 release) </FONT></H5>
6716 <UL>
6717 <LI>Fixed a bug in the static linker that would cause incorrect
6718 "illegal reference to a coalesced section" error messages when a
6719 symbol from a regular section is used in place of discarded symbol
6720 in a coalesced section with the weak_definitions attribute (Radar
6721 bug #2911339).</LI>
6723 <LI>Changed the i386 assembler to assemble fildll and fistpll as
6724 fildq and fistpq (Radar bug #2909568).</LI>
6726 <LI>Changed the incomplete implementation of dlopen()'s dlsym()
6727 routine to append '_' to names passed to it (Radar bug
6728 #2908831).</LI>
6730 <LI>Fixed a bug in the redo_prebinding(1)(3) code where it would
6731 not preserve all two-level modules as linked if an executable was
6732 built with -prebind_all_twolevel_modules flag (Radar bug
6733 #2909518).</LI>
6735 <LI>Fixed a bug in the dynamic linker that would caused undefined
6736 symbol errors from sub-libraries when the DYLD_IMAGE_SUFFIX
6737 environment variable is used (Radar bug #2906863).</LI>
6739 <LI>Fixed a bug in the PowerPC assembler that did not correctly
6740 set the branch hints bit for some conditional branches (Radar bug
6741 #2905071).</LI>
6743 <LI>Re-fixed a bug in the dynamic linker where it would get a
6744 malloc(3) double free(3) error with the NSAddImage(3) API when the
6745 NSADDIMAGE_OPTION_WITH_SEARCHING is specified and the library was
6746 searched for and found to already be loaded. (Radar bug
6747 #2892860).</LI>
6748 </UL>
6750 <H5><FONT SIZE="+1">Changes since the last release (cctools-413 for
6751 the 5.10 MacOS 10.2 release) </FONT></H5>
6753 <UL>
6754 <LI>Added support for weak_definitions in coalesced sections (see
6755 the notes above for the new features). (Radar bug #2898558).</LI>
6757 <LI>The DYLD_TRACE variable has been turned back off by default
6758 (Radar bug #2859113).</LI>
6760 <LI>Fixed a bug in the dynamic linker where it would get a
6761 malloc(3) double free(3) error with the NSAddImage(3) API when the
6762 NSADDIMAGE_OPTION_WITH_SEARCHING is specified and the library was
6763 searched for and found to already be loaded. (Radar bug
6764 #2892860).</LI>
6766 <LI>Fixed a bug in needs_redo_prebinding(3), and
6767 redo_prebinding(1)(3) where it would not determine the file needs
6768 to be rebuilt when its dependent libraries install names changed
6769 (Radar bug #2894021).</LI>
6771 <LI>Fixed some bugs in the cctools code base where there could be
6772 a possible leak of a Mach privileged host port. (Radar bug
6773 #2895931).</LI>
6775 <LI>Changed the <I>seg_addr_table</I>(1) tool's default starting
6776 address for allocating flat shared libraries to 0x8fe00000 not
6777 0x7fe00000. Also changed the default address of dyld to 0x8fe00000
6778 not 0x7fe00000. (Radar bug #2897418).</LI>
6780 <LI>Added a check in the static link editor, ld(1), to not allow a
6781 shared library to be linked against another shared library that
6782 has the same install name.. (Radar bug #2890446).</LI>
6784 <LI>Fixed a bug in the PowerPC assembler in the range checking for
6785 16 bit branch displacements so the maximum negative range is not
6786 treated as an error. (Radar bug #2890217).</LI>
6788 <LI>Changed the <I>dyld</I>(1) man page to be clearer on what the
6789 otool -L option does. (Radar bug #2710374).</LI>
6790 </UL>
6792 <H5><FONT SIZE="+1">Changes since the last release (cctools-412 for
6793 the 5.10 MacOS 10.2 release) </FONT></H5>
6795 <UL>
6796 <LI>Fixed the <I>seg_addr_table</I>(1) tool's default starting
6797 address for allocating flat shared libraries to 0x7fe00000 not
6798 0x7ffc0000. Also changed the default address of dyld to 0x7fe00000
6799 not 0x7ffc0000. (Fix to Radar bug #2848945).</LI>
6800 </UL>
6802 <H5><FONT SIZE="+1">Changes since the last release (cctools-411 for
6803 the 5.10 MacOS 10.2 release) </FONT></H5>
6805 <UL>
6806 <LI>Changed the cctools project to no longer build the file(1)
6807 command. This is now done by the by the System Commands project.
6808 (Radar bug #2883427).</LI>
6810 <LI>Fixed a bug in the dynamic link editor's error handling of
6811 unknown load commands with the LC_REQ_DYLD bit set. This only
6812 showed up with RETURN_ON_ERROR options to the dyld APIs. (Radar
6813 bug #2882932).</LI>
6815 <LI>Fixed some some problems with mutiple calls to the
6816 redo_prebinding(3) routines that did not correctly reset the
6817 initial state later calls did not work correctly. (Radar bug
6818 #2882844).</LI>
6820 <LI>Changed the dynamic link editor's internal handling of the
6821 DYLD_INSERT_LIBRARIES string to match what gdb(1) wants. It now
6822 copies the string and replaces the colon characters with null
6823 characters. (Radar bug #2882739).</LI>
6825 <LI>Changed the static link editor, <I>ld</I>(1), to generate an
6826 error message when too many sections are used. (Radar bug
6827 #2882553).</LI>
6829 <LI>Changed the seg_addr_table(1) command to not cause an error
6830 when dylibs in the seg_addr_table are not found when the tool is
6831 run in the -update or -update_overlaps mode. (Radar bug
6832 #2882324).</LI>
6834 <LI>Added the -sect_diff_relocs flag and LD_SECT_DIFF_RELOCS
6835 environment variable to ld(1) to allow checking that things were
6836 compiled with -mdynamic-no-pic (see the man page for more
6837 details). (Radar bug #2870529).</LI>
6839 <LI>Changed the strings(1) command to process non-object files by
6840 default as if the '-' (single dash) option were given. (Radar bug
6841 #2868578).</LI>
6843 <LI>Fixed some spelling errors in the dyld(1), dylibprof(1), ld(1)
6844 and nmedit(1). (Radar bugs #2854497, #2854501, #2854516 and
6845 #2854539).</LI>
6846 </UL>
6848 <H5><FONT SIZE="+1">Changes since the last release (cctools-410 for
6849 the 5.10 MacOS 10.2 release) </FONT></H5>
6851 <UL>
6852 <LI>Changed the <I>seg_addr_table</I>(1) tool's default address
6853 ranges for allocating shared libraries (see the
6854 <I>seg_addr_table</I>(1) man page for details). Also changed the
6855 default address of dyld to 0x7ffc0000. Once the shared libaries
6856 have been moved to the new addresses this will allow a larger
6857 maximum limit for malloc()'s by a program (Radar bug
6858 #2848945).</LI>
6860 <LI>Removed the dummy versions of __isinfd(), __isnand() and
6861 __inf() from dyld as these were put back in libc.a .</LI>
6862 </UL>
6864 <H5><FONT SIZE="+1">Changes since the last release (cctools-409 for
6865 the 5.10 MacOS 10.2 release) </FONT></H5>
6867 <UL>
6868 <LI>Changed dyld to defined dummy versions of __isinfd(),
6869 __isnand() and __inf() deal with these symbols being moved out of
6870 libc.a</LI>
6871 </UL>
6873 <H5><FONT SIZE="+1">Changes since the last release (cctools-408 for
6874 the 5.10 MacOS 10.2 release) </FONT></H5>
6876 <UL>
6877 <LI>Added the second prototype of prebinding on demand code to
6878 dyld. This still uses vfork and execl to run
6879 /usr/bin/fix_prebinding for binaries that were launch and the
6880 prebinding information could not be used (Radar bug
6881 #2870411).</LI>
6883 <LI>Fixed a case where __initialize_Cplusplus() fails to call the
6884 library's initializers (Radar bug #2869388).</LI>
6886 <LI>Fixed a spelling error in man page for libtool (Radar bug
6887 #2856089) and one in the ld man page (Radar bug #2775049).</LI>
6888 </UL>
6890 <H5><FONT SIZE="+1">Changes since the last release (cctools-407 for
6891 the 5.10 MacOS 10.2 release) </FONT></H5>
6893 <UL>
6894 <LI>Added the first prototype of prebinding on demand code to
6895 dyld. This uses vfork and execl to run /usr/bin/fix_prebinding for
6896 binaries that were launch and the prebinding information could not
6897 be used (Radar bug #2866348).</LI>
6898 </UL>
6900 <H5><FONT SIZE="+1">Changes since the last release (cctools-406 for
6901 the 5.10 MacOS 10.2 release) </FONT></H5>
6903 <UL>
6904 <LI>Removed the proto type support for -run_init_lazily which was
6905 trying to allow a shared library routine to be marked to have its
6906 initialization routine run on first use of the library by the
6907 program rather than at program start up when the program is
6908 launched prebound. This prototype code caused a second thread to
6909 be created to handle the memory exception. Since the support for
6910 doing this without a second thread is not to be done (see Radar
6911 bug #2552042) this prototype code has been removed (Radar bug
6912 #2864021).</LI>
6913 </UL>
6915 <H5><FONT SIZE="+1">Changes since the last release (cctools-405 for
6916 the 5.10 MacOS 10.2 release) </FONT></H5>
6918 <UL>
6919 <LI>Changed <I>dependent_libs</I>(3) to work for MH_BUNDLE type
6920 objects (Radar bug #2862297).</LI>
6921 </UL>
6923 <H5><FONT SIZE="+1">Changes since the last release (cctools-404 for
6924 the 5.10 MacOS 10.2 release) </FONT></H5>
6926 <UL>
6927 <LI>Fixed a bug in the change to <I>strip</I>(1) introduced in
6928 cctools-404 fix (Radar bug #2860291).</LI>
6929 </UL>
6931 <H5><FONT SIZE="+1">Changes since the last release (cctools-403 for
6932 the 5.10 MacOS 10.2 release) </FONT></H5>
6934 <UL>
6935 <LI>Fixed a bug in the change to <I>strip</I>(1) introduced in
6936 cctools-402 that was causing some symbols not to be saved and
6937 generating an errror message stating "symbols referenced by
6938 indirect symbol table entries that can't be stripped" (Radar bug
6939 #2860291).</LI>
6941 <LI>Fixed the <I>libredo_prebinding.a</I> library to not export
6942 the <I>_crc32</I> symbol (Radar bug #2859919).</LI>
6944 <LI>Fixed a bug in <I>NSLookupSymbolInImage</I>(3) when that
6945 caused it to crash when the image was the executable or a bundle
6946 (not a shared library) when the symbol being looked up was not
6947 found (Radar bug #2857197).</LI>
6948 </UL>
6950 <H5><FONT SIZE="+1">Changes since the last release (cctools-402 for
6951 the 5.10 MacOS 10.2 release) </FONT></H5>
6953 <UL>
6954 <LI>Changed the cctools project to conform to the Darwin Makefile
6955 API so that "make" builds everything and "make install" builds
6956 everything and installs things into "/" (or into the value of
6957 $(DSTROOT) if set) (Radar bug #2859138).</LI>
6959 <LI>Fixed a bug in the <I>needs_redo_prebinding</I>(3) API when
6960 the allow_missing_architectures parameter was set that did not
6961 check the specified architecture and returned the wrong value
6962 (Radar bug #2836068).</LI>
6964 <LI>Changed the use of #import to #include in the header files
6965 mach-o/i386/swap.h and mach-o/ppc/swap.h (Radar bug
6966 #2778821).</LI>
6967 </UL>
6969 <H5><FONT SIZE="+1">Changes since the last release (cctools-401 for
6970 the 5.10 MacOS 10.2 release) </FONT></H5>
6972 <UL>
6973 <LI>Changed <I>strip</I>(1) to strip private externs that were
6974 turned into statics that are in a dynamic library that are not
6975 referenced by a module other than where the symbols is defined.
6976 (Radar bug #2853161).</LI>
6978 <LI>Changed "it's" to "its" on the nmedit man page (Radar bug
6979 #2420515).</LI>
6980 </UL>
6982 <H5><FONT SIZE="+1">Changes since the last release (cctools-400 for
6983 the 5.10 MacOS 10.2 release) </FONT></H5>
6985 <UL>
6986 <LI>Added the i386 instruction <I>fistp</I> to be the same as
6987 <I>fistps</I> since gcc3 generates this form. (Radar bug
6988 #2851846).</LI>
6989 </UL>
6991 <H5><FONT SIZE="+1">Changes since the last release (cctools-399 for
6992 the 5.10 MacOS 10.2 release) </FONT></H5>
6994 <UL>
6995 <LI>Changed the <I>checksyms</I>(1) tool and removed the checks to
6996 see that the address(es) of a shared library matches the entries
6997 in the segment address table specified (Radar bug #2847857).</LI>
6999 <LI>Changed the <I>seg_addr_table</I>(1) tool in the
7000 <B>-update</B> or <B>-update_overlapps</B> cases to not fail if a
7001 dynamic library in the table does not exist (Radar bug
7002 #2848667).</LI>
7004 <LI>Added the new <I>throttle</I> parameter to the
7005 <I>redo_prebinding</I>(3) API for use by a prebinding agent to
7006 allow it throttle its I/O and not impact other applications when
7007 running in the back ground (Radar bug #2850642).</LI>
7009 <LI>Fixed a bug in the strip(1) command that caused it to crash
7010 when run with no options on a framework. This was a regression
7011 introduced in cctools-394 in the changes to strip coalesced
7012 symbols that are not used with indirect symbols which was Radar
7013 bug #2689894. (Radar bug #2851013).</LI>
7014 </UL>
7016 <H5><FONT SIZE="+1">Changes since the last release (cctools-398 for
7017 the 5.10 MacOS 10.2 release) </FONT></H5>
7019 <UL>
7020 <LI>Changed <I>seg_addr_table</I>(1) tool in the <B>-update</B> or
7021 <B>-update_overlapps</B> cases to not check that non-zero
7022 addresses in the table match the addresses in the dynamic library
7023 file (Radar bug #2841199).</LI>
7025 <LI>Changed the assembler's line buffer size from 32k to 64k to
7026 allow long .stab lines created with GCC3 to be assembled. (Radar
7027 bug #2840883).</LI>
7028 </UL>
7030 <H5><FONT SIZE="+1">Changes since the last release (cctools-397 for
7031 the 5.10 MacOS 10.2 release) </FONT></H5>
7033 <UL>
7034 <LI>Fixed the redo_prebinding(1)(3) code to only load a library
7035 only once for libraries that have have mutiple names via symlinks
7036 (Radar bug #2839783).</LI>
7037 </UL>
7039 <H5><FONT SIZE="+1">Changes since the last release (cctools-396 for
7040 the 5.10 MacOS 10.2 release) </FONT></H5>
7042 <UL>
7043 <LI>Changed the needs_redo_prebinding(3) API to be able to ignore
7044 missing architectures with the addition of the new
7045 allow_missing_architectures parameter (Radar bug #2836068).</LI>
7047 <LI>Added a version number to the redo_prebinding API's (Radar bug
7048 #2836572).</LI>
7050 <LI>The DYLD_TRACE variable has been turned on by default in the
7051 dynamic linker for Jaguar development (Radar bug #2836321).</LI>
7053 <LI>Changed the static link editor to no longer print warnings
7054 about unused mutiply defined symbols by default. The new
7055 -multiply_defined_unused treatment flag can be used to re-enable
7056 this warning (Radar bug #2835152).</LI>
7058 <LI>The DYLD_BOOL macro was removed from the header file
7059 &lt;mach-o/dyld.h&gt;(Radar bug #2831923).</LI>
7061 <LI>The new mechanism to control the use of incompatible features
7062 in produced by the devenv tools using the MACOSX_DEPLOYMENT_TARGET
7063 environment variable has been implemented in <I>ld</I>(1) and
7064 controls the output of weak references &amp; libraries and the
7065 prebind checksum load command. See the <I>ld</I>(1) man page for
7066 more details (Radar bug #2830042).</LI>
7068 <LI>The SPI <I>_NSGetExecutablePath</I>(3) was added to return
7069 full path of the executable. See the <I>NSModule</I>(3) man page
7070 for more details (Radar bug #2432816).</LI>
7072 <LI>The message in the static link editor, <I>ld</I>(1), "Logging
7073 for Build &amp; Integration&#93; Used dynamic library:
7074 <I>filename</I>" was changed again slightly to print the
7075 <I>realname</I>(2) of the file <I>open</I>(2)'ed for
7076 <I>filename</I> and not the install name (Radar bug
7077 #2826775).</LI>
7078 </UL>
7080 <H5><FONT SIZE="+1">Changes since the last release (cctools-395 for
7081 the 5.10 MacOS 10.2 release) </FONT></H5>
7083 <UL>
7084 <LI>The <I>seg_addr_table</I>(1) tool was changed to not use the
7085 SYMROOT file when <B>-update_overlaps</B> is used (Radar bug
7086 #2826945).</LI>
7088 <LI>The message in the static link editor, <I>ld</I>(1), "Logging
7089 for Build &amp; Integration&#93; Used dynamic library:
7090 <I>filename</I>" was changed to print the name of the file
7091 <I>open</I>(2)'ed for <I>filename</I> and not the install name
7092 (Radar bug #2826775).</LI>
7094 <LI>Added the new <I>allow_missing_architectures</I> parameter to
7095 the <I>redo_prebinding</I>(3) API for use by update_prebinding(1)
7096 to use to allow it not to fail when redoing the prebinding of a
7097 file that has missing architectures other than the host machine
7098 (Radar bug #2809673).</LI>
7100 <LI>Added the new assembler directive .weak_symbol symbol_name to
7101 the assembler for use by the compiler when it sees a reference to
7102 a symbol that has the __attribute__((weak_import)).</LI>
7104 <LI>Added the <B>-weak_reference_mismatches</B> <I>treatment</I>
7105 flag to the static linker, <I>ld</I>(1). That specifies how to
7106 treat mismatches of symbol references in the the object files
7107 being linked. See the <I>ld</I>(1) man page for more details.</LI>
7109 <LI>Added the -s flag to <I>ar</I>(1) to run <I>ranlib</I>(1) to
7110 produce a table of contents (Radar bug #2814831).</LI>
7111 </UL>
7113 <H5><FONT SIZE="+1">Changes since the last release (cctools-394 for
7114 the 5.10 MacOS 10.2 release) </FONT></H5>
7116 <UL>
7117 <LI>Fixed a bug in redo_prebinding(1)&amp;(3) that should not have
7118 been checking for symbols being overridden from flat-libraries
7119 (like libMallocDebug) in two-level namespace libraries.</LI>
7121 <LI>Changed as(1) man page to correctly reference the assember
7122 manual in /Developer/Documentation/DeveloperTools/Assembler (Radar
7123 bug #2803486).</LI>
7124 </UL>
7126 <H5><FONT SIZE="+1">Changes since the last release (cctools-393 for
7127 the 5.10 MacOS 10.2 release) </FONT></H5>
7129 <UL>
7130 <LI>Added LD_FORCE_NO_PREBIND environment variable to the static
7131 link editor, <I>ld</I>(1), to override the command line and the
7132 LD_PREBIND environment variable (Radar bug #2814402).</LI>
7134 <LI>Changed the .Os macros in nlist(3), stab(5), ranlib(5) to use
7135 Darwin (Radar bug #2813834).</LI>
7137 <LI>Fixed a bug in redo_prebinding(1)&amp;(3) that should not have
7138 been checking for symbols being overridden in two-level namespace
7139 images.</LI>
7141 <LI>Changed the strip(1) command to strip coalesced symbols that
7142 are not used with indirect symbols (Radar bug #2689894).</LI>
7144 <LI>Changed the cctools project to build the static link editor,
7145 <I>ld</I>(1), that outputs LC_PREBIND_CKSUM and LC_LOAD_WEAK_DYLIB
7146 commands only when RC_RELEASE is Proton or Jaguar.</LI>
7148 <LI>Change the static linker to not put out a LC_LOAD_WEAK_DYLIB
7149 load command for a library unless some thing is used from the
7150 library (or sub-images) and all references are weak. This avoid
7151 using LC_LOAD_WEAK_DYLIB load commands for umbrella frameworks and
7152 libraries.</LI>
7154 <LI>Added support in the code of the <I>redo_prebinding</I>(1)
7155 command and the code of the <I>redo_prebinding</I>(3) API for weak
7156 symbols and weak libraries (Radar bug #2803414).</LI>
7157 </UL>
7159 <H5><FONT SIZE="+1">Changes since the last release (cctools-392 for
7160 the 5.10 MacOS 10.2 release) </FONT></H5>
7162 <UL>
7163 <LI>Added support in the dynamic linker for weak symbols and weak
7164 libraries. As well as support in the static link editor to mark a
7165 dynamic library as weak when all symbols used from it are marked
7166 weak. Other object file tools, <I>otool</I>(1), <I>nm</I>(1),
7167 etc., have also been updated as needed to support binaries with
7168 weak symbols and weak libraries.</LI>
7170 <LI>Fixed a bug that caused the static link editor to crash when
7171 the option <B>-prebind_all_twolevel_modules</B> was used.</LI>
7173 <LI>Changed the cctools project to no longer install the rld(3)
7174 man page and removed references to rld from the nmedit(1) and
7175 strip(1) man pages (Radar bug #2784528).</LI>
7176 </UL>
7178 <H5>=<FONT SIZE="+1">Changes since the last release (cctools-391 for
7179 the 5.10 MacOS 10.2 release) </FONT></H5>
7181 <UL>
7182 <LI>The tool <I>dhecksyms</I>(1) was changed to not use the
7183 "libfoo.a(bar.o)" syntax to specify an archive member but rather
7184 take the string as a file name (Radar bug #2730127).</LI>
7185 </UL>
7187 <H5><FONT SIZE="+1">Changes since the last release (cctools-390 for
7188 the 5.10 MacOS 10.2 release) </FONT></H5>
7190 <UL>
7191 <LI>The man pages for <I>Mach-O</I>(5), <I>ranlib</I>(5),
7192 <I>stabs</I>(5) and <I>nlist</I>(3) were moved to the cctools
7193 project from the man project and updated (Radar bug
7194 #2793998).</LI>
7195 </UL>
7197 <H5><FONT SIZE="+1">Changes since the last release (cctools-389 for
7198 the 5.10 MacOS 10.2 release) </FONT></H5>
7200 <UL>
7201 <LI>Added the <I>install_name_tool</I>(1) that changes the recored
7202 install names of dynamic shared libraries in Mach-O binaries. See
7203 the <I>install_name_tool</I>(1) man page for more details.</LI>
7204 </UL>
7206 <H5><FONT SIZE="+1">Changes since the last release (cctools-388 for
7207 the 5.10 MacOS 10.2 release) </FONT></H5>
7209 <UL>
7210 <LI>Fixed a bug in the static link editor that caused it to create
7211 binaries that had a bad load command with a zero size. This only
7212 happened when the binary was attempted to be prebound and the
7213 prebinding was disabled due to segment overlapps.</LI>
7215 <LI>Added the <B>-headerpad_max_install_names</B> flag to the
7216 static link editor, <I>ld</I>(1), that will add enough extra
7217 padding to the header pad needed to allow all install names in the
7218 output file being created to be later changed to be as long as
7219 MAXPATHLEN. Until Radar bug #2791100 is fixed passing this linker
7220 flag through the compiler driver <I>cc</I>(1) has to be done with
7221 driver flag -Wl,<B>-headerpad_max_install_names</B>.</LI>
7223 <LI>Added the <B>-D</B> option to the <I>otool</I>(1) to print out
7224 just the install name of the LC_ID_DYLIB load command of a dynamic
7225 shared library.</LI>
7227 <LI>Changed the <I>nmedit</I>(1) and <I>strip</I>(1) programs to
7228 not back set the modify time by 5 seconds for file that do not
7229 contain archives (Radar bug #2788034).</LI>
7231 <LI>Fixed a bug in the <I>kld</I>(3) library code that was
7232 incorrectly setting the MH_TWOLEVEL flag in the mach header of
7233 kernel drivers (Radar bug #2787764).</LI>
7235 <LI>Fixed a bug in the <I>redo_prebinding</I>(1)(3) code that was
7236 not correctly checking the LIBRARY_ORDINAL of undefined symbols in
7237 executables for the reserved value SELF_LIBRARY_ORDINAL (a value
7238 of zero) which is only used in dynamic shared libraries. This bug
7239 caused <I>update_prebinding</I>(1) program to crash when it ran as
7240 part of installing an iDVD pacakge with a malformed executable
7241 (Radar bug #2787021).</LI>
7243 <LI>Changed the PowerPC assembler to not treat the fsel
7244 instruction as optional so it can be used without specifing
7245 <B>-force_cpusubtype_ALL</B>.</LI>
7247 <LI>Added the option <B>-prebind_all_twolevel_modules</B> to the
7248 static link editor that causes all modules from two-level
7249 namespace prebound libraries to be marked as used by the program.
7250 This can also be specified with the environment variable
7251 <B>LD_PREBIND_ALL_TWOLEVEL_MODULES</B> (Radar bug #2784627). Until
7252 Radar bug #2791100 is fixed passing this linker flag through the
7253 compiler driver <I>cc</I>(1) has to be done with driver flag
7254 -Wl,<B>-prebind_all_twolevel_modules</B>.</LI>
7255 </UL>
7257 <H5><FONT SIZE="+1">Changes since the last release (cctools-387 for
7258 the 5.10 MacOS 10.2 release) </FONT></H5>
7260 <UL>
7261 <LI>To allow tbe MacOS X build system to support dynamic libraries
7262 who's install names do not match their file system paths the
7263 <I>seg_addr_table</I>(1) command was changed so that if the
7264 install name starts with <B>@executable_path</B> then the checks
7265 for the install name matching the name in the table entry is not
7266 done.</LI>
7268 <LI>Fixed the spelling of "inconsistent" in <I>otool</I>(1) error
7269 messages (Radar bug #2783706).</LI>
7271 <LI>Changed the use of #import to #include in the header files in
7272 the mach-o directory and added guards to the needed header files
7273 to prevent multiple includes (Radar bug #2778821).</LI>
7274 </UL>
7276 <H5><FONT SIZE="+1">Changes since the last release (cctools-386 for
7277 the 5.10 MacOS 10.2 release) </FONT></H5>
7279 <UL>
7280 <LI>To allow tbe MacOS X build system to support dynamic libraries
7281 who's install names do not match their file system paths the
7282 <B>-seg_addr_table_filename</B> <I>pathname</I> flag was added to
7283 the <I>ld</I>(1)<I>, redo_prebinding</I>(1), <I>checkyms</I>(1)
7284 and <I>check_dylib</I>(1) commands. This flag is optional and if
7285 not passed the install name of the dynamic library is used. For
7286 <I>check_dylib</I>(1) this flag is required. One other change to
7287 <I>check_dylib</I>(1) is that if the install name starts with
7288 <B>@executable_path</B> then the checks for the install name
7289 matching the <B>-install_name</B> argument is not done. See man
7290 pages on these command for details. Until Radar bug #2772574 is
7291 fixed passing the linker flag <B>-seg_addr_table_filename</B>
7292 <I>pathname</I> through the compiler driver <I>cc</I>(1) has to be
7293 done with driver flag
7294 -Wl,<B>-seg_addr_table_filename</B>,<I>pathname.</I></LI>
7296 <LI>To allow java system to have the ablity to change the Java
7297 VM's at runtime to include other java libraries linked with libjvm
7298 the NSADDIMAGE_OPTION_MATCH_FILENAME_BY_INSTALLNAME option to the
7299 NSAddImage(3) API was added. See the NSModule(3) man page for
7300 details on this option to this API.</LI>
7302 <LI>Fixed it so that when prebinding against a dynamic library
7303 with multiple cpusubtypes the case where the program could crash
7304 if run on a cpusubtype other than the one it was prebound no
7305 longer crashes. The fix involves running <I>strip</I>(1) or
7306 <I>nmedit</I>(1) on the dynamic library with multiple cpusubtypes
7307 (Radar bug #2676444).</LI>
7309 <LI>Fixed a grammatical error in an error message of
7310 redo_prebinding(3) (Radar bug #2764926).</LI>
7312 <LI>Fixed a bug in the static linker for PowerPC conditional
7313 branches where the prediction would get changed incorrectly (Radar
7314 bug #2765281).</LI>
7315 </UL>
7317 <H5><FONT SIZE="+1">Changes since the last release (cctools-385 for
7318 the 5.10 MacOS 10.2 release) </FONT></H5>
7320 <UL>
7321 <LI>Added a pre-redo_prebinding checksum to binraries that get
7322 prebound as a new load command. When a prebound file is created or
7323 modified by any tool other than redo_prebinding the tool sets the
7324 value of the checksum in the load command to zero. When
7325 redo_prebinding is run on a binary if the checksum value is zero
7326 it calculates the checksum and stores that in the load command in
7327 the output it creates. If when redo_prebinding is run on a binary
7328 the checksum value is not zero it does not change the checksum
7329 value. The <I>redo_prebinding</I>(1) command has a new <B>-z</B>
7330 option and the t<I>redo_prebinding</I>(3) API has a new
7331 <B>zero_out_prebind_checksum</B> parameter to allow the B&amp;I
7332 tools to always zero this out. The new routine
7333 <I>get_prebind_cksums</I>(3) has been added to the
7334 libredo_prebinding.a library.</LI>
7335 </UL>
7337 <H5><FONT SIZE="+1">Changes since the last release (cctools-384 for
7338 the 5.9 MacOS 10.1 release) </FONT></H5>
7340 <UL>
7341 <LI>Added the <B>-seg_addr_table</B> <I>filename</I> option to the
7342 <I>redo_prebinding</I>(1) command (Radar bug #2575205).</LI>
7344 <LI>The <I>redo_prebinding</I>(3) <B>slide_to_address</B>
7345 parameter when non-zero now slides a dynamic library to that new
7346 prefered address. Also the new <B>only_if_needed</B> parameter has
7347 been added to the <I>redo_prebinding</I>(3) API and the API now
7348 returns an enum value. The <I>needs_redo_prebinding</I>(3) API now
7349 has a new unsigned long parameter <B>expected_address</B>. The new
7350 routine <I>object_file_type</I>(3) has been added to the
7351 libredo_prebinding.a library. (Radar bug #2575205 and
7352 #2729976).</LI>
7353 </UL>
7355 <H3><FONT SIZE="+2">Notes Specific to Release 5.9 (MacOS X
7356 10.1)</FONT></H3>
7358 <H3><FONT SIZE="+1">New Features</FONT></H3>
7360 <H3><FONT SIZE="+1">Two level namespace</FONT></H3>
7362 <P>Work on the compiler tools to support two level name space is now
7363 complete and -twolevel_namespace is now the default (Radar bugs
7364 2372124 and 2415916). See the Public release notes for the
7365 details.</P>
7367 <H5><FONT SIZE="+1">Changes since the last release (cctools-383 for
7368 the 5.9 MacOS 10.1 release) </FONT></H5>
7370 <UL>
7371 <LI>Fixed the change to the header file &lt;mach-o/dyld.h&gt; that
7372 added extern "C" ifdef'ed with __cplusplus that had an extra
7373 trailing semicolon after the closing curly brace (Radar bug
7374 #2748160).</LI>
7375 </UL>
7377 <H5><FONT SIZE="+1">Changes since the last release (cctools-382 for
7378 the 5.9 MacOS 10.1 release) </FONT></H5>
7380 <UL>
7381 <LI>Changied the semantic of NSLookupSymbolInImage() and
7382 NSIsSymbolNameDefinedInImage() to ignore the specified image if it
7383 is not a private image if DYLD_FORCE_FLAT_NAMESPACE is set (Radar
7384 bug #2731330).</LI>
7385 </UL>
7387 <H5><FONT SIZE="+1">Changes since the last release (cctools-381 for
7388 the 5.9 MacOS 10.1 release) </FONT></H5>
7390 <UL>
7391 <LI>Fixed a bug introduced in cctools-381 that caused libkld to
7392 have an undefined symbol _twolevel_namespace_hints.</LI>
7394 <LI>Picked up the Compiler Tools release notes edits from tech
7395 pubs (Radar bug #2739023).</LI>
7396 </UL>
7398 <H5><FONT SIZE="+1">Changes since the last release (cctools-380 for
7399 the 5.9 MacOS 10.1 release) </FONT></H5>
7401 <UL>
7402 <LI>Changed the dynamic linker and the
7403 NSCreateObjectFileImageFromFile(3) API to allow for a mechanism
7404 for "future compatibility" when adding new load commands to the
7405 Mach-O object file format (Radar bug #2737644).</LI>
7406 </UL>
7408 <H5><FONT SIZE="+1">Changes since the last release (cctools-379 for
7409 the 5.9 MacOS 10.1 release) </FONT></H5>
7411 <UL>
7412 <LI>Added the flag <B>-twolevel_namespace_hints</B> to the static
7413 link editor. This specifies to create the output with the
7414 two-level namespace hints table to be used by the dynamic linker.
7415 This is the default except when the <B>-bundle</B> flag is
7416 specified. If this is used when the <B>-bundle</B> flag is
7417 specified the bundle will fail to load on a MacOS X 10.0 system
7418 with a malformed object error. Radar bug #2735266.</LI>
7419 </UL>
7421 <H5><FONT SIZE="+1">Changes since the last release (cctools-378 for
7422 the 5.9 MacOS 10.1 release)</FONT></H5>
7424 <UL>
7425 <LI>Changed the dynamic linker to not unnecessarily touches link
7426 edit pages for the module table of dynamic libraries when a
7427 dynamic library does not have any module initialization and
7428 termination routines (Radar bug #2732714).</LI>
7429 </UL>
7431 <H5><FONT SIZE="+1">Changes since the last release (cctools-377 for
7432 the 5.9 MacOS 10.1 release)</FONT></H5>
7434 <UL>
7435 <LI>Changed the header file &lt;mach-o/dyld.h&gt; to have extern
7436 "C" ifdef'ed with __cplusplus (Radar bug #2728016).</LI>
7437 </UL>
7439 <H5><FONT SIZE="+1">Changes since the last release (cctools-376 for
7440 the 5.9 MacOS 10.1 release)</FONT></H5>
7442 <UL>
7443 <LI>Fixed a problems with the cctools-376 project not building its
7444 cctools_ofiles target due to the changes made for Radar bug
7445 #2716249 (Radar bug #2727607).</LI>
7447 <LI>Fixed a bug in the dynamic linker that caused programs to
7448 crash when DYLD_IMAGE_SUFFIX was used (Radar bug #2724475).</LI>
7449 </UL>
7451 <H5><FONT SIZE="+1">Changes since the last release (cctools-375 for
7452 the 5.9 MacOS 10.1 release)</FONT></H5>
7454 <UL>
7455 <LI>Fixed the static link editor that caused it to crash when the
7456 -Y flag was used with two-level namespace libraries introduced
7457 with the fix in cctools-375 below for Radar bug #2716249.</LI>
7458 </UL>
7460 <H5><FONT SIZE="+1">Changes since the last release (cctools-374 for
7461 the 5.9 MacOS 10.1 release)</FONT></H5>
7463 <UL>
7464 <LI>Fixed the PowerPC assembler to protect the short-form macros
7465 which is needed so they do not incorrectly expand under certain
7466 circumstances (Radar bug #2717461).</LI>
7468 <LI>Removed the dependency on libstreams by the assemblers so
7469 nothing in the cctools project depends on</LI>
7471 <LI>Fixed the static link editor to correctly deal with the
7472 semantics of two-level namespace libraries so it won't build
7473 programs that would fail to launch correctly flagging multiply
7474 defined and undefined symbol errors (Radar bug #2716249).</LI>
7475 </UL>
7477 <H5><FONT SIZE="+1">Changes since the last release (cctools-373 for
7478 the 5.9 MacOS 10.1 release)</FONT></H5>
7480 <UL>
7481 <LI>Fixed a bug in the dynamic linker that caused programs to get
7482 undefined symbols or crash (in one of dyld's symbol lookup
7483 routines) if the program or one of the libraries had been built
7484 with two-level namespace hints.</LI>
7486 <LI>Fixed a bug in the dynamic linker that caused the Puma5E9
7487 DirectoryService daemon thread count grows unbounded. Radar bug
7488 #2716915</LI>
7490 <LI>Fixed a bug in the optimization to use two-level namespace
7491 prebound libraries in the dynamic linker that caused programs to
7492 crash when using the DYLD_*_PATH enironment variables.</LI>
7493 </UL>
7495 <H5><FONT SIZE="+1">Changes since the last release (cctools-372 for
7496 the 5.9 MacOS 10.1 release)</FONT></H5>
7498 <UL>
7499 <LI>Changed the static link editor to have -twolevel_namespace as
7500 the default (Radar bug #2717678)</LI>
7501 </UL>
7503 <H5><FONT SIZE="+1">Changes since the last release (cctools-371 for
7504 the 5.9 MacOS 10.1 release)</FONT></H5>
7506 <UL>
7507 <LI>Added the optimization to use two-level namespace hints to the
7508 dynamic linker (Radar bug #2558069).</LI>
7510 <LI>Added the -update_overlaps option to the seg_addr_table(1)
7511 tool.</LI>
7512 </UL>
7514 <H5><FONT SIZE="+1">Changes since the last release (cctools-370 for
7515 the 5.9 MacOS 10.1 release)</FONT></H5>
7517 <UL>
7518 <LI>Added the optimization to use two-level namespace prebound
7519 libraries to the dynamic linker.</LI>
7521 <LI>Changed the static link editor to log the used of the
7522 -bundle_loader argument with the environment variable
7523 XBS_TRACE_BUNDLE_LOADER set (Radar bug #2710229)</LI>
7525 <LI>Changed the dynamic linker to not leak a send port right on
7526 the thread it is doing an operation for (Radar bug #2704241).</LI>
7528 <LI>Fixed a bug in the tool redo_prebinding(1) so it uses "up to
7529 date" not "uptodate" in its error messages (Radar bug
7530 #2711451).</LI>
7531 </UL>
7533 <H5><FONT SIZE="+1">Changes since the last release (cctools-369.3 for
7534 the 5.9 MacOS 10.1 release)</FONT></H5>
7536 <UL>
7537 <LI>Changed the compiler tools to produce, update, pass through
7538 and print a two-level namespace hints lookup table (Radar bug
7539 #2558069). The dynamic linker does not yet use this table (that
7540 will be done in a subsequent release of cctools).</LI>
7542 <LI>Added the <B>-nomultidefs</B> flag to the the static link
7543 editor. Specifying this flag marks the umbrella being created such
7544 that the dynamic linker is guaranteed that no multiple defintions
7545 of symbols in the umbrella's sub-images will ever exist. This
7546 allows the dynamic linker to always use the two-level namespace
7547 lookup hints even if the timestamps of the sub-images do not
7548 match. This should be used with all Apple umbrellas. This has to
7549 be used with <B>-Wl,-nomultidefs</B> with the compiler driver,
7550 <I>cc</I>(1), until Radar bug #2705158 is fixed.</LI>
7551 </UL>
7553 <H5><FONT SIZE="+1">Changes since the last release (cctools-369.2 for
7554 the 5.9 MacOS 10.1 release)</FONT></H5>
7556 <UL>
7557 <LI>Fixed a bug in the tool redo_prebinding(1) that produced an
7558 incorrect error message when run on a binary with debugging
7559 symbols. The incorrect error message reported the file as
7560 malformed because of a bad LIBRARY_ORDINAL in a symbol table
7561 entry.</LI>
7562 </UL>
7564 <H5><FONT SIZE="+1">Changes since the last release (cctools-369.1 for
7565 the 5.9 MacOS 10.1 release)</FONT></H5>
7567 <UL>
7568 <LI>Fixed a bug in the dynamic linker when an umbrella library for
7569 a two-level namspace library is loaded after the two-level
7570 namspace library is initally loaded. This would cause refernces
7571 from from sub libraries of the umbrella to symbols in the
7572 two-level library to crash (Radar bug #2706662) .</LI>
7573 </UL>
7575 <H5><FONT SIZE="+1">Changes since the last release (cctools-369 for
7576 the 5.9 MacOS 10.1 release)</FONT></H5>
7578 <UL>
7579 <LI>Re-fixed the bug in the dynamic linker API
7580 NSLookupSymbolInImage() where if called from a shared library init
7581 routine it would relocate the library module a second time causing
7582 pointers to have twice their values and the program to crash.</LI>
7584 <LI>Changed the dynamic linker API NSLookupSymbolInImage() to
7585 allow it to take a pointer to the mach header of the executable or
7586 a bundle as well as dynamic libraries.</LI>
7587 </UL>
7589 <H5><FONT SIZE="+1">Changes since the last release (cctools-368 for
7590 the 5.9 MacOS 10.1 release)</FONT></H5>
7592 <UL>
7593 <LI>Fixed a bug in the the tool redo_prebinding(1) with undefined
7594 symbol references from two-level images where the definition of
7595 the symbol is in a sub-framework of a flat namespace umbrella
7596 framework would come up undefined.</LI>
7598 <LI>Fixed a bug in the dynamic linker API NSLookupSymbolInImage()
7599 where if called from a shared library init routine it is possible
7600 that it can return a non-NULL NSSymbol but a call to
7601 NSAddressOfSymbol() or other uses of that NSSymbol may not work
7602 (in the case of NSAddressOfSymbol() it returns NULL).</LI>
7604 <LI>Picked up the new rld interfaces kld_load_from_memory &amp;
7605 kld_load_basefile_from_memory (see the rld(3) man page for more
7606 information).</LI>
7607 </UL>
7609 <H5><FONT SIZE="+1">Changes since the last release (cctools-367 for
7610 the 5.9 MacOS 10.1 release)</FONT></H5>
7612 <UL>
7613 <LI>Fixed a bug in the static link editor that would cause it to
7614 crash when using -bundle_loader and doing a cross bytesex link
7615 (using -arch i386 while linking on a PowerPC machine for
7616 example).</LI>
7617 </UL>
7619 <H5><FONT SIZE="+1">Changes since the last release (cctools-366 for
7620 the 5.9 MacOS 10.1 release)</FONT></H5>
7622 <UL>
7623 <LI>Added the -sub_library flag to the static linker and all the
7624 support needed in cctools for it. This is needed to allow
7625 Foundation to lhave libobjc treated as a sub-umbrella (Radar bug
7626 #2697458). For now this must be passed using cc(1) with
7627 -Wl,-sub_library,library_name until and if Radar bug #2699511 is
7628 fixed.</LI>
7630 <LI>Fixed a bug in the redo_prebinding(3) APIs that did not
7631 deallocate a buffer if the open(2) or write(2) fails for it is
7632 output (Radar bug #2691920).</LI>
7634 <LI>Fixed a bug static linker that with -twolevel_namespace it did
7635 not search the sub-umbrella's in the same order as the dynamic
7636 linker.</LI>
7637 </UL>
7639 <H5><FONT SIZE="+1">Changes since the last release (cctools-365 for
7640 the 5.9 MacOS 10.1 release)</FONT></H5>
7642 <UL>
7643 <LI>Fixed a bug in the dynamic linker with undefined symbol
7644 references from two-level images where the definition of the
7645 symbol is in a sub-framework of a flat namespace umbrella
7646 framework would come up undefined.</LI>
7647 </UL>
7649 <H5><FONT SIZE="+1">Changes since the last release (cctools-364 for
7650 the 5.9 MacOS 10.1 release)</FONT></H5>
7652 <UL>
7653 <LI>Added the dynamic linker API's NSAddImage(),
7654 NSLookupSymbolInImage() and NSIsSymbolNameDefinedInImage() for use
7655 in doing two-levelnamespace lookups. For more information see the
7656 NSModule(3) man page (Radar bug #2689833).</LI>
7658 <LI>Fixed a bug in the dynamic linker when
7659 NSLINKMODULE_OPTION_RETURN_ON_ERROR option of the NSLinkModule()
7660 API is used and plugins fail to load it can later cause the
7661 program to crash (Radar bug #2665925).</LI>
7662 </UL>
7664 <H5><FONT SIZE="+1">Changes since the last release (cctools-363 for
7665 the 5.9 MacOS 10.1 release)</FONT></H5>
7667 <UL>
7668 <LI>Added the -prebind_allow_overlap to the static linker, which
7669 causes it to prebind the output even if the addresses of the
7670 dynamic libraries it uses overlap. The resulting output can then
7671 have redo_prebinding(1) run on it to fix up the prebinding after
7672 the overlapping dynamic libraries have been rebuilt. This option
7673 can also be specified by setting the environment variable
7674 LD_PREBIND_ALLOW_OVERLAP. It is intended for use only in
7675 B&amp;I.</LI>
7677 <LI>Changed NXFindBestFatArch() which had a problem with selecting
7678 the PowerPC cpusubtype when an exact match could not be found. See
7679 Radar bug #2678019 against exec(2) which is the same problem as
7680 this but in the exec code.</LI>
7682 <LI>Changed NXCombineCpuSubtypes() for the PowerPC to select the
7683 highest subtype when there is not an exact match and neither is a
7684 601.</LI>
7686 <LI>Fixed a bug in the dynamic linker when DYLD_LIBRARY_PATH ended
7687 in a ':' that caused it to crash (Radar bug #2676732).</LI>
7689 <LI>Fixed a bug in the dynamic linker when a module from a
7690 prebound dynamic library wasn't originally used by the program was
7691 later dynamically bound and referenced another prebound dynamic
7692 library that also was not originally used that had a C++
7693 constuctor which was not called when the first symbol was
7694 dynamically bound (Radar bug #2650066).</LI>
7696 <LI>Fixed a bug in the dynamic linker that caused prebound dynamic
7697 libraries that had nmedit(1) run on it to not be relocated
7698 correctly and cause the code in them to crash (Radar bug
7699 #2676317).</LI>
7701 <LI>Picked up the change suggested in Radar bug #2686444 which
7702 makes the dynamic linker recurse too much for its algorithm to use
7703 the header dependencices instead of the symbol dependencies when
7704 calling library init routines which was added for Radar bug
7705 #2571628.</LI>
7707 <LI>Picked up a change to the PowerPC assembler adds the 4-arg
7708 option to rlwinm and friends, and uses mask-&gt;mb/me (Radar bug
7709 #2684824).</LI>
7711 <LI>Fixed a bug in the assembler when a ".=value" was past the
7712 value of the current location counter and caused the assembler to
7713 crash (Radar bug #2682911).</LI>
7714 </UL>
7716 <H5><FONT SIZE="+1">Changes since the last release (cctools-362 for
7717 the 5.9 MacOS 10.1 release)</FONT></H5>
7719 <UL>
7720 <LI>Picked up the change suggested in Radar bug #2667248 which is
7721 a small speed up to dyld locking.</LI>
7723 <LI>Picked up the change suggested in Radar bug #2667241 which
7724 added a dyld_mach_thread_self() call to lock.c to improve
7725 preformance by caching the last value of the mach_thread_self()
7726 call against the page truncated stack address making the
7727 call.</LI>
7729 <LI>Fixed a bug in the PowerPC assembler that set the Y bit
7730 inappropriately in bdnzt when no prediction was specified (Radar
7731 bug #2665165).</LI>
7733 <LI>Changed <I>libtool</I>(1) so that if <B>-arch_only</B> is
7734 specified with a specific cpusubtype other than the family
7735 cpusubtype it does not use <B>-force_cpusubtype_ALL</B> and passes
7736 the <B>-arch_only</B> argument to <I>ld</I>(1) as the <B>-arch</B>
7737 flag so that the output is to be tagged with that
7738 cpusubtype..</LI>
7740 <LI>Changed the PowerPC assembler so that vector instructions can
7741 be used when <B>-arch 7400</B> and <B>-arch 7450</B> are specified
7742 without specifying <B>-force_cpusubtype_ALL</B>.</LI>
7743 </UL>
7745 <H5><FONT SIZE="+1">Changes since the last release (cctools-361 for
7746 the 5.9 MacOS 10.1 release)</FONT></H5>
7748 <UL>
7749 <LI>Fixed a bug in the redo_prebinding code that did not honor the
7750 sticky bit when creating its output file.</LI>
7752 <LI>Picked up one of the bug fixes to the dynamic linker made in
7753 cctools-361 that was also needed in the redo_prebinding code.</LI>
7754 </UL>
7756 <H5><FONT SIZE="+1">Changes since the last release (cctools-360 for
7757 the 5.9 MacOS 10.1 release)</FONT></H5>
7759 <UL>
7760 <LI>Made a 4 bug fixes to the dynamic linker for bugs when running
7761 two-level namesapce images. With these fixes the 70 projects that
7762 Sherlock depends on can be built with -twolevel_namespace in
7763 effect and run.</LI>
7765 <LI>The <I>ld</I>(1) and <I>dyld</I>(1) man pages have been
7766 updated with the information about two level name space and the
7767 associated options.</LI>
7769 <LI>Fixed a bug in ld(1) in that caused it to crash when doing a
7770 cross byte sex link with -twolevel_namespace and linking both a
7771 sub-umbrella and its outer umbrella framework.</LI>
7773 <LI>Picked up the fixes for <I>otool</I>(1) -ov from Radar bug
7774 #2660421.</LI>
7776 <LI>The <I>redo_prebinding</I>(3) has been written and is now a
7777 part of cctools-361.</LI>
7779 <LI>Added the slide_to_address parameter to the redo_prebinding(3)
7780 API to be used in the furture to support changing the prefered
7781 address of a dynamic library.</LI>
7783 <LI>Fixed a bug in the <I>redo_prebinding</I>(3) API
7784 needs_redo_prebinding() where after it returned an error, all
7785 subsequent calls return PREBINDING_UNKNOWN.</LI>
7786 </UL>
7788 <H5><FONT SIZE="+1">Changes since the last release (cctools-359 for
7789 the 5.9 MacOS 10.1 release)</FONT></H5>
7791 <UL>
7792 <LI>Fixed a bug in <I>strip</I>(1) that did not honor the NO_TOC
7793 section attribute when creating archive table of contents (Radar
7794 bug #2663483).</LI>
7796 <LI>Added the <I>redo_prebinding</I>(3) APIs (Radar bug
7797 2604014).</LI>
7799 <LI>Added the <B>-e executable_path</B> argument to
7800 <I>redo_prebinding</I>(1) to allow it to be used with programs and
7801 dynamic libraries that use the "@executable_path" prefix in
7802 install names.</LI>
7804 <LI>Changed the cctoolslib project to no longer build librld and
7805 its varients when RC_RELEASE is not Cheetah (or an earilier build)
7806 as the use of librld was removed earily in the Cheetah build
7807 cycle.</LI>
7808 </UL>
7810 <H5><FONT SIZE="+1">Changes since the last release (cctools-358 for
7811 the 5.8 MacOS 10.0 release)</FONT></H5>
7813 <UL>
7814 <LI>Added support for two-level namespace (Radar bugs 2372124 and
7815 2415916).</LI>
7817 <LI>Changed the <I>redo_prebinding</I>(1) so that it won't trash
7818 file it is operating on when out of disk space (Radar bug
7819 #2639352).</LI>
7821 <LI>Changed the dynamic linker locking routine to nolonger use an
7822 "extra" sync after a load with reservation which was needed only
7823 for some old 604 processors (Radar bug #2615783).</LI>
7825 <LI>Updated the <I>pagestuff</I>(1) man page as edited by tech
7826 pubs (Radar bug #2582293).</LI>
7828 <LI>Changed the the static linker's, <I>ld</I>(1), overlap
7829 checking when building an executable to not disable prebinding
7830 when the split library's __LINKEDIT segment the executable is
7831 being linked overlap. This can happen when some of the split
7832 libraries linked with are from the $(SYMROOT) and are not
7833 stripped.</LI>
7835 <LI>Changed <I>checksyms</I>(1) to open the default segment
7836 address table if none is specified via a <B>-seg_addr_table</B>
7837 argument (and not try to open the old DylibTable).</LI>
7838 </UL>
7840 <H3><FONT SIZE="+2">Notes Specific to Release 5.8 (MacOS X
7841 10.0)</FONT></H3>
7843 <H3><FONT SIZE="+1">New Features</FONT></H3>
7845 <H3><FONT SIZE="+1">Two level namespace</FONT></H3>
7847 <P>Work on the compiler tools to support two level name space is in
7848 progress (Radar bugs 2372124 and 2415916). Even though some object
7849 file constants and command line options exist they should not be used
7850 and are for development purposes only. Do not expect any of this to
7851 work at all.</P>
7853 <H5><FONT SIZE="+1">Changes since the last release (cctools-357 for
7854 the 5.8 MacOS 10.0 release)</FONT></H5>
7856 <UL>
7857 <LI>Fixed a bug in the dynamic linker where a C++ plugin using
7858 templates, stripped with strip(1)'s -s option and then loaded
7859 privately will crash the program loading the plugin. (Radar bug
7860 #2631405).</LI>
7861 </UL>
7863 <H5><FONT SIZE="+1">Changes since the last release (cctools-356 for
7864 the 5.8 MacOS 10.0 release)</FONT></H5>
7866 <UL>
7867 <LI>Added support for the Vger (7450) cpu subtype to the compiler
7868 tools. Radar bug #2599869.</LI>
7870 <LI>Fixed a bug in the tool seg_addr_table(1) when the -update
7871 option was used that it did not preserve the non-zero addresses in
7872 the table. Instead it changed the non-zero entries to the values
7873 in the libraries were built with. (Radar bug 2575214).</LI>
7874 </UL>
7876 <H5><FONT SIZE="+1">Changes since the last release (cctools-355 for
7877 the 5.8 MacOS 10.0 release)</FONT></H5>
7879 <UL>
7880 <LI>Fixed a bug in the tool seg_addr_table(1) where it was not
7881 allowing any padding when laying out split libraries. (Radar bug
7882 2575211).</LI>
7884 <LI>Fixed a bug in the dynamic linker where a multi threaded
7885 program could crash in a library module being linked. (Radar bug
7886 #2584800).</LI>
7887 </UL>
7889 <H5><FONT SIZE="+1">Changes since the last release (cctools-354 for
7890 the 5.8 MacOS 10.0 release)</FONT></H5>
7892 <UL>
7893 <LI>Changed the include file &lt;mach/vm_task.h&gt; to
7894 &lt;mach/vm_map.h&gt; in two files so that the cctoolslib project
7895 would build on the Cheetah4J8 release. (Radar bug #2579488).</LI>
7897 <LI>Fixed a bug strip(1) where it could complain about not being
7898 able to strip the compiler generated symbols using private extern
7899 coalesced symbols. (Radar bug #2584111).</LI>
7901 <LI>Changed otool(1) to disassemble sections marked with
7902 S_ATTR_SOME_INSTRUCTIONS as some coalesced sections created by the
7903 compiler that are not marked with S_ATTR_PURE_INSTRUCTIONS as they
7904 contain jump tables as well as instructions (Radar bug
7905 #2580311).</LI>
7907 <LI>The assembler has been changed to allow the .section directive
7908 to take mutiple attributes separated with a plus sign '+' (Radar
7909 bug 2580298).</LI>
7911 <LI>Fixed a bug in the implementation of two of
7912 NSLookupAndBindSymbolWithHint () that was causing the symbol
7913 tables to be touched when the symbol was already bound (Radar bug
7914 #2580180).</LI>
7916 <LI>Fixed a bug in the dynamic linker where it would hang the
7917 program when a -run_init_lazily library is used. (Radar bug
7918 #2582778).</LI>
7919 </UL>
7921 <H5><FONT SIZE="+1">Changes since the last release (cctools-353 for
7922 the 5.8 MacOS 10.0 release)</FONT></H5>
7924 <UL>
7925 <LI>Fixed a bug in the implementations of two of new lookup with
7926 hint APIs that were added with cctools-353. The two API's that
7927 were fixed were NSLookupAndBindSymbolWithHint () and
7928 _dyld_lookup_and_bind_with_hint() this was causing pbxbuild to
7929 crash in Cheetah4I.</LI>
7931 <LI>Fixed a bug in libtool(1) that caused it to crash when a
7932 -filelist containing 1 file was used.</LI>
7933 </UL>
7935 <H5><FONT SIZE="+1">Changes since the last release (cctools-352 for
7936 the 5.8 MacOS 10.0 release)</FONT></H5>
7938 <UL>
7939 <LI>The PowerPC assembler is now installed in
7940 /usr/libexec/gcc/darwin/<B>ppc</B>/as with the other assemblers
7941 installed in /usr/local/libexec/gcc/darwin/<B>arch</B>/as (Radar
7942 bug 2574173).</LI>
7944 <LI>The assembler has been changed to allow the .set directive to
7945 work with expressions of the form a-b and produce an absolute
7946 value for the difference of the symbols even if the symbol are not
7947 yet declared when the .set directive is seen (Radar bug
7948 2573260).</LI>
7950 <LI>The static link editor has been changed to allow compiler to
7951 create position independent (read-only) unwind tables for template
7952 functions that the compiler creates as coalesced symbols (Radar
7953 bug #2564555).</LI>
7955 <LI>Changed dyld's calling of shared library init routines in the
7956 prebound case to not touch the symbol table (Radar bug
7957 2573679).</LI>
7959 <LI>The real implementations for three new lookup with hint APIs
7960 have been added. Previously they were just dummy covers that
7961 called the un hinted APIs. They are NSIsSymbolNameDefinedWithHint
7962 (), NSLookupAndBindSymbolWithHint () and
7963 _dyld_lookup_and_bind_with_hint() defined in &lt;mach-o/dyld.h&gt;
7964 (Radar bug 2571272).</LI>
7966 <LI>The headers files are now installed in /usr/include and
7967 /usr/local/include (Radar bug 2569880).</LI>
7969 <LI>Fixed a bug the static link editor that did not disable
7970 prebinding when symbols in a dynamic library were overridden by
7971 symbols in another dynamic library. Also fixed a bug in the
7972 dynamic linker that incorrectly tried to launch a program where
7973 the same case of symbols in a dynamic library were overridden by
7974 symbols in another dynamic library. This showed up in building a
7975 Cocoa app profiled and the symbols in System framework were being
7976 overidden by the System_profile framework (Radar bug
7977 #2564555).</LI>
7978 </UL>
7980 <H5><FONT SIZE="+1">Changes since the last release (cctools-351 for
7981 the 5.8 MacOS 10.0 release)</FONT></H5>
7983 <UL>
7984 <LI>Fixed yet another bug in the tool nmedit(1) when used with the
7985 -s file option on a dynamic library hat would cause the module
7986 table to be malformed (specifically the fields nlocalsym and
7987 nextdefsym were likely to have wrong values).</LI>
7988 </UL>
7990 <H5><FONT SIZE="+1">Changes since the last release (cctools-350 for
7991 the 5.8 MacOS 10.0 release)</FONT></H5>
7993 <UL>
7994 <LI>Fixed a bug in the tool nmedit(1) when used with the -s file
7995 option on a dynamic library of the opposite byte sex that would
7996 cause the module table to be malformed. Also fixed a bug in the
7997 tool nm(1) that would crash on this type of malformed dynamic
7998 library.</LI>
7999 </UL>
8001 <H5><FONT SIZE="+1">Changes since the last release (cctools-349 for
8002 the 5.8 MacOS 10.0 release)</FONT></H5>
8004 <UL>
8005 <LI>Added the new environment variable
8006 DYLD_NEW_LOCAL_SHARED_REGION to the dynamic link editor which
8007 causes the split shared libraries to not be loaded in to the
8008 system wide shared region (Radar bug 2567132).</LI>
8010 <LI>Added support for three new lookup with hint APIs. They are
8011 NSIsSymbolNameDefinedWithHint (), NSLookupAndBindSymbolWithHint ()
8012 and _dyld_lookup_and_bind_with_hint() defined in
8013 &lt;mach-o/dyld.h&gt; (Radar bug 2567184).</LI>
8015 <LI>Changed the static link editor to call vm_msync() with the
8016 VM_SYNC_DEACTIVATE option to avoid having the kernel keep all the
8017 pages of the input object files mapped and swapping out all other
8018 tasks (Radar bug #2567196). This seems to fix Radar bug
8019 #2538797.</LI>
8020 </UL>
8022 <H5><FONT SIZE="+1">Changes since the last release (cctools-348 for
8023 the 5.8 MacOS 10.0 release)</FONT></H5>
8025 <UL>
8026 <LI>Changed the static link editor to use the fcntrl() F_NOCACHE
8027 option to avoid having the kernel cache the pages being written to
8028 the output file (may help fix Radar bug #2538797).</LI>
8030 <LI>Changed the dynamic link editor to use the new kernel api
8031 reset_shared_file(2) to deallocate the memory for a split dynamic
8032 library when it trys to unload it when a plugin fails to load and
8033 the split library was loaded by the plugin (Radar bug 2549068).
8034 Also see the kernel bug in Radar bug #2545459.</LI>
8036 <LI>Made a small optimization in the dynamic linker to inline
8037 bsearch(3) and strcmp(3) which should make launching non-prebound
8038 apps a bit faster (Radar bug 2558068).</LI>
8040 <LI>Added support for the new dyld/gdb interface to the dynamic
8041 linker as documented in &lt;mach-o/dyld_gdb.h&gt; (Radar bug
8042 2559324).</LI>
8043 </UL>
8045 <H5><FONT SIZE="+1">Changes since the last release (cctools-347 for
8046 the 5.8 MacOS 10.0 release)</FONT></H5>
8048 <UL>
8049 <LI>Clarified the nmedit(1) man page adding a comment about when
8050 both -s and -R are specified (Radar bug 2555491).</LI>
8052 <LI>Changed the tool nmedit(1) to handle symbols listed more than
8053 once in the -s file and not produce a misleading error that the
8054 symbol was not found in file to be edited.</LI>
8055 </UL>
8057 <H5><FONT SIZE="+1">Changes since the last release (cctools-346 for
8058 the 5.8 MacOS 10.0 release)</FONT></H5>
8060 <UL>
8061 <LI>Added the NSAddLibraryWithSearching api (Radar bug
8062 2535633).</LI>
8064 <LI>Added the _dyld_register_func_for_remove_image api for C++
8065 exception runtime (Radar bug 2553324).</LI>
8067 <LI>Fixed a bug in libtool(1) that did not recognize the
8068 -final_ouput flag correctly (needed for Radar bug 2550094).</LI>
8069 </UL>
8071 <H5><FONT SIZE="+1">Changes since the last release (cctools-345 for
8072 the 5.8 MacOS 10.0 release)</FONT></H5>
8074 <UL>
8075 <LI>Added logging why a binary was not prebound for B&amp;I when
8076 the environment variable RC_TRACE_PREBINDIND_DISABLED is set
8077 (Radar bug 2550094). Also see compiler driver Radar bug
8078 #2550125.</LI>
8080 <LI>Fixed a bug in the static link editor when a private extern
8081 symbol is referenced from a from coalesced section that generated
8082 an internal ld(1) error when using -bundle. (Radar bug
8083 2548925).</LI>
8084 </UL>
8086 <H5><FONT SIZE="+1">Changes since the last release (cctools-344 for
8087 the 5.8 MacOS 10.0 release)</FONT></H5>
8089 <UL>
8090 <LI>Changed the static link editor to ignore the
8091 -segs_read_write_addr address it reads from the segment address
8092 table if both the -segs_read_only_addr and -segs_read_write_addr
8093 address are zero use 0x10000000 (256meg) for the
8094 -segs_read_write_addr to construct a valid layout for a split
8095 library. (Radar bug 2544818).</LI>
8097 <LI>Changed the dynamic link editor to not try to deallocate the
8098 memory for a split dynamic library when it trys to unload it when
8099 a plugin fails to load and the split library was loaded by the
8100 plugin (Radar bug 2544696). Also see the kernel bug in Radar bug
8101 #2545459.</LI>
8103 <LI>Fixed a bug in the redo_prebinding(1) tool that caused it to
8104 not work on split dynamic libraries producing dynamic libraries
8105 with the items to be relocated not updated correctly (Radar bug
8106 2544599).</LI>
8108 <LI>Fixed a bug in the redo_prebinding(1) tool that was not
8109 detecting that the dependent libraries of an executable were out
8110 of date with respect to thier prebinding (Radar bug 2544407).</LI>
8112 <LI>Changed the static link editor to allow split dynamic library
8113 __LINKEDIT segments to overlap an not disable prebinding (Radar
8114 bug 2543932).</LI>
8116 <LI>Changed the redo_prebinding(1) tool so that with the -c (check
8117 only) option it will check the installed dynamic library against
8118 the argument of the tool to see the build time stamps match (Radar
8119 bug 2541232).</LI>
8121 <LI>Fixed a bug in the seg_addr_table(1) tool that would cause it
8122 to crash with after a number of messages from malloc are printed
8123 about "Deallocation of a pointer not malloced" (Radar bug
8124 2540744).</LI>
8125 </UL>
8127 <H5><FONT SIZE="+1">Changes since the last release (cctools-343 for
8128 the 5.8 MacOS 10.0 release)</FONT></H5>
8130 <UL>
8131 <LI>Added the needed support for the static link editor to do with
8132 the tracking and setting the library ordinal for
8133 -twolevel_namespace against the "primary" library. (Radar bug
8134 2538835).</LI>
8136 <LI>The cctoolslib project can now build the kld libraries now
8137 that the kernel framework installes the libsa headers. Radar bug
8138 2538829.</LI>
8140 <LI>Fixed a bug with the -sub_umbrella option in the static link
8141 editor which causes ld(1) to crash when a library built with the
8142 -sub_umbrella option is linked against. (Radar bug 2538825).</LI>
8144 <LI>Fixed a bug with the -allowable_client option in the static
8145 link editor which builds malformed objects for cross bytesex
8146 builds. (Radar bug 2538774).</LI>
8148 <LI>Fixed a bug in the static link editor where it was creating
8149 local relocation entries for global coalesced symbols when the
8150 flag -keep_private_extern was specified (Radar bug 2536788).</LI>
8151 </UL>
8153 <H5><FONT SIZE="+1">Changes since the last release (cctools-342 for
8154 the 5.8 MacOS 10.0 release)</FONT></H5>
8156 <UL>
8157 <LI>Fixed the inadvernt change to the value of the constant
8158 REFERENCED_DYNAMICALLY in &lt;mach-o/nlist.h&gt; that got changed
8159 as part of Radar bug 2534043.</LI>
8160 </UL>
8162 <H5><FONT SIZE="+1">Changes since the last release (cctools-341 for
8163 the 5.8 MacOS 10.0 release)</FONT></H5>
8165 <UL>
8166 <LI>Fixed a bug in the change to the static link editor for Radar
8167 bug 2530729 where it also changed the reference table for
8168 non-coalesced symbols which it should not have.</LI>
8170 <LI>Added the needed constants, macros, and comments to the header
8171 files &lt;mach-o/loader.h&gt; and &lt;mach-o/nlist.h&gt; for
8172 supporting two level name space. As well as support for the
8173 -twolevel_namespace, -flat_namespace and -force_flat_namespace
8174 options. (Radar bug 2534043). The compiler driver does not yet
8175 pass these flags (see Radar 2534146) so -Wl,-option can be used
8176 for now.</LI>
8178 <LI>Fixed a bug in the static link editor so that non-lazy
8179 pointers to private extern coalesced symbols work correctly.
8180 (Radar bug 2534011).</LI>
8182 <LI>Added the -allowable_client and -client_name options to the
8183 static link editor to allow other framworks and bundles to link
8184 with a subframework built with -umbrella which are not part of
8185 that umbrella. (Radar bug 2533649). The compiler driver does not
8186 yet pass these flags (see Radar 2534146) so -Wl,-option,argument
8187 can be used for now.</LI>
8189 <LI>Fixed a bug in the tool seg_addr_table(1) where it was
8190 printing a message about an overlapp when it shouldn't. (Radar bug
8191 2531831).</LI>
8192 </UL>
8194 <H5><FONT SIZE="+1">Changes since the last release (cctools-340 for
8195 the 5.7 MacOS X Public Beta release)</FONT></H5>
8197 <UL>
8198 <LI>Fixed a bug in the static link editor when it creates a
8199 dynamic library and discards a private extern coalesced symbol
8200 after already keeping a global one. This produced a dynamic
8201 library that can't be linked against as reference table has the
8202 wrong type of reference (Radar bug 2530729).</LI>
8204 <LI>Added the -sub_umbrella option to the static link editor.
8205 (Radar bug 2530028).</LI>
8207 <LI>Fixed a bug in the tool otool(1) where it was printing a
8208 message about a Stray PPC_RELOC_PAIR relocation entry when it
8209 shouldn't. (Radar bug 2523845).</LI>
8211 <LI>Added the kld(3) interfaces as requested by the driver group.
8212 (Radar bug 2523649).</LI>
8214 <LI>Changed the nmedit(1) and strip(1) commands to allow the file
8215 listing symbol names not to end in a new line. (Radar bug
8216 2520711).</LI>
8218 <LI>Changed the file(1) command to print "CFM binary" instead of
8219 data for CFM binaries. (Radar bug 2511106).</LI>
8221 <LI>Fixed a bug in the dynamic link editor where it would used the
8222 wrong global coalesced symbol if the program overrides a symbol
8223 used by a shared library library init routine in a library that
8224 also defines the shared library init.. (Radar bug 2511358).</LI>
8226 <LI>The dynamic library was changed to allow the environment
8227 variables that effect which libraries a program uses to let root
8228 always use them even for set uid and set gid programs (Radar bug
8229 2497678).</LI>
8231 <LI>The man page for rld was moved from the file rld.3l to rld.3
8232 so man rld will work correctly. (Radar bug 2505760).</LI>
8234 <LI>The sizes of the data structures in the dynamic linker have
8235 been tune to match the Kodiak1G7 Finder. (Radar bug 2504987).</LI>
8237 <LI>The support to allow a shared library routine to be marked to
8238 have its initialization routine run on first use of the library by
8239 the program rather than at program start up when the program is
8240 launched prebound is now extened to module initialization routines
8241 (C++ static initializers). This is done with the shared library is
8242 built via the flag -run_init_lazily. Until Radar bug #2491001 is
8243 fixed this option can't be specified directly to the compiler
8244 driver <I>cc</I>(1). For now the linker option can be used via the
8245 <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
8246 driver option. This feature is broken in the Kodiak1G7 kernels,
8247 see Radar bug #2504021. (Radar bug 2502941).</LI>
8249 <LI>Fixed a bug in the static link editor where it generates a
8250 warning about the use of a global coalesced symbol not coming from
8251 the first dynamic library when it shouldn't. (Radar bug
8252 2503703).</LI>
8254 <LI>Fixed a bug in the static link editor where a global coalesced
8255 symbol is repodted as a multply defined symbol when first defined
8256 in a dynamic library then in a static library. (Radar bug
8257 2503694).</LI>
8259 <LI>Fixed a bug in the static link editor when a private extern
8260 coalesced symbol is defined in a dynamic shared library and the
8261 static link editor creates a modlule table entry with the wrong
8262 number of external defined symbols. This results in a malformed
8263 dynamic library. (Radar bug 2503688).</LI>
8265 <LI>Changed the tools nmedit(1) and strip(1) to not change global
8266 coalesced symbols into statics or strip them. (Radar bug
8267 2503670).</LI>
8269 <LI>Fixed a memory leak in the NSCreateObjectFileImageFromFile()
8270 API. (Radar bug 2500014 ).</LI>
8271 </UL>
8273 <H4><FONT SIZE="+2">Notes Specific to Release 5.7 (MacOS X Public
8274 Beta)</FONT></H4>
8276 <H3><FONT SIZE="+1">New Features</FONT></H3>
8278 <H3>Automatic initialization of dependent libraries</H3>
8280 <P>The dynamic linker now calls shared library initialization
8281 routines in their dependent order (Radar bug #2441683).</P>
8283 <P>The new function __initialize_Cplusplus() now can be called from a
8284 shared library initialization routines to cause the static C++
8285 objects in the library to be initialized. This them allows shared
8286 library initialization routines to make use of statically initialized
8287 C++ objects. (Radar bug 2441683).</P>
8289 <H3>Update to module termination functions</H3>
8291 <P>The dynamic linker now supports module termination functions for
8292 all types of images (executables, plugins that are not unloaded and
8293 shared libraries). This will allow the C++ compiler to use module
8294 termination functions for destructors instead of atexit(3) so that a
8295 C++ plugin that has a destructor being unloaded does not cause a
8296 crash in atexit(3).</P>
8298 <H3>Update to support for managing the list of globally exported
8299 names</H3>
8301 <P>If you are building a dynamic library you nolonger have to do and
8302 "ld -r" of all of your object files into one object file. The tool
8303 nmedit(1) now can be run on dynamic libraries. Further
8304 __private_extern__ symbols can now be used in modules of dynamic
8305 libraries that also have definitions of global symbols. (Radar bug
8306 2420307 ).</P>
8308 <H5><FONT SIZE="+1">Changes since the last release (cctools-339 for
8309 the 5.7 MacOS X Public Beta release)</FONT></H5>
8311 <UL>
8312 <LI>Changed the dynamic link editor so that the debugger interface
8313 does not cause the task being debugged to hang. (Radar bug
8314 2487248).</LI>
8315 </UL>
8317 <H5><FONT SIZE="+1">Changes since the last release (cctools-338 for
8318 the 5.7 MacOS X Public Beta release)</FONT></H5>
8320 <UL>
8321 <LI>Updates the cctools project with the edited release notes from
8322 tech pubs. (Radar bug 2510274).</LI>
8323 </UL>
8325 <H5><FONT SIZE="+1">Changes since the last release (cctools-337 for
8326 the 5.7 MacOS X Public Beta release)</FONT></H5>
8328 <UL>
8329 <LI>Fixed a bug in the assembler that would not set the correct
8330 value for the trailing N_FUN stab which was the difference of a
8331 symbol at the end of the function and the function symbol when the
8332 function was large. (Radar bug 2504182).</LI>
8333 </UL>
8335 <H5><FONT SIZE="+1">Changes since the last release (cctools-336 for
8336 the 5.7 MacOS X Public Beta release)</FONT></H5>
8338 <UL>
8339 <LI>Fixed a bug in the static link editor when a private extern
8340 symbol is referenced from a from coalesced section that generated
8341 an internal ld(1) error. (Radar bug 2497954).</LI>
8343 <LI>The segment address table tool, seg_addr_table(1), was changed
8344 to allocate the read-only region of split libraries starting at
8345 0x70000000 and the read-write regions starting at 0x80000000.
8346 (Radar bug 2496843).</LI>
8348 <LI>Changed the dynamic linker to align the stack it starts using
8349 to 32 bytes where previously it was aligened to 16 bytes. (Radar
8350 bug 2495403).</LI>
8352 <LI>Changed the tool nmedit(1) to make it compatible with an
8353 upcoming compiler change that creates a new an end of function
8354 symbolic table entry. This new entry has an empty name for a N_FUN
8355 stab which nmedit(1) previouly generated an error when
8356 encountered. (Radar bug 2495413).</LI>
8357 </UL>
8359 <H5><FONT SIZE="+1">Changes since the last release (cctools-335 for
8360 the 5.7 MacOS X Public Beta release)</FONT></H5>
8362 <UL>
8363 <LI>Added support for marking coalesced symbols and to not appear
8364 in a static libraries table of contents. This will be used for
8365 RTTI data genetated by the C++ compiler. (Radar bug 2494286).</LI>
8367 <LI>Fixed a bug in the dynamic linker which would crash in
8368 _dyld_image_containing_address if a plugin was unloaded. This
8369 showed up in Kodiak1E5 with
8370 /Developer/Applications/OpenGLInfo.app/Contents/MacOS/OpenGLInfo.
8371 (Radar bug 2493911 also 2496107).</LI>
8372 </UL>
8374 <H5><FONT SIZE="+1">Changes since the last release (cctools-334 for
8375 the 5.7 MacOS X Public Beta release)</FONT></H5>
8377 <UL>
8378 <LI>Fixed a bug resulting in an internal error in the static link
8379 editor when linking objects with private extern coalesced symbols.
8380 (Radar bug 2493452).</LI>
8382 <LI>Fixed a bug in the static link editor when creating relocation
8383 entries for literal pointer sections used by Objective-C for split
8384 libraries. This would cause the dynamic linker to crash the
8385 program when the library was not loaded at its prefered address.
8386 (Radar bug 2493445).</LI>
8388 <LI>Fixed a bug in the dynamic linker with respect to
8389 @executable_path not finding a library sometimes. (Radar bug
8390 2493400).</LI>
8391 </UL>
8393 <H5><FONT SIZE="+1">Changes since the last release (cctools-333 for
8394 the 5.7 MacOS X Public Beta release)</FONT></H5>
8396 <UL>
8397 <LI>Added support to allow a shared library routine to be marked
8398 to have its initialization routine run on first use of the library
8399 by the program rather than at program start up when the program is
8400 launched prebound. This is done with the shared library is built
8401 via the flag -run_init_lazily. Until Radar bug #2491001 is fixed
8402 this option can't be specified directly to the compiler driver
8403 <I>cc</I>(1). For now the linker option can be used via the
8404 <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
8405 driver option. (Radar bug 2490396).</LI>
8407 <LI>The verification tool has been changed not to generate an
8408 error message if a library is not found in the segment address
8409 table if specified. Also all checks for conventional path names of
8410 dynamic libraries has been removed. (Radar bug 2490411).</LI>
8412 <LI>The segment address table tool, seg_addr_table(1), was changed
8413 to pack all the split libraries into the first 128meg of a split
8414 256meg region. Also it now checks so that only the first 128meg of
8415 a 256meg split segment is allocated. (Radar bug 2490413).</LI>
8416 </UL>
8418 <H5><FONT SIZE="+1">Changes since the last release (cctools-332 for
8419 the 5.7 MacOS X Public Beta release)</FONT></H5>
8421 <UL>
8422 <LI>Changed the dynamic linker for gratuitous changes to
8423 load_shared_file() in Kodiak1E. (Radar bug 2484973).</LI>
8425 <LI>Fixed a bug in strip(1) and nmedit(1) which produces bad
8426 outputs for fat files with more than one architecture. (Radar bug
8427 2484851).</LI>
8428 </UL>
8430 <H5><FONT SIZE="+1">Changes since the last release (cctools-331 for
8431 the 5.7 MacOS X Public Beta release)</FONT></H5>
8433 <UL>
8434 <LI>Fixed a bug in the dynamic linker that caused programs to
8435 crash that used used signal() when trying to fully bind the signal
8436 handler which showed up in Kodiak1C4. (Radar bug 2483733 ).</LI>
8438 <LI>Fixed a bug in the tool seg_addr_table(l) when the -update
8439 operation was used where it would sometimes not update the entries
8440 to be updated with the correct address. Also added the
8441 -disablewarnings option. (Radar bug 2482327).</LI>
8443 <LI>The tool nmedit(1), the dynamic and static linker has been
8444 changed to allow nmedit(1) to be run on dynamic libraries. (Radar
8445 bug 2420307).</LI>
8447 <LI>The dynamic linker has the changes need to support the changes
8448 in the load_shared_file() interface. (Radar bug 2480801).</LI>
8449 </UL>
8451 <H5><FONT SIZE="+1">Changes since the last release (cctools-330 for
8452 the 5.7 MacOS X Public Beta release)</FONT></H5>
8454 <UL>
8455 <LI>The cctools-331 project has the change that was missed for the
8456 Kodiak1C directory layout so that the release notes are installed
8457 in /Developer/Documentation/ReleaseNotes/CompilerTools.html
8458 instead of
8459 /System/Developer/Documentation/ReleaseNotes/CompilerTools.html as
8460 was changed for Kodiak1A.</LI>
8461 </UL>
8463 <H5><FONT SIZE="+1">Changes since the last release (cctools-329 for
8464 the 5.7 MacOS X Public Beta release)</FONT></H5>
8466 <UL>
8467 <LI>The dynamic linker has a fix for a bug that was introduced
8468 with the code to call shared library initialization routines in
8469 their dependent order for an edge case that caused the program to
8470 crash in dyld. The edge case is when a shared library
8471 initialization routine ends up depending on the executable and
8472 there are undefined symbols (Radar bug 2477856).</LI>
8474 <LI>The dynamic linker now uses the variable _cpu_has_altivec and
8475 the new kernel trap processor_facilities_used() to determine when
8476 to save fp and altivec registers (Radar bug 2477859).</LI>
8478 <LI>The cctools-330 project has the changes for the Kodiak1C
8479 directory layout so that /Library/Frameworks is used instead of
8480 /MacOSX/Library/Framework as was changed for Kodiak1A (Radar bug
8481 #2477862).</LI>
8483 <LI>Fixed an error message in the static linker for the incorrect
8484 usage of the -umbrella flag where -sub_framework was used where
8485 -umbrella should have been used (Radar bug 2477866).</LI>
8487 <LI>Changed the static linker, libtool and the assemblers so they
8488 once again send messages to ProjectBuilder (Radar bug
8489 2473864).</LI>
8490 </UL>
8492 <H5><FONT SIZE="+1">Changes since the last release (cctools-328 for
8493 the 5.7 MacOS X Public Beta release)</FONT></H5>
8495 <UL>
8496 <LI>Fixed a bug in the strings(1) command that caused it not to
8497 read standard input if any command line argument was specified
8498 (Radar bug #2459126).</LI>
8500 <LI>The dynamic linker now calls shared library initialization
8501 routines in their dependent order (Radar bug 2441683).</LI>
8503 <LI>The new function __initialize_Cplusplus() now can be called
8504 from a shared library initialization routines to cause the static
8505 C++ objects in the library to be initialized. This them allows
8506 shared library initialization routines to make use of statically
8507 initialized C++ objects (Radar bug 2441683). This requires the
8508 dylib1.o from the Csu-33 project (Radar bug 2466821).</LI>
8510 <LI>The dynamic linker now supports module termination functions
8511 for all types of images (executables, plugins that are not
8512 unloaded and shared libraries) (Radar bug #2469527). This requires
8513 the crt1.o from the Csu-33 project (Radar bug #2466821).</LI>
8515 <LI>A check has been added to the PowerPC assebler to check the
8516 range of a PPC_RELOC_BR14 and PPC_RELOC_BR24. Previously it
8517 assembled the branch instructions wrong that overflowed without
8518 any error (Radar bug #2469441).</LI>
8520 <LI>Added the new routines NSCreateCoreFileImageFromFile(3) and
8521 _dyld_debug_task_from_core(3) to support getting the information
8522 about the state of the dynamic libraries in a core file (Radar bug
8523 #2155790).</LI>
8525 <LI>Created the man pages NSModule(3) and NSObjectFileImage(3)
8526 (Radar bug #2469604).</LI>
8528 <LI>Fixed a bug in libtool/ranlib that did not deal with zero
8529 length archive members that had long names and used 4.4BSD
8530 extended format #1 and caused ranlib to crash (Radar bug
8531 #2460604).</LI>
8533 <LI>Changed nmedit(1) and strip(1) to allow Macintosh \r's in the
8534 files specified with lists of symbols (Radar bug #2458346).</LI>
8536 <LI>Fixed a few bugs in the seg_addr_table(l) tool. The first was
8537 a problem with not correctly reporting the previous file name that
8538 had an address that matched the table when another library did not
8539 match the table's address. The second was when -upate was used and
8540 a new library like a _profiled version was added with a 0x0
8541 address and there was an existing version with an assigned address
8542 the tool complained abou the new library not having the correct
8543 address (Radar bug #2469876).</LI>
8545 <LI>Changed the seg_addr_table(l) tool to check to make sure it
8546 does not assign any addresses above 0xc0000000 since this address
8547 space is not available on intel in user space (Radar bug
8548 #2418080).</LI>
8550 <LI>Changed the PowerPC assembler to check to make sure that 14
8551 bit branch instructions do not overflow (Radar bug #2469441).</LI>
8553 <LI>Cleaned up the yet to be implemented NSReplaceModule() API,
8554 added enum for other link edit errors and changed the yet to be
8555 implemented NSCreateObjectFileImageFromMemory() API to return
8556 NSObjectFileImageFailure (Radar bug #2469558).</LI>
8558 <LI>Changed the checksyms(l) tool to check to allow debug symbols
8559 for _debug frameworks and libraries (Radar bug #2469760).</LI>
8561 <LI>Changed libtool(1) to pass the -whatsloaded flag on to ld(1)
8562 (Radar bug #2469803).</LI>
8563 </UL>
8565 <H5><FONT SIZE="+1">Changes since the last release (cctools-327 for
8566 the 5.6 MacOS X Public Beta release)</FONT></H5>
8568 <UL>
8569 <LI>The cctools-328 project has the change to the new directory
8570 layout for /usr/local/lib/system instead of
8571 /AppleInternal/Developer/System.</LI>
8572 </UL>
8574 <H5><FONT SIZE="+1">Changes since the last release (cctools-326 for
8575 the 5.6 MacOS X DP4 release)</FONT></H5>
8577 <UL>
8578 <LI>The cctools-327 project has the changes to support the new
8579 directory layout. The old layout can still be built from the
8580 cctools-327 project if RC_RELEASE is Gonzo and the -othercflags
8581 -D__GONZO_BUNSEN_BEAKER__ is defined.</LI>
8582 </UL>
8584 <H3><FONT SIZE="+2">Notes Specific to Release 5.6 (MacOS X
8585 DP4)</FONT></H3>
8587 <H3><FONT SIZE="+1">New Features</FONT></H3>
8589 <H3>Support for using shared page table entries on the PowerPC with
8590 dynamic libraries</H3>
8592 <P>For the current generation of PowerPC chips to be able to share
8593 the page table entries among different processes everything mapped
8594 from one 256meg boundary to another 256meg boundary must be the same
8595 in the different processes. This is has not been possible with MacOS
8596 X Mach-O shared libraries as the code and data for each shared
8597 library is staticly linked such that the virtual address of the data
8598 immediately follows the code. And since the data for each process is
8599 different in each process shared page table entries can't be
8600 used.</P>
8602 <P>To make it possible for the current PowerPC chips to be able to
8603 use shared page table entries a new form of MacOS X Mach-O shared
8604 libraries can now be created and used starting with the MacOS X DP4
8605 release. The new form of shared libraries splits the code and data in
8606 to two groups. There is one group for the read-only segments
8607 generated by the compiler system and one group for the read-write
8608 segments.</P>
8610 <P>To create a the new "split" form of shared libraries the new
8611 option <B>-segs_read_only_addr</B> <I>&lt;hex_address&gt;</I> is used
8612 to specify the preferred virtual address of the read-only segments
8613 (where <B>-seg1addr</B> <I>&lt;hex_address&gt;</I> is continued to be
8614 used for the existing "flat" non-split shared libraries). The address
8615 of the read-write segments is specified with
8616 <B>-segs_read_write_addr</B> <I>&lt;hex_address&gt;</I> or defaults
8617 to the address of the read-only segments plus 256meg
8618 (0x10000000).</P>
8620 <P>Until Radar bug #2443215 is fixed these options can't be specified
8621 directly to the compiler driver <I>cc</I>(1). For now the linker
8622 options can be used via the
8623 <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
8624 driver option.</P>
8626 <P>When creating a shared library in the split the read-only segments
8627 must not contain any relocation entries. So the used of anything but
8628 the default <B>-read_only_relocs error</B> is not allowed with the
8629 split form of shared libraries.</P>
8631 <P>The kernel starting with the MacOS X DP4 release will reserve two
8632 256meg regions for these split shared libraries to be loaded into
8633 every process that uses the dynamic linker. All shared libraries
8634 having the split form must be placed in these regions. To make it
8635 easier to maintain the preferred virtual addresses of shared
8636 libraries an alternate way of specifying their addresses will be used
8637 by the projects built by Apple's Build and Integration team for MacOS
8638 X. This will involve using a "segment address table" for all dynamic
8639 libraries. This segment address table will be built by Apple's Build
8640 and Integration team and installed in
8641 /AppleInternal/Developer/seg_addr_table. The segment address table
8642 will have entries for each shared library containing its install name
8643 and its <B>-seg1addr</B> or pair of addresses for its
8644 <B>-segs_read_only_addr</B> and <B>-segs_read_write_addr</B>. Then
8645 specifying the address of a shared library will be done with the
8646 option <B>-seg_addr_table</B>
8647 <I>/AppleInternal/Developer/seg_addr_table</I>. Since it may not be
8648 possible to get all project building shared libraries to change to
8649 using the <B>-seg_addr_table</B> option in a timely manner, this can
8650 also be specified via an environment variable. The environment
8651 variable <B>LD_SEG_ADDR_TABLE</B> can be set to the file name of the
8652 segment address table and if so the static link editor will ignore
8653 any <B>-seg1addr</B>, <B>-segs_read_only_addr</B>,
8654 <B>-segs_read_write_addr</B> and <B>-seg_addr_table</B> arguments and
8655 will then use the addresses from the table.</P>
8657 <P>The local tool seg_addr_table(l) is also provided for used by
8658 Apple's Build and Integration team to build and maintain the segment
8659 address table. See the man page for more details.</P>
8661 <P>Radar entry #2415906.</P>
8663 <H5><FONT SIZE="+1">Changes since the last release (cctools-325 for
8664 the 5.6 MacOS X DP4 release)</FONT></H5>
8666 <UL>
8667 <LI>Fixed a bug NSCreateObjectFileImageFromFile(3) where it does
8668 not vm_deallocate(2) the memory for an object file if it is not an
8669 MH_BUNDLE type. Radar bug #2459727.</LI>
8670 </UL>
8672 <H5><FONT SIZE="+1">Changes since the last release (cctools-324 for
8673 the 5.6 MacOS X DP4 release)</FONT></H5>
8675 <UL>
8676 <LI>Fixed a bug in the static link editor which caused it to
8677 crash. Most notably when run via libtool with the error
8678 "/usr/bin/libtool: fatal error in ld".</LI>
8679 </UL>
8681 <H5><FONT SIZE="+1">Changes since the last release (cctools-323 for
8682 the 5.6 MacOS X DP4 release)</FONT></H5>
8684 <UL>
8685 <LI>Changed the dynamic link editor to support using just prebound
8686 dynanmic libraries when there are coalesced symbols.</LI>
8688 <LI>Fixed a bug in the static link editor when linking coalesced
8689 symbols that only appear in dynamic libraries getting a mutiply
8690 defined symbol error that shouldn't.</LI>
8692 <LI>Fixed a few bugs in the seg_addr_table (l) tool. The first was
8693 a problem with not correctly stepping over the fixed regions not
8694 to allocate when doing a -relayout or an -update. The second was
8695 with using a -seg_addr_table argument and it failing with a can't
8696 open error.</LI>
8697 </UL>
8699 <H5><FONT SIZE="+1">Changes since the last release (cctools-322 for
8700 the 5.6 MacOS X DP4 release)</FONT></H5>
8702 <UL>
8703 <LI>Changed again the cctools and cctoolslib projects to leave
8704 things in /System/Library when built for the Space release train
8705 (changed back from cctools-322). The release notes are put into
8706 /MacOSX/Documentation/Developer/ReleaseNotes instead of
8707 /System/Documentation/Developer/ReleaseNotes for the Space
8708 release. Also the libraries that are part of the System framework
8709 are installed in /AppleInternal/Developer/System instead of
8710 /Local/Developer/System for the Space release. The project
8711 currently relys on RC_RELEASE being set to Space and the macro
8712 __SPACE__ being defined. When this becomes the default for the
8713 Gonzo release train these things will be tweaked to make this
8714 happen by default for the Gonzo release train.</LI>
8716 <LI>Fixed a bug in the tool redo_prebinding(1) which could cause a
8717 shared library initialization routine not to be called. Radar bug
8718 #2450931.</LI>
8720 <LI>Changed the dynamic linker to use VRsave to know which Altivec
8721 registers to save before calling shared library initialization or
8722 module initialization routines. With gcc 2.95 now the default,
8723 VRsave is now correctly set. Radar bug #2450639.</LI>
8725 <LI>The -checkonly option has been added to the seg_addr_table(l)
8726 tool at the request of Apple's Build and Integration team. See the
8727 man page for details.</LI>
8729 <LI>The tool check_dylib(l) has been created for Apple's Build and
8730 Integration team. See the man page for details.</LI>
8731 </UL>
8733 <H5><FONT SIZE="+1">Changes since the last release (cctools-321 for
8734 the 5.6 MacOS X DP4 release)</FONT></H5>
8736 <UL>
8737 <LI>Changed the cctools and cctoolslib projects to build and put
8738 things in /MacOSX/System instead of /System/Library when built for
8739 the Space release train. Also the release notes are put into
8740 /Developer/ReleaseNotes instead of
8741 /System/Documentation/Developer/ReleaseNotes. The project
8742 currently relys on RC_RELEASE being set to Space and the macro
8743 __SPACE__ being defined. When this becomes the default for the
8744 Gonzo release train these things will be tweaked to make this
8745 happen by default for the Gonzo release train.</LI>
8747 <LI>Fixed the end(3) man page to correctly reference get_end(3).
8748 Radar bug #2448020.</LI>
8749 </UL>
8751 <H5><FONT SIZE="+1">Changes since the last release (cctools-320 for
8752 the 5.6 MacOS X DP4 release)</FONT></H5>
8754 <UL>
8755 <LI>Changed the assembler so the built in section directives
8756 .objc_class_names, .objc_meth_var_types and .objc_meth_var_names
8757 now use the (__TEXT,__cstring) section. Radar bug #2447117.</LI>
8759 <LI>Changed checksyms(l) not to check that objc_unique was run on
8760 the file. Radar bug #2448096.</LI>
8762 <LI>Edited the dyld(1) man page to fix its readablity. Radar bug
8763 #2438996 and #2392392.</LI>
8764 </UL>
8766 <H5><FONT SIZE="+1">Changes since the last release (cctools-319 for
8767 the 5.6 MacOS X DP4 release)</FONT></H5>
8769 <UL>
8770 <LI>The static linker now has support for guarding against direct
8771 linking of non-umbrella frameworks via the <B>-umbrella</B>
8772 option. See the ld man page for more details. Radar bug #2443212.
8773 Until Radar bug #2443215 is fixed this option can't be specified
8774 directly to the compiler driver <I>cc</I>(1). For now the linker
8775 option can be used via the
8776 <B>-Wl,</B><I>-linker_option</I><B>,</B><I>argument</I> compiler
8777 driver option.</LI>
8779 <LI>Changed the cctools project to install dyld's images.h and
8780 stuff/bool.h into
8781 /System/Library/Frameworks/System.framework/Versions/B/PrivateHeaders/dyld
8782 . Radar bug #2376135.</LI>
8783 </UL>
8785 <H5><FONT SIZE="+1">Changes since the last release (cctools-318 for
8786 the 5.6 MacOS X DP4 release)</FONT></H5>
8788 <UL>
8789 <LI>The static and dynamic linker now supports a new "split" form
8790 of shared libraries to to reduced wired-memory usage (see above in
8791 the new features section). Radar bug #2438996.</LI>
8793 <LI>Changed the checksyms(l) used in the B&amp;I verification
8794 process to not require dynamic libraries have execute bits set.
8795 Also changed checksyms(l) to allow all known MacOS X DP3 dynamic
8796 library install paths as a stop gap until information is provided
8797 by the App Packaging owners as to where are the Apple conventional
8798 install paths.</LI>
8800 <LI>Edited the dyld(1) man page to fix its readablity. Radar bug
8801 #2438996.</LI>
8803 <LI>Changed the cctools project to no longer install the GNU
8804 source as this is covered by the Darwin project.</LI>
8805 </UL>
8807 <H5><FONT SIZE="+1">Changes since the last release (cctools-317 for
8808 the 5.6 MacOS X DP4 release)</FONT></H5>
8810 <UL>
8811 <LI>Changed the cctools project to also install librld.a into
8812 /usr/local/lib/ . Radar bug #2436955.</LI>
8813 </UL>
8815 <H5><FONT SIZE="+1">Changes since the last release (cctools-316 for
8816 the 5.6 MacOS X DP4 release)</FONT></H5>
8818 <UL>
8819 <LI>Changed the cctools project top level Makefile to build both
8820 the cctools and cctoolslib targets when RC_RELEASE is Darwin.</LI>
8821 </UL>
8823 <H5><FONT SIZE="+1">Changes since the last release (cctools-315 for
8824 the 5.5 MacOS X DP3 release)</FONT></H5>
8826 <UL>
8827 <LI>Fixed a bug in the dynamic linker that did not correctly bind
8828 the modules which define shared library initialization routines
8829 after an unsucessful attempt to launch the program using just
8830 prebound shared libraries. Radar bug #2428317.</LI>
8832 <LI>Fixed a bug in the static link editor that generated an error
8833 mesage of the form "malformed object, illegal reference (reference
8834 from a lazy symbol pointer section ..." when linking an object
8835 that was the result of compiling an empty file with the -pg flag.
8836 Radar bug #2431435.</LI>
8837 </UL>
8839 <P>&nbsp;</P>
8841 <H3><FONT SIZE="+2">Notes Specific to Release 5.5 (MacOS X
8842 DP3)</FONT></H3>
8844 <H3><FONT SIZE="+1">New Features</FONT></H3>
8846 <H3>Support removing duplicate debugging information from header
8847 files</H3>
8849 <P>The static linker supports removing duplicate debugging
8850 information from header files when this information appears in
8851 multiple object files being linked. This is done with the -Si option
8852 to the static link editor is now the default. To have no symbols
8853 stripped when linking the new -Sn option is now used.</P>
8855 <H3>Support the first phase of "coalesced symbols".</H3>
8857 <H4>I) Goals</H4>
8859 <P>The goal of coalesced symbols is to provide the linker support
8860 needed for the C++ compiler to solve problems with generating code
8861 for the following C++ features:</P>
8863 <UL>
8864 <LI>implicit template instantiation</LI>
8866 <LI>static variables in inline functions</LI>
8868 <LI>RTTI</LI>
8869 </UL>
8871 <H4>II) The functionality</H4>
8873 <P>A "coalesced symbol" is a true definition of a symbol that may
8874 appear one or more times in the compilation units generated by the
8875 compiler. This will allow the compiler to provide a better user
8876 experience by not forcing the user to tell the compiler exactly where
8877 to output the definition of the symbol, which is problematic in
8878 implementing some of the above C++ features.</P>
8880 <P>The static link editor will allow multiple definitions of a
8881 "coalesced symbol" without any warnings or errors. The static link
8882 editor will output only one instance of each "coalesced symbol" using
8883 the first instance it encounters in the object files being linked.
8884 The static link editor will always output an instance of a "coalesced
8885 symbol" if it appears in the object files being linked even if it
8886 also appears in the dynamic libraries being referenced.</P>
8888 <P>The dynamic link editor will then do its relocation such that only
8889 one instance of each "coalesced symbol" is used throughout the
8890 program.</P>
8892 <H4>III) The implementation</H4>
8894 <P>A Mach-O new section type, "coalesced", has been be added to the
8895 compiler tools. A "coalesced symbol" will simply be a symbol defined
8896 in a section with the type "coalesced". The assembler has been
8897 changed to accept the new section type identifier "coalesced".</P>
8899 <P>For example to create a "coalesced symbol" named _foo as a 4-byte
8900 integer initialized to one, the following assembly code could be
8901 used:</P>
8903 <BLOCKQUOTE>.section __DATA, __coalesced, coalesced<BR>
8904 .globl _foo<BR>
8905 _foo: .long 1</BLOCKQUOTE>
8907 <P>An example of a template function created as a "coalesced symbol"
8908 could use the following assembly code:</P>
8910 <BLOCKQUOTE>.section __TEXT, __template, coalesced,
8911 pure_instructions<BR>
8912 .globl _template_func<BR>
8913 _template_func:<BR>
8914 li r3,1<BR>
8915 blr</BLOCKQUOTE>
8917 <P>Once the compiler group establishes conventional sections for
8918 various C++ "coalesced symbols" we will add built-in assembler
8919 section directives like: .template, .coalesced_data, .rtti_data as
8920 equivalents for the above section directives.</P>
8922 <P>A new section type constant, S_COALESCED, has been added to the
8923 header file, &lt;mach-o/loader.h&gt; which describes the Mach-O
8924 object file format. In the object files created by the assembler
8925 "coalesced" section types have this constant in the flags field of
8926 the section header.</P>
8928 <P>The static and dynamic linker look at the section type to
8929 determine that the symbol is a "coalesced symbol" and allow multiple
8930 definitions of "coalesced symbols".</P>
8932 <P>The static link editor effectively divides up a "coalesced
8933 section" on the boundaries of the symbols in that section,
8934 associating the bytes of the section after each symbol with the
8935 preceding symbol. An object file is considered malformed if a
8936 "coalesced section" did not have a symbol at the first address of the
8937 section.</P>
8939 <P>The symbolic debugging symbol table entries, STABS, for a given
8940 coalesced symbol must be preceded by the new begin nsect symbol stab
8941 (N_BNSYM) and an end with the new end nsect symbol stab (N_ENSYM).
8942 These stabs must be at the start and end of the given coalesced
8943 symbol.</P>
8945 <H4>IV) The restrictions</H4>
8947 <P>In order to allow the dynamic linker to make sure only one
8948 instance of of each "coalesced symbol" is used throughout the
8949 program, all references to "coalesced symbols" via instructions must
8950 be done indirectly through symbol stubs (for calls) or through
8951 non-lazy pointers. The static link editor enforces this restriction
8952 by checking that there are no direct relocation entries to "coalesced
8953 symbol" using section difference relocation entries, and if any are
8954 found it will considered the object file malformed. This is must be
8955 true even if the coalesced symbol is defined in the same compilation
8956 unit where references are also being made.</P>
8958 <P>The assembler and static link editor have also been changed so
8959 that if a global symbol is referenced in a "coalesced section" that
8960 is defined, an external relocation entry is used instead of a local
8961 relocation entry.</P>
8963 <P>Routines generated for C++ static initializers which are
8964 initializing a "coalesced symbol" must also be a "coalesced symbol".
8965 They do require one code generation change to make it possible that
8966 they could be called more than once and only do the initializing the
8967 first time. This is required so they dynamic linker does not need to
8968 keep track of the initializers for each "coalesced symbol". It will
8969 further require the existing implementation in the GNU compiler to
8970 change slightly. Currently the GNU compiler generates one
8971 initializers function for all C++ static initializers in the
8972 compilation unit. This will have to change so that a separate
8973 function would be created for initializing a "coalesced symbol".</P>
8975 <H3>Lazy binding of symbols vs binding all symbols at launch
8976 time</H3>
8978 <P>For MacOS X the dynamic linker defaults to lazy binding. That is,
8979 symbols are linked into the program as they are needed. For function
8980 calls this usually happens when the function is called the first
8981 time. For data references this happens before any code that can
8982 reference the data is executed. This generally reduces the time it
8983 takes to start execution of the program by delaying the binding and
8984 initialization of symbols.</P>
8986 <P>With lazy binding, the linking of symbols into the program happens
8987 in a distributed fashion as opposed to binding all symbols when the
8988 program is launched. A program or plugin may be built with the
8989 -bind_at_load option to force all symbols to be bound when the
8990 program is launched or when the plugin is loaded.</P>
8992 <P>There can be rare cases where lazy binding and binding at launch
8993 can produce different results. These cases can only occur when a
8994 program is using more than one library that defines the same symbol,
8995 which is not generally a common occurrence. For example a program
8996 could be linked against both a debug and non-debug version of the
8997 same library. Even in this case, usually both libraries define all
8998 the same symbols, so the symbols the program ends up using are those
8999 from the first library listed on the program's link line. However if
9000 the two libraries do not define the same symbols organized in the
9001 same way, that's when these rare cases where lazy binding and binding
9002 at launch can produce different results.</P>
9004 <P>To understand these cases one needs to understand what is meant by
9005 "how a library's symbols are organized" and how that effects linking.
9006 The symbols of a library are organized into modules. Library modules
9007 are the object files that were used to build the library and are
9008 typically the created from compiling one source file. However the
9009 library implementor may combine a number of compiled source files for
9010 a library subsystem into a larger object file that is then used to
9011 build the library. The library implementor will do this when the
9012 interface symbols that make up a subsystem share some private or
9013 internal data, such that all the interface symbols for that subsystem
9014 must be used together for the subsystem to work correctly. Examples
9015 might include a malloc subsystem, a pthreads subsystem, or data base
9016 subsystem. These subsystems may have many interface symbols that must
9017 be used together as they are sharing data among the interfaces. And
9018 the interface symbols would not work correctly if some symbols were
9019 used from one implementation and some from another. Rather than just
9020 let the program work incorrectly in these cases, when the static or
9021 dynamic linker detects these cases they will generate a multiply
9022 defined symbol error. Indicating that parts of more than one
9023 implementation of a subsystem are trying to be used in the same
9024 program.</P>
9026 <P>Now how library modules effects linking is, that if a symbol is
9027 needed to resolve an undefined reference, the first library module in
9028 the list of libraries that has a definition is used. Then not only is
9029 the symbol that resolves the undefined reference used from the
9030 library module but all symbols in that same library module are then
9031 used.</P>
9033 <P>So when more than one library that defines the same symbol is
9034 used, the static and dynamic linkers must select a definition for the
9035 symbol to be used from one of the libraries. As stated above, the
9036 first library module in the list of libraries that has a definition
9037 is used. Then all the symbols from that library module are then used.
9038 So which library modules get used by a program is a function of which
9039 undefined references must be resolved, the order they are resolved
9040 and which symbols are defined in each library module.</P>
9042 <P>For lazy binding and binding at launch the list of undefined
9043 references that must be resolved are typically different. For lazy
9044 binding this usually is a subset of the undefined symbols that a
9045 program uses. So if more than one library is used by the program that
9046 defines the same global symbols but are organized into different
9047 library modules, it is possible that depending on which undefined
9048 references are need to be resolved that different library modules
9049 maybe selected. In the case of lazy binding a first subset of the
9050 symbols may select a library module from one library and a second
9051 subset of symbols may select a library module from a different
9052 library. This may lead to multiply defined symbol errors. Or may lead
9053 to symbols being used from different implementations of a
9054 subsystem.</P>
9056 <P>But in the common case, if no two libraries that are used by a
9057 program define the same symbols there is not a difference in lazy
9058 binding and binding at launch. Further if there is more than one
9059 library that defines the same symbols and the are organized into the
9060 same library modules again there is no difference in lazy binding and
9061 binding at launch. For MacOS X post PR2, the static link editor, now
9062 detects cases where lazy binding and binding at launch could produce
9063 different results, and issues a warning. The warning suggests the use
9064 of the -bind_at_load option. Also for MacOS X post PR2, the dynamic
9065 linker ensures that symbols in a program built with the -bind_at_load
9066 option, are the same as the static link editor determined would be
9067 used. See Radar bug #2378121.</P>
9069 <H5><FONT SIZE="+1">Changes since the last release (cctools-314 for
9070 the 5.5 MacOS X PR3 release)</FONT></H5>
9072 <UL>
9073 <LI>Fixed a bug in the dynamic linker that did not save volatile
9074 floating point or Altivec registers before calling shared library
9075 initialization or module initialization routines. Radar bug
9076 #2424571.</LI>
9078 <LI>Fixed a bug in the dynamic linker that did not fully bind
9079 library initialization routines which had private extern
9080 references. Radar bug #2423809.</LI>
9082 <LI>Removed the references to Rhapsody from the libtool man page.
9083 Radar bug #2399334.</LI>
9084 </UL>
9086 <H5><FONT SIZE="+1">Changes since the last release (cctools-313 for
9087 the 5.5 MacOS X PR3 release)</FONT></H5>
9089 <UL>
9090 <LI>The environment variable DYLD_ABORT_MULTIPLE_INITS has been
9091 added as a debugging aid. When set it causes the program to abort
9092 when multple library initialization routines are being run which
9093 can happen if code called via a library initialization routine
9094 makes a call to a dyld API. Then under the debugger it is easy to
9095 do a back trace and find the code that is making the call to a
9096 dyld API via code called from a library initialization routine.
9097 Radar bug #2423143.</LI>
9099 <LI>Re-fixed a bug in the dynamic linker that did not fully bind
9100 library initialization routines before calling them. There was a
9101 case with Classic crashing. Radar bug #2413950.</LI>
9103 <LI>New the API _dyld_debug_set_error_func() has been added to the
9104 dyld debug API set to better determine what has happened when a
9105 dyld debug API returns DYLD_FAILURE. Radar bug #2421770.</LI>
9107 <LI>The dynamic linker was changed to send a DYLD_MODULE_REMOVED
9108 and then a DYLD_IMAGE_REMOVED event when the plugin is unloaded.
9109 This will allow the debugger to know the plucin is nolonger
9110 present in the task. Radar bug #2421760.</LI>
9112 <LI>The public release notes have been edited by the Tech Pubs
9113 group for DP3. Radar bug #2420736.</LI>
9115 <LI>The tool nmedit is now installed in /usr/bin instead of
9116 /usr/local/bin so that Project Builder can use it for export
9117 lists. Radar bug #2396595.</LI>
9118 </UL>
9120 <H5><FONT SIZE="+1">Changes since the last release (cctools-312 for
9121 the 5.5 MacOS X PR3 release)</FONT></H5>
9123 <UL>
9124 <LI>Fixed a bug in the dynamic linker that did not fully bind
9125 library initialization routines before calling them. Radar bug
9126 #2419089.</LI>
9127 </UL>
9129 <H5><FONT SIZE="+1">Changes since the last release (cctools-311 for
9130 the 5.5 MacOS X PR3 release)</FONT></H5>
9132 <UL>
9133 <LI>Changed the static linker to cleanup the code gen of the
9134 compiler where the compiler generates an indirect call to a
9135 function forward defined. This code gen caused a problem when the
9136 dynmaic linker was trying to fully bind a library initialization
9137 routine because the indirect call in this case does not have an
9138 undefined reference in the object module but rather a definition.
9139 This then caused initialization routines to be interleaved when
9140 this call was lazy bound. Radar bug #2417690.</LI>
9141 </UL>
9143 <H5><FONT SIZE="+1">Changes since the last release (cctools-310 for
9144 the 5.5 MacOS X PR3 release)</FONT></H5>
9146 <UL>
9147 <LI>Fixed a bug in the static linker that caused gdb to print
9148 variables as &lt;incomplete type&gt;. This can only occur if an
9149 incremental link is done as part of building the image (aka ld
9150 -r). Radar bug #2415697.</LI>
9151 </UL>
9153 <H5><FONT SIZE="+1">Changes since the last release (cctools-309 for
9154 the 5.5 MacOS X PR3 release)</FONT></H5>
9156 <UL>
9157 <LI>Fixed a bug in the static linker that incorrectly printed a
9158 warning message about symbols used from earilier dynamic libraries
9159 and suggesting the use of -bind_at_load when it shouldn't. Also
9160 fixed one more case where something can be successfully staticly
9161 linked with -bind_at_load and then fails to link with a multiply
9162 defined error from the dynamic linker when executed. Radar bug
9163 #2378121.</LI>
9165 <LI>Fixed a bug in the static linker that did not recognize the
9166 -Sn option. Radar bug #2415456.</LI>
9167 </UL>
9169 <H5><FONT SIZE="+1">Changes since the last release (cctools-308 for
9170 the 5.5 MacOS X PR3 release)</FONT></H5>
9172 <UL>
9173 <LI>Fixed a bug in the dynamic linker that did not fully bind
9174 library initialization routines before calling them. Radar bug
9175 #2413950.</LI>
9176 </UL>
9178 <H5><FONT SIZE="+1">Changes since the last release (cctools-307 for
9179 the 5.5 MacOS X PR3 release)</FONT></H5>
9181 <UL>
9182 <LI>Support in the static linker was added to remove duplicate
9183 BINCL/EINCL stab groups. This is enabled with the -Si option to
9184 ld(1) and is the default (see new features above). To get the
9185 static linker to not strip any symbols the new option -Sn can be
9186 used. Radar bug #2410704.</LI>
9188 <LI>Changed &lt;mach-o/dyld.h&gt; so that it does not use "bool"
9189 when compiled with the C++ compiler. Radar bug #2412898.</LI>
9190 </UL>
9192 <H5><FONT SIZE="+1">Changes since the last release (cctools-306 for
9193 the 5.4 MacOS X PR2 release)</FONT></H5>
9195 <UL>
9196 <LI>Added the first phase of support for "coalesced symbols".
9197 Currently only support for -dynamic code gen for PowerPC has been
9198 tested (intel and static code gen is not yet tested). The support
9199 is complete except for prebinding with coalesced symbols. Because
9200 of that reason use of coalesced symbols should not yet be used in
9201 B&amp;I builds. See new features above. Radar bug #2411273.</LI>
9203 <LI>Changed the references to "Rhapsody" to "MacOS X" on the
9204 assembler man page. Radar bug #2399294.</LI>
9206 <LI>Removed the the references to "Rhapsody" on the ar(5) man page
9207 and the statement that the extended format was not supported as
9208 support for it was added back in the Rhapsody DR2 release. Radar
9209 bug #2399338.</LI>
9211 <LI>Added support for the G4 (7400) cpu subtype to the compiler
9212 tools. Radar bug #2397523.</LI>
9214 <LI>The static and dynamic link editors were changed to fix cases
9215 where lazy binding can result in two different globals functions
9216 being used (or multiply defined errors). In these cases the
9217 program needs to be built with the -bind_at_load flag (or run with
9218 DYLD_BIND_AT_LAUNCH set) and the static link editor now detects
9219 these cases and issues a warning suggesting the use of the
9220 -bind_at_load option and then lists the symbols which are used
9221 from dynamic libraries where there is an earilier dynamic library
9222 with a definition of the symbol. See notes above about "Lazy
9223 binding of symbols vs binding all symbols at launch time". Radar
9224 bug #2378121.</LI>
9226 <LI>Added the dyld environment variable DYLD_IMAGE_SUFFIX which
9227 can be set to a library or framework suffix to be used by the
9228 program. Also included in this change is an optimization that
9229 removes some system calls in the case a library has already been
9230 loaded. of Radar bug #2384450</LI>
9232 <LI>Added printing a line of the form "&#91;Logging for Build
9233 &amp; Integration&#93; Used dynamic library: dylib_name", where
9234 dylib_name is a dynamic library being used in the link. This is
9235 done when the environment variable RC_TRACE_DYLIBS is set. Radar
9236 bug #2389955.</LI>
9238 <LI>Fixed a bug in the assemblers where it would ignore a line
9239 followed by a single '#'. Radar bug #2393418.</LI>
9241 <LI>The tool, nmedit(l), was fixed so that "-arch i386" can be
9242 used as the i386 architecture family type like the other object
9243 file tools. This bug caused nmedit(l) with "-arch i386" not to
9244 work on object files that had the i486 cpusubtype. Radar bug
9245 #2405763.</LI>
9247 <LI>The Intel assembler was changed to assemble the 'fild'
9248 instruction the same as the "filds" and the "fist" instruction the
9249 same as the "fists". Radar bug #2410226.</LI>
9251 <LI>The cctools project was changed to install the external
9252 release notes instead of the Documentation project. Radar bug
9253 #2411118.</LI>
9254 </UL>
9256 <H3><FONT SIZE="+2">Notes Specific to Release 5.4 (MacOS X
9257 PR2)</FONT>&nbsp;</H3>
9259 <H3><FONT SIZE="+1">New Features</FONT></H3>
9261 <P>Dynamic shared libraries now can have a dynamic shared library
9262 initialization routine (Radar bug #2367584). This routine is
9263 specified to libtool(1) with the new "-init <I>symbol_name</I>"
9264 argument. The library initialization routine is called before any
9265 symbol is used from the library including C++ static initializers
9266 (and #pragma CALL_ON_MODULE_BIND routines). If cc(1) -dynamiclib is
9267 used instead of libtool(1), you may need to pass the argument with
9268 -Wl,-init, <I>symbol_name </I>until Radar bug #2367569 is fixed. Also
9269 gdb(1) will not read the symbols of dynamic shared libraries with
9270 library initialization routine due to Radar bug #2367576.</P>
9272 <P>The dynamic linker now supports shared library install names that
9273 start with "@executable_path/" and substitutes the directory path of
9274 the executable for "@executable_path/"when locating the library. This
9275 requires a kernel from Beaker2H3 or later. Without that kernel, this
9276 feature can only be used if argv&#91;0&#93; is in fact the name of
9277 the executable and it is an absolute path or relative to the current
9278 directory (contains at a '/' in the argv&#91;0&#93; string). The
9279 kernel in Beaker2H3 was extended to pass the first argument to exec()
9280 to the entry point interface, and having that kernel this feature can
9281 be used no matter what argv&#91;0&#93; is.</P>
9283 <P>The NSLinkModule() API now has an option to cause it to return
9284 when there is an error loading the module and a new API
9285 NSLinkEditError() to get the error information. To use this the
9286 constant NSLINKMODULE_OPTION_RETURN_ON_ERROR needs to be or'ed into
9287 the options parameter to NSLinkModule(). Then if NSLinkModule()
9288 returns NULL the error information can be retrieved with
9289 NSLinkEditError().</P>
9291 <P>The NSLINKMODULE_OPTION_RETURN_ON_ERROR option is an alternative
9292 method to the existing dyld error handling which fits better with a
9293 plugin model. With the NSLINKMODULE_OPTION_RETURN_ON_ERROR option,
9294 the model for handling errors is to simply return without any changes
9295 to the program. To support this model of error handling a new API has
9296 been added to allow the programmer to get the error information that
9297 the dyld error handlers would normally have gotten. The API is
9298 similar to the dyld linkEdit error handler except that all the
9299 parameters are passed as pointers to be filled in.</P>
9301 <BLOCKQUOTE>extern void NSLinkEditError(<BR>
9302 NSLinkEditErrors *c,<BR>
9303 int *errorNumber,<BR>
9304 const char **fileName,<BR>
9305 const char **errorString);</BLOCKQUOTE>
9307 <P>The last two parameters return pointers to static buffers
9308 allocated in the dynamic linker which get reused on subsequent calls
9309 to NSLinkEditError(). The NSLinkEditErrors enum has been extended to
9310 include NSLinkEditUndefinedError and
9311 NSLinkEditMultiplyDefinedError.</P>
9313 <H5><FONT SIZE="+1">Changes since the last release (cctools-305 for
9314 the 5.4 MacOS X PR2 release)</FONT></H5>
9316 <UL>
9317 <LI>Fixed a bug in the dynamic linker where a non-lazy reference
9318 from a dynamic library module that only had private extern symbol
9319 definitions was not getting bound. This showed up in keymgr.o from
9320 libcc_dynamic.a referencing the symbol ___eh_global_dataptr. Radar
9321 bug #2391709.</LI>
9322 </UL>
9324 <H5><FONT SIZE="+1">Changes since the last release (cctools-304 for
9325 the 5.4 MacOS X PR2 release)</FONT></H5>
9327 <UL>
9328 <LI>Fixed a bug in ld(1) when -U flags to allow undefined symbols
9329 and LD_PREBIND was set it would exit non-zero. Radar bug
9330 #2389026.</LI>
9331 </UL>
9333 <H5><FONT SIZE="+1">Changes since the last release (cctools-303 for
9334 the 5.4 MacOS X PR2 release)</FONT></H5>
9336 <UL>
9337 <LI>Backed out the fix for Radar bug #2378121 done in cctools-303
9338 as it caused progams like Terminal to launch very slowly. Terminal
9339 is calling signal(2) which causes the executable containing the
9340 signal handler to be fully bound. The fix for Radar bug #2378121
9341 in this case caused a big slow down in the case of fully
9342 binding.</LI>
9343 </UL>
9345 <H5><FONT SIZE="+1">Changes since the last release (cctools-302 for
9346 the 5.4 MacOS X PR2 release)</FONT></H5>
9348 <UL>
9349 <LI>Fixed a bug where gprof -S crashed when run on the Appkit
9350 trying to produce an order file. Radar bug #2377933.</LI>
9352 <LI>Changed a message printed by checksyms(l) from using "release
9353 control" to using "Build &amp; Integration". Radar bug
9354 #2377929.</LI>
9356 <LI>Fixed a bug in the dynamic linker in a case where lazy binding
9357 can result in two different globals functions being used. Radar
9358 bug #2378121.</LI>
9360 <LI>Picked up the Tech Pubs edited dyld(1) man page. Radar bug
9361 #2366767.</LI>
9362 </UL>
9364 <H5><FONT SIZE="+1">Changes since the last release (cctools-301 for
9365 the 5.4 MacOS X PR2 release)</FONT></H5>
9367 <P>Fixed a bug where the intel instruction "setc %al" did not
9368 assemble. Radar bug #2374684.</P>
9370 <P>Fixed a bug in the static link editor where the wrong private
9371 extern function could be called from a dynamic library. Radar bug
9372 #2374465. This resulted in throw() and dynamic_cast() to crash when
9373 in a shared library. The Finder was the one having these problems
9374 (Radar bugs 2369470 and 2364994).</P>
9376 <H5><FONT SIZE="+1">Changes since the last release (cctools-300 for
9377 the 5.4 MacOS X PR2 release)</FONT></H5>
9379 <UL>
9380 <LI>Fixed a bug in the cctools project that caused System
9381 Framework to come up with an undefined for the symbol
9382 _qsort_load_order_values.</LI>
9383 </UL>
9385 <H5><FONT SIZE="+1">Changes since the last release (cctools-299 for
9386 the 5.4 MacOS X PR2 release)</FONT></H5>
9388 <UL>
9389 <LI>Dynamic shared libraries now can have a dynamic shared library
9390 initialization routine Radar bug #2367584. See new features
9391 above.</LI>
9393 <LI>The PowerPC instruction "vspltisb v1,-1" assembles wrong.
9394 Radar bug #2366525.</LI>
9396 <LI>There was a typo in arch 3 man page where "pcc" should have
9397 been "ppc". Radar bug #2366781.</LI>
9399 <LI>There was a typo in dyld.1 man page where "effect" should have
9400 been "affect". Radar bug #2366750.</LI>
9402 <LI>Fix a bug where the assembler does not catch the error case of
9403 an unterminated .macro directive. Radar bug #2368659.</LI>
9405 <LI>The was a bug in nmedit(1) when using -R and processing more
9406 than one architecture it printed an error stating "more than one
9407 symbol" for a symbol listed in the -R file appeared in the input
9408 file. Also changed nmedit(l) to strip all arch's when no -arch
9409 flags are specified to match the behavior of strip(1). Radar bug
9410 #2367598.</LI>
9412 <LI>Changed the cctools project when building for Beaker
9413 (RC_OS=macos) to not install its headers into the DSTROOT. Radar
9414 bug #2370826.</LI>
9415 </UL>
9417 <H5><FONT SIZE="+1">Changes since the last release (cctools-298 for
9418 the 5.4 MacOS X PR2 release)</FONT></H5>
9420 <UL>
9421 <LI>Fixes were made to one of the assembly language interfaces in
9422 the dynamic linker to allow it to be used with CFM vector
9423 libraries. Radar bug #2358962.</LI>
9424 </UL>
9426 <H5><FONT SIZE="+1">Changes since the last release (cctools-297 for
9427 the 5.4 MacOS X PR2 release)</FONT></H5>
9429 <UL>
9430 <LI>Added support for "@executable_path/" in shared library
9431 install names. See new features above.</LI>
9432 </UL>
9434 <H5><FONT SIZE="+1">Changes since the last release (cctools-296 for
9435 the 5.4 MacOS X PR2 release)</FONT></H5>
9437 <UL>
9438 <LI>Fixed a bug introduced in the cctools-296 dyld that caused
9439 Terminal (and potentally any program) to crash. This was fixed as
9440 part of the quick looks for Beaker2F and is fixed in the released
9441 Beaker2F1.</LI>
9442 </UL>
9444 <H5><FONT SIZE="+1">Changes since the last release (cctools-295 for
9445 the 5.4 MacOS X PR2 release)</FONT></H5>
9447 <UL>
9448 <LI>The NSLinkModule() now can return when an error occurs in
9449 loading a module and the new API NSLinkEditError() allows error
9450 information to be retrieved. See new features above.</LI>
9452 <LI>Fixed a bug in NSAddLibrary() that did not load the dependent
9453 libraries. This showed up when doing an NSAddLibrary() on Carbon
9454 and then trying to look up a symbol in the QuickDraw library that
9455 Carbon was linked with.</LI>
9457 <LI>Added the -v (verification flag) to checksyms(1) to print out
9458 a single line for each type of error checksyms finds. Also added
9459 hacks to checksyms(1) to allow all MacOS X PR1 paths for shared
9460 library install names.</LI>
9461 </UL>
9463 <H5><FONT SIZE="+1">Changes since the last release (cctools-294 for
9464 the 5.3 MacOS X PR1 release)</FONT></H5>
9466 <UL>
9467 <LI>The sources have had the Darwin copyrights added to them.</LI>
9469 <LI>A bug fix was made to the new API
9470 _dyld_image_containing_address() that was added for cctools-294.
9471 The routine would generally return the wrong for anything loaded
9472 with NSLinkModule() or any non-prebound shared library. The values
9473 used for checking the address ranges effectively had the value of
9474 the vmslide (the difference from the staticly linked address and
9475 the address loaded) added twice. So if the vmslide were zero, as
9476 in the case with prebound libraries things it would work but tend
9477 to fail otherwise (except for the executable which worked).</LI>
9478 </UL>
9480 <H3><FONT SIZE="+2">Notes Specific to Release 5.3 (MacOS X
9481 PR1)</FONT></H3>
9483 <H3><FONT SIZE="+1">New Features</FONT></H3>
9485 <P>The NSLinkModule() API now can create private modules and the new
9486 API NSLookupSymbolInModule() allows symbols to be looked up in a
9487 private module. To do this the interface to NSLinkModule() has change
9488 in a compatible way from:</P>
9490 <BLOCKQUOTE>extern NSModule NSLinkModule(<BR>
9491 NSObjectFileImage objectFileImage,<BR>
9492 const char *moduleName,<BR>
9493 enum bool bindNow);</BLOCKQUOTE>
9495 <P>to:</P>
9497 <BLOCKQUOTE>extern NSModule NSLinkModule(<BR>
9498 NSObjectFileImage objectFileImage,<BR>
9499 const char *moduleName,<BR>
9500 unsigned long options);</BLOCKQUOTE>
9502 <P>with the options as follows:</P>
9504 <BLOCKQUOTE>#define NSLINKMODULE_OPTION_NONE 0x0<BR>
9505 #define NSLINKMODULE_OPTION_BINDNOW 0x1<BR>
9506 #define NSLINKMODULE_OPTION_PRIVATE 0x2</BLOCKQUOTE>
9508 <P>The first two are the same as bindNow with a value of FALSE and
9509 TRUE. The private options is what is used to load a private module.
9510 The API for getting to the symbols of a NSModule that has been
9511 privately linked is:</P>
9513 <BLOCKQUOTE>extern NSSymbol NSLookupSymbolInModule(<BR>
9514 NSModule module,<BR>
9515 const char *symbolName);</BLOCKQUOTE>
9517 <P>Then to get the address of the returned NSSymbol, the existing
9518 NSAddressOfSymbol() API can be used.</P>
9520 <P>The NSUnLinkModule() API is now implemented with enough
9521 functionality to make Apache work (Radar bug #2262020). This has been
9522 confirmed by Wilfredo Sanchez the owner of the Apache project. It
9523 currently has the following limitations (to be fixed in future
9524 releases):</P>
9526 <UL>
9527 <LI>only works for plugins (can only be called on modules that
9528 were returned by NSLinkModule).</LI>
9530 <LI>C++ plugins that have static destructor can't be unloaded. The
9531 program will crash in atexit(3) when the unlinked destructor is
9532 attempted to be called.</LI>
9534 <LI>Objective-C plugins should not be unloaded. The Objective-C
9535 runtime has not been updated to know about unloading and the
9536 result is very likely to crash the program.</LI>
9538 <LI>The debugger has not been update to know about unloading and
9539 trying to debug a program that unloads it's plugins may confuse or
9540 crash the debugger.</LI>
9541 </UL>
9543 <P>The interface to NSUnLinkModule has change in a compatible way
9544 from:</P>
9546 <BLOCKQUOTE>extern enum bool NSUnLinkModule(<BR>
9547 NSModule module,<BR>
9548 enum bool keepMemoryMapped);</BLOCKQUOTE>
9550 <P>to:</P>
9552 <BLOCKQUOTE>extern enum bool NSUnLinkModule(<BR>
9553 NSModule module,<BR>
9554 int options);</BLOCKQUOTE>
9556 <P>where the options are:</P>
9558 <BLOCKQUOTE>#define NSUNLINKMODULE_OPTION_NONE 0x0<BR>
9559 #define NSUNLINKMODULE_OPTION_KEEP_MEMORY_MAPPED 0x1<BR>
9560 #define NSUNLINKMODULE_OPTION_RESET_LAZY_REFERENCES 0x2</BLOCKQUOTE>
9562 <P>The first two are the same as keepMemoryMapped with a value of
9563 FALSE and TRUE. The reset lazy references allows unloaded modules
9564 with only call sites to undefined functions (direct calls not calls
9565 through pointers) to be allowed when unloading and not causing an
9566 undefined symbol error. Then if a subsequent module is loaded that
9567 defines symbols that were previously undefined, the call sites will
9568 then use the new definitions. This is currently only implemented for
9569 PowerPC. For intel it prints a message and exits even if the symbol
9570 gets redefined. This will be fixed for intel in a future release.</P>
9572 <P>Support for module termination functions has been added for
9573 plugins (only). Currently the compiler pragma CALL_ON_UNLOAD (as well
9574 as CALL_ON_LOAD) is not yet implemented to use this feature as
9575 intended. A work around can be done in place of having the
9576 pragma:</P>
9578 <BLOCKQUOTE>void my_term(void)<BR>
9579 {<BR>
9580 /* do module termination */<BR>
9581 }<BR>
9582 /* #pragma CALL_ON_UNLOAD my_term */<BR>
9583 #pragma SECTION data ".section __DATA, __mod_term_func,
9584 mod_init_funcs"<BR>
9585 static void (*dummy)(void) = my_term;<BR>
9586 #pragma SECTION data</BLOCKQUOTE>
9588 <P>The cctools-294 project has an implementation of the FreeBSD
9589 dlopen() interfaces. The header file dlfcn.h and the library libdl.a
9590 are NOT installed or built by the project by default. This is to
9591 avoid automatic configure scripts of projects from using this stuff
9592 in release builds before it can be tested by project owners. If an
9593 when a future version of cctools has a working set of dlopen()
9594 interfaces it will install the header file dlfcn.h and build the
9595 library code by default. Most likely the library code will be in
9596 included in System framework and not a separate libdl.a. At that time
9597 a man page will installed. Currently there is no MacOS X Server
9598 version of the man page and the FreeBSD version must be
9599 consulted.</P>
9601 <P>There is support for managing the list of globally exported names
9602 in cctools that is generally not well known. For managing the list of
9603 globally exported names with a list of global symbols that is
9604 maintained by the developer the existing tools nmedit(l) and strip(1)
9605 can be used. The approach is to build the project normally with full
9606 debugging symbols. Then nmedit(1) is run on that with the list of
9607 exported symbols and the result is placed in the standard $(SYMROOT).
9608 nmedit(1) turns all other global symbols not listed in the file into
9609 statics. That resulting file still has all the debugging symbols and
9610 can be fully symbolically debugged. Then when the file is copied from
9611 the $(SYMROOT) to the $(DSTROOT) in the install process, it is
9612 strip(1)'ed with the usual -S (or other options) to remove debugging
9613 symbols. This leaves the static symbols as well as the global symbols
9614 so that back traces will still have the symbol names. Assuming the
9615 list of symbols is in the file save_syms, the example commands would
9616 be:</P>
9618 <BLOCKQUOTE>nmedit -s save_syms $(OBJROOT)/hello -o
9619 $(SYMROOT)/hello<BR>
9620 strip -S $(SYMROOT)/hello -o $(DSTROOT)/hello</BLOCKQUOTE>
9622 <P>If you are building a dynamic library you may also have to do and
9623 "ld -r" of all of your object files into one object file. You can
9624 also manage the list of globally exported names in your project with
9625 nmedit(1) or strip(1).</P>
9627 <P>In the future there will also be compiler support to use the
9628 external/internal #pragmas that CFM uses. Today you can use the key
9629 word __private_extern__ to get this functionality.</P>
9631 <P>As of cctools-292, the cctools project has been updated to be able
9632 to built with the egcs compiler with no warnings from source code of
9633 the project (the header files in Beaker1I2 still produce
9634 warnings).</P>
9636 <P>The cctools-294 project has been ported and tested on MacOS X
9637 using Beaker1L. To build cctools-294 for MacOS X, first the SDK has
9638 to be installed on a PowerPC machine with
9639 /System/Administration/Installer.app into /Local/Public/MacOSX. Then
9640 the commands to build it are:</P>
9642 <BLOCKQUOTE># ~rc/bin/buildit -release Beaker cctools-293 RC_OS=macos</BLOCKQUOTE>
9644 <P>Only the profileServer is left to be ported. It is currently not
9645 built for MacOS X when RC_OS=macos.</P>
9647 <H5><FONT SIZE="+1">Changes since the last release (cctools-293 for
9648 the 5.3 MacOS X PR1 release)</FONT></H5>
9650 <UL>
9651 <LI>The cctools-294 version of ld(1) as a fix for a crash that
9652 ocurred when building the CoreGraphicsRIP-30 project for
9653 Beaker1L3.</LI>
9655 <LI>The new API _dyld_image_containing_address() was added. It
9656 takes an address and returns TRUE or FALSE depending on if that
9657 address is in any dyld managed image. Radar bug #2325380.</LI>
9659 <LI>The man page for libtool(1) has been updated. Radar bug
9660 #2324061.</LI>
9661 </UL>
9663 <H5><FONT SIZE="+1">Changes since the last release (cctools-292 for
9664 the 5.3 MacOS X PR1 release)</FONT></H5>
9666 <UL>
9667 <LI>The cctools-293 project code has the fixes needed to complile
9668 and use POSIX threads instead of cthreads. This has been tested on
9669 Beaker1I2 compiling with -D_ POSIX_THREADS defined (this is
9670 defined in &lt;unistd.h&gt; for Beaker1J2 but not for Beaker1I2).
9671 Testing could not be done using Beaker1J2 as is too unstable. The
9672 code that tried to use pthreads in cctools-292 will not even
9673 compile when _ POSIX_THREADS is defined.</LI>
9674 </UL>
9676 <H5><FONT SIZE="+1">Changes since the last release (cctools-291 for
9677 the 5.3 MacOS X PR1 release)</FONT></H5>
9679 <UL>
9680 <LI>The cctools project code now uses POSIX threads instead of
9681 cthreads.</LI>
9683 <LI>The default segment alignment in the static link editor when
9684 linking a PowerPC target is now 4K instead of 8K. All other target
9685 architectures have not changed and their default segment alignment
9686 remains 8K. Radar bug # 2277625.</LI>
9688 <LI>The cctools project code now compiles with no warnings from
9689 the egcs compiler (header files in Beaker1I2 still produce
9690 warnings).</LI>
9692 <LI>Moved the i386 assembler to /usr/local/libexec/i386/as for
9693 MacOS X builds. The assembler driver /usr/bin/as and the compiler
9694 driver /usr/bin/cc are uneffected and will find the assembler in
9695 either the old or new place.</LI>
9696 </UL>
9698 <H5><FONT SIZE="+1">Changes since the last release (cctools-290 for
9699 the 5.3 MacOS X PR1 release)</FONT></H5>
9701 <UL>
9702 <LI>Fixed a bug introduced in the cctools-288 ld(1) when doing an
9703 ld -r with an indirect entry for a private_extern. This problem
9704 would show up when executing a binary with the error from dyld:
9706 <UL>
9707 <LI>dyld: /System/Applications/MailViewer.app/MailViewer
9708 Undefined symbols:<BR>
9709 dyld_lazy_symbol_binding_entry_point</LI>
9710 </UL>
9711 </LI>
9713 <LI>The problem in this case was the Message framework built with
9714 the ld(1) that had the bug. This also has been seen in Carbon
9715 apps, with the problem the Carbon framework.</LI>
9716 </UL>
9718 <H5><FONT SIZE="+1">Changes since the last release (cctools-289 for
9719 the 5.3 MacOS X PR1 release)</FONT></H5>
9721 <UL>
9722 <LI>Fixed a bug in the code added to nmedit for the -p option. The
9723 bug caused uses of nmedit without the -p option and with the -s
9724 option to not find any symbols listed in the -s argument.</LI>
9725 </UL>
9727 <H5><FONT SIZE="+1">Changes since the last release (cctools-288 for
9728 the 5.3 MacOS X PR1 release)</FONT></H5>
9730 <UL>
9731 <LI>Added the -p option to nmedit(l) which instead of changes
9732 symbols to static changes them to private externs. This option is
9733 allowed by itself without a -s or -R option which then changes all
9734 defined symbols to private extern. This is used to change all the
9735 symbols in libcc_dynamic.a to private extern as the C++ compiler
9736 has never supported the keyword __private_extern__.</LI>
9737 </UL>
9739 <H5><FONT SIZE="+1">Changes since the last release (cctools-287 for
9740 the 5.3 MacOS X PR1 release)</FONT></H5>
9742 <UL>
9743 <LI>Fixed nmedit(l) to change the indirect symbol table entries
9744 for global symbols it makes static. This problem showed up in
9745 using nmedit for the work around with the egcs compiler and C++
9746 RTTI common data in a dynamic shared library.</LI>
9748 <LI>Fixed ld(1) when doing an ld -r with an indirect entry for a
9749 private_extern. This problem showed up when building the Message
9750 framework and would get the error from ld: "ld: indirect symbol:_y
9751 can not be a private extern". And it also showed up in building
9752 Carbon when using strip which would produce the error message from
9753 ld: "ld: x.o indirect symbol table entry 0 past the end of the
9754 symbol table".</LI>
9756 <LI>Fixed ld(1) to correctly relocate non-lazy symbol pointers for
9757 non-global symbols. This can occur in one of three ways when a
9758 global symbol is changed to a non-global, via private_extern and
9759 ld -r, via nmedit and via strip.</LI>
9761 <LI>Changed dyld to print on stderr not on stdout for it's
9762 debugging output (Radar bug #2274737).</LI>
9764 <LI>Added passing -whyload through libtool(1) to ld(1).</LI>
9766 <LI>Fixed a bug so that if a PowerPC binary used the
9767 RESET_LAZY_REFERENCES NSUnLinkModule() option, and it was not
9768 linked with crt1.0, bundle1.o or dylib1.o that has the ".long
9769 dyld_stub_binding_helper" fix it won't crash.</LI>
9771 <LI>Changed the message printed when the environment variable
9772 RC_TRACE_ARCHIVES is set from: "RC_TRACE_ARCHIVES archive_name"
9773 to: "&#91;Logging for Build &amp; Integration&#93; Used static
9774 archive: archive_name". Radar bug #2310273.</LI>
9775 </UL>
9777 <H5><FONT SIZE="+1">Changes since the last release (cctools-286 for
9778 the 5.3 MacOS X PR1 release)</FONT></H5>
9780 <UL>
9781 <LI>The NSLinkModule() now can create private modules and the new
9782 API NSLookupSymbolInModule() allows symbols to be looked up in a
9783 private module. See new features above.</LI>
9785 <LI>The NSUnLinkModule() API is now implemented with enough
9786 functionality to make Apache work (Radar bug #2262020). See new
9787 features above.</LI>
9789 <LI>The cctools-287 project has an implementation of the FreeBSD
9790 dlopen() interfaces. See new features above.</LI>
9791 </UL>
9793 <H5><FONT SIZE="+1">Changes since the last release (cctools-285 for
9794 the 5.3 MacOS X PR1 release)</FONT></H5>
9796 <UL>
9797 <LI>Support for module termination functions has been added for
9798 things loaded with NSLinkModule() when NSUnLinkModule() is called.
9799 In this version of cctools NSUnLinkModule() is not implemented
9800 (that will be integrated in a later version). For now to test this
9801 -DTESTING_MOD_TERM needs to be set in RC_CFLAGS.</LI>
9803 <LI>Change the use of the i386 cpp macro to __i386__ and ppc to
9804 __ppc__ so this this version of cctools will compile with the
9805 upcoming release of the egcs compiler.</LI>
9806 </UL>
9808 <H5><FONT SIZE="+1">Changes made in cctools-285</FONT></H5>
9810 <UL>
9811 <LI>Fixed a bug in libtool(1) that was not using NEXT_ROOT when
9812 set to expand -l flags.</LI>
9814 <LI>Added printing a line of the form "RC_TRACE_ARCHIVES
9815 archive_name", where archive_name is a archive being put into the
9816 output of libtool(1) -static or being linked against by ld(1).
9817 This is done when the environment variable RC_TRACE_ARCHIVES is
9818 set. Radar bug #2303376.</LI>
9820 <LI>Made a change to the way the cctools project builds it's
9821 objects for the System framework. It now creates archives in
9822 /Local/Developer/System for libdyld, librld and libmacho. It
9823 creates profile versions with _pg and -static compiled versions
9824 with _static in the filenames. Radar bug #2268413.</LI>
9826 <LI>Removed an incorrect warning in ld(1) that stated
9827 <I>-keep_private_externs</I> must be used with <I>-dynamic</I>.
9828 This would be produced when using ld(1) with <I>-static</I>.</LI>
9830 <LI>Fixed a bug in ld(1) that was producing an incorrect error of
9831 the form "indirect symbol table entry 353 past the end of the
9832 symbol table". This can occured when a file is strip(1)'ed and
9833 global symbols are removed. This was found when the CoreGraphics
9834 framework was stripped removing two globals symbols and then the
9835 resulting framework was linked against.</LI>
9837 <LI>Fixed a bug in the i386 assembler in assembling the cmpxchg
9838 instruction. Previously this assembled using the opcode from the
9839 i486 manual ( 0F A6/r and 0F A7/r ) and was changed to the opcode
9840 in the Pentium manual (0F B0/r and 0F B1/r). The dissassembly in
9841 otool(1) was also changed.</LI>
9843 <LI>Fixed a bug in ranlib(1) (aka libtool) after printing warnings
9844 about with multiple symbols defined different archive members it
9845 crashed with a bus error.</LI>
9847 <LI>Fixed a bug in strip(1) when using the <I>-s filename</I>
9848 option on a dynamic library. This showed when linking against a
9849 CoreGraphics framework, the resulting link would fail with a
9850 malformed object error "ilocalsym field plus nlocalsym field of
9851 module table entry 1 past the end of the symbol table".</LI>
9853 <LI>Changed the #import &lt;sys/types.h&gt; in ranlib.h to
9854 #include &lt;sys/types.h&gt;. Radar bug #2303937.</LI>
9856 <LI>Made cctools 285 build without -DNeXT defined.</LI>
9858 <LI>A fix was made to the dyld debug code that get the thread
9859 suppend count of reset correctly for the thread that has the dyld
9860 lock when the dyld debug thread handles a message.</LI>
9862 <LI>The fixes were made to the dyld debug code made in cctools
9863 283.1 were picked up. Includes Radar bug #2286661.</LI>
9865 <LI>The fixes to moved the text files gprof.flat and gprof.callg
9866 from /usr/lib to /usr/share made in cctools 281.2 were picked
9867 up.</LI>
9868 </UL>
9870 <H5><FONT SIZE="+1">Changes made in cctools-284</FONT></H5>
9872 <UL>
9873 <LI>The fix to ar(1), made in cctools-281.1 (Radar bug #2284290)
9874 was merged in. The changed made to fix the dyld debug code made in
9875 cctools-283.1 are not in cctools-284.</LI>
9876 </UL>
9878 <H5><FONT SIZE="+1">Changes made in cctools-283.1</FONT></H5>
9880 <UL>
9881 <LI>Fixes were made to the dyld debug code for the port to MacOS X
9882 (Mach 3.0) to get it working.</LI>
9883 </UL>
9885 <H5><FONT SIZE="+1">There are no changes in cctools-283
9886 clone</FONT></H5>
9888 <H5><FONT SIZE="+1">Changes made in cctools-282</FONT></H5>
9890 <UL>
9891 <LI>The tools have been ported to MacOS X. The needed code is
9892 #ifdef'ed __MACH30__ which is defined in &lt;mach/mach.h&gt; when
9893 building for MacOS X.</LI>
9894 </UL>
9896 <P>&nbsp;</P>
9898 <H3><FONT SIZE="+2">Notes Specific to Release 5.2 (Rhapsody
9899 CR1)</FONT></H3>
9901 <H3><FONT SIZE="+1">New Features</FONT></H3>
9903 <P>The compiler tools now support the 4.4bsd archive extened format 1
9904 for long names (and names with embedded spaces). This is now the
9905 default. The option -L to produce archives using the extended format
9906 and the option -T to truncate names, as previously supported in the
9907 ar(1) command now also apply to ranlib(1) and libtool(1). Radar bug
9908 #1670513.</P>
9910 <P>The header file &lt;mach-o/getsect.h&gt; has been added to the
9911 system as the proper place to get the prototypes of the Mach-O
9912 routines. Radar bug #2227839.</P>
9914 <P>The VMX opcodes have been added to the Rhapsody PowerPC assembler
9915 and are documented in the assembler manual. Radar bug #2237908.</P>
9917 <P>The routine sa_rld_with_symtab() was added for use with the
9918 standalone runtime link editor. Radar bug #2231758.</P>
9920 <H5><FONT SIZE="+1">There are no changes in cctools-281.3
9921 clone</FONT></H5>
9923 <H5><FONT SIZE="+1">Changes made in cctools-281.2</FONT></H5>
9925 <UL>
9926 <LI>Moved text files gprof.flat and gprof.callg from /usr/lib to
9927 /usr/share . gprof/Makefile and gprof/gprof.h were changed. Radar
9928 bug #2287470.</LI>
9929 </UL>
9931 <H5><FONT SIZE="+1">Changes made in cctools-281.1</FONT></H5>
9933 <UL>
9934 <LI>In a stat struct there are three struct timespec's (defined in
9935 sys/time.h). The field name ts_sec was change to tv_sec to match
9936 Posix (Radar bug #2005170). So in for cctools, the use in
9937 ar/archive.c of the field ts_sec was changed to tv_sec in three
9938 places. Radar bug #2284290.</LI>
9939 </UL>
9941 <H5><FONT SIZE="+1">Changes since the last release (cctools-280 for
9942 the 5.2 Rhapsody CR1 release)</FONT></H5>
9944 <UL>
9945 <LI>Changed redo_prebinding to exit with a error code of 3 if the
9946 dependent libraries are out of date. Radar bug #2259447.</LI>
9947 </UL>
9949 <H5><FONT SIZE="+1">Changes since the last release (cctools-279 for
9950 the 5.2 Rhapsody CR1 release)</FONT></H5>
9952 <UL>
9953 <LI>Changed libtool to pass -F and -L flags to objcunique. Radar
9954 bug #2257931.</LI>
9955 </UL>
9957 <H5><FONT SIZE="+1">Changes since the last release (cctools-278 for
9958 the 5.2 Rhapsody CR1 release)</FONT></H5>
9960 <UL>
9961 <LI>A bug fix was made to the dyld library debug code that fixes a
9962 problem which prevents gdb getting the symbols for dynamic
9963 libraries. Radar bug #2255036.</LI>
9964 </UL>
9966 <H5><FONT SIZE="+1">Changes since the last release (cctools-277 for
9967 the 5.2 Rhapsody CR1 release)</FONT></H5>
9969 <UL>
9970 <LI>The header file &lt;mach-o/rld.h&gt; was moved to
9971 PrivateHeaders in the System Framework as it uses
9972 &lt;streams/streams.h&gt; in it's API. Radar bug #2249999.</LI>
9973 </UL>
9975 <H5><FONT SIZE="+1">Changes since the last release (cctools-276 for
9976 the 5.2 Rhapsody CR1 release)</FONT></H5>
9978 <UL>
9979 <LI>Changed the handling of unknown i386 and ppc subtypes so that
9980 the routines never fail but return sprintf()'ed strings for the
9981 decriptions. For i386 the string will be of the form "Intel family
9982 X model Y" and for ppc it will be "PowerPC cubsubtype X". Radar
9983 bug #2241690.</LI>
9984 </UL>
9986 <H5><FONT SIZE="+1">Changes since the last release (cctools-275 for
9987 the 5.2 Rhapsody CR1 release)</FONT></H5>
9989 <UL>
9990 <LI>Build fix, the Radar bug #2239280 in strip(1) was using a data
9991 structure after it was free()'ed. The free() call was move after
9992 the last use.</LI>
9993 </UL>
9995 <H5><FONT SIZE="+1">Changes since the last release (cctools-274 for
9996 the 5.2 Rhapsody CR1 release)</FONT></H5>
9998 <UL>
9999 <LI>Fixed a bug in the static link editor where the module name of
10000 dynamic shared library was set wrong. This happened when creating
10001 a dynamic shared library from an archive library member that had a
10002 long name (using the 4.4bsd archive extened format 1). The module
10003 name dynamic shared library would end up like "#1/20" rather than
10004 its correct name. Radar bug #2239283.</LI>
10006 <LI>Fixed a bug in strip(1) when stripping a dynamic shared
10007 library. This happened when the stripping was removing a symbol
10008 defined in one module and referenced in other modules. The
10009 library's table of contents was not correctly updated to reflect
10010 this symbol was no longer defined. This would then cause the
10011 static link editor to think the library was malformed as a module
10012 was loaded did not define a symbol as expected in the table of
10013 contents. Radar bug #2239280.</LI>
10014 </UL>
10016 <H5><FONT SIZE="+1">Changes since the last release (cctools-273 for
10017 the 5.2 Rhapsody CR1 release)</FONT></H5>
10019 <UL>
10020 <LI>The VMX opcodes have been added to the Rhapsody PowerPC
10021 assembler. Radar bug #2237908.</LI>
10023 <LI>Fixed a bug that caused NSModuleForSymbol() to return NULL
10024 when called in a module initializer routine on a symbol in that
10025 module. Radar bug #2238301.</LI>
10027 <LI>Removed the -arch i586SX and added the following intel x86
10028 specific subtype archs: pentium, pentpro, pentIIm3 and pentIIm5.
10029 Radar bug #2231830.</LI>
10031 <LI>Fixed a bug in dyld that used the wrong segment's address for
10032 executable's base relocation address. It was using the segment
10033 with the lowest address not the first segment's address. Radar bug
10034 #2237029.</LI>
10036 <LI>Changed the way the static link editor assigns segment address
10037 of segments that were not specified on the command line.
10038 Previously the static link editor often picked overlapping
10039 addresses for these segments and the link would then fail. Now the
10040 static link editor assigns segment address at the next available
10041 address after the first segment that doesn't overlap with other
10042 segments. So if some segments are assigned address the first
10043 segment must also be assigned, which can be done via -seg1addr or
10044 by name with -segaddr. Radar bug #2237029.</LI>
10046 <LI>A missing test was added to the static link editor. This is to
10047 prevent it from producing an executable that is prebound which
10048 would crash when launched and prebinding was disabled. This
10049 happens when too much address space is spanned and the first
10050 segment is more than 24-bits away from a prebound lazy pointer.
10051 This occurred with BlueBox. Radar bug #2237029.</LI>
10053 <LI>Fixed a bug in the dyld debug library code the caused it to
10054 crash (usually the debugger). This would tend to happen on
10055 executables being debugged that did not have it headers linked at
10056 the default address. This occurred with BlueBox. Radar bug
10057 #2236161.</LI>
10059 <LI>Added the <I>-R filename</I> options to strip(1) and
10060 nmedit(l). This specifies a list of specific symbols to be removed
10061 (or changed to static in the case of nmedit(l)). Also changed the
10062 filename syntax to allow white space around symbol names and
10063 comment lines starting with a '#'. Radar bug #2235926.</LI>
10064 </UL>
10066 <H5><FONT SIZE="+1">Changes since the last release (cctools-272 for
10067 the 5.2 Rhapsody CR1 release)</FONT></H5>
10069 <UL>
10070 <LI>Changed dyld so that it does a fflush(3) after doing any
10071 printing with printf(3) so that ProjectBuilder's launcher gets the
10072 ouput of things like DYLD_PRINT_LIBRARIES and it does not get
10073 buffered in the pipe(2)'ed output. Radar bug #2227265. Was
10074 approved for cctools-268 but was never integrated.</LI>
10075 </UL>
10077 <H5><FONT SIZE="+1">Changes since the last release (cctools-271 for
10078 the 5.2 Rhapsody CR1 release)</FONT></H5>
10080 <UL>
10081 <LI>Fixed two bugs in dyld that prevents programs launching
10082 programs with many frameworks that reference many other
10083 frameworks. Radar bug #2230181.</LI>
10085 <LI>The routine sa_rld_with_symtab() was added for use with the
10086 standalone runtime link editor. Radar bug #2231758.</LI>
10087 </UL>
10089 <H5><FONT SIZE="+1">Changes since the last release (cctools-270 for
10090 the 5.2 Rhapsody CR1 release)</FONT></H5>
10092 <UL>
10093 <LI>Build fix, changed libtool(1) -static not to flag -L<I>dir</I>
10094 and -l<I>x</I> flags as warings as they are valid flags with
10095 -static.</LI>
10096 </UL>
10098 <H5><FONT SIZE="+1">Changes since the last release (cctools-269 for
10099 the 5.2 Rhapsody CR1 release)</FONT></H5>
10101 <UL>
10102 <LI>Build fix, corrected the routine get_toc_byte_sex() which did
10103 not have code to deal with the archive extended format #1. This
10104 would cause ld(1) to think the table of contents was malformed if
10105 the first member after the table of contents was in extended
10106 format #1.</LI>
10107 </UL>
10109 <H5><FONT SIZE="+1">Changes since the last release (cctools-268 for
10110 the 5.2 Rhapsody CR1 release)</FONT></H5>
10112 <UL>
10113 <LI>Build fix, backed off change to libtool(1) to treat incorrect
10114 flags as warnings not hard errors.</LI>
10115 </UL>
10117 <H5><FONT SIZE="+1">Changes since the last release (cctools-267 for
10118 the 5.2 Rhapsody CR1 release)</FONT></H5>
10120 <UL>
10121 <LI>Build fix, removed getmachhead.o from libmacho/dylib.ofileList
10122 .</LI>
10123 </UL>
10125 <H5><FONT SIZE="+1">Changes since the last release (cctools-266 for
10126 the 5.1 Rhapsody DR2 release)</FONT></H5>
10128 <UL>
10129 <LI>The program checksyms(l) used in the Build and Integration
10130 build verification pass, now checks that projects are prebound and
10131 has no relocation entries in read only sections. Radar bug
10132 #2227469.</LI>
10134 <LI>Changed the profileServer to use bootstrap_register() rather
10135 than bootstrap_check_in() so that it can be started from
10136 /etc/bootstrap.conf. See the man page for details. Radar bug
10137 #2227888.</LI>
10139 <LI>The VMX opcodes have been added back in to the assembler.
10140 Radar bug #2227999.</LI>
10142 <LI>Changed all of the compiler tools to support the 4.4bsd
10143 archive extened format 1. The tools ranlib(1) and libtool(1) now
10144 take the -L option to produce archives using the extended format
10145 and the -T option to truncate names. The default is -L. Radar bug
10146 #1670513.</LI>
10148 <LI>The error message printed in dyld for the case when the path
10149 name of a dynamic library turns out to be a path name of a
10150 directory has been changed. Previously it just printed can't
10151 map_fd the path name. It now prints the file name is not a regular
10152 file. Radar bug #2227477.</LI>
10154 <LI>The processing of the environment variables for dyld paths has
10155 been changed to ignore paths with no characters in them. This led
10156 to confusion when the directory layout was changed to have a
10157 directory named /System and then the System framework would be
10158 searched as /System if a path with no characters in it was in
10159 DYLD_LIBRARY_PATH. Radar bug #2227589.</LI>
10161 <LI>Fixed a bug in nm(1) with the -o option on a dynamic shared
10162 library that did not print the colon ':' between the library
10163 module name and symbol name. Radar bug #2227852.</LI>
10164 </UL>
10166 <H3><FONT SIZE="+2">Documentation</FONT>&nbsp;</H3>
10168 <H5><FONT SIZE="+1">PowerPC assembler manual (PowerPC Addressing
10169 Modes and Assembler Instructions)</FONT></H5>
10171 <BLOCKQUOTE>See Jeff Mattson (jmattson_ext@next.com) for the latest
10172 copy.</BLOCKQUOTE>
10174 <H5><FONT SIZE="+1">Dynamic Shared Libraries User's Guide</FONT></H5>
10176 <BLOCKQUOTE>The current version of this can be found in <B>(not
10177 updated with respect to PowerPC yet)</B>:
10179 <BLOCKQUOTE>/Net/seaport/projects/cctools/docs/shlib/user_guide/user_guide.ps</BLOCKQUOTE></BLOCKQUOTE>
10181 <H5><FONT SIZE="+1">Dynamic Shared Libraries Detailed Design
10182 Document</FONT></H5>
10184 <BLOCKQUOTE>The current version of this can be found in <B>(updated
10185 for PowerPC)</B>:
10187 <BLOCKQUOTE>/Net/seaport/projects/cctools/docs
10188 /shlib/detail_doc/current/detail_doc.ps</BLOCKQUOTE></BLOCKQUOTE>
10190 <H5><FONT SIZE="+1">Man Pages</FONT></H5>
10192 <BLOCKQUOTE>Unix manual pages for the cctools release are installed
10193 in /usr/share/man. This allows updated manual pages to be used in
10194 software by setting the MANPATH environment variable to include
10195 one or more paths. For example if the Rhapsody man pages are
10196 wanted you might set MANPATH as follows in your .login:
10198 <BLOCKQUOTE>setenv MANPATH /usr/share/man</BLOCKQUOTE></BLOCKQUOTE>
10200 <P>&nbsp;</P>
10202 <H3><FONT SIZE="+2">Notes Specific to Release 5.1 (Rhapsody
10203 DR2)</FONT></H3>
10205 <H3><FONT SIZE="+1">New Features</FONT></H3>
10207 <P>The rld function rld_write_symfile() has been added for use by the
10208 kern loader.</P>
10210 <H5><FONT SIZE="+1">Changes since the last release (cctools-265 for
10211 the 5.1 Rhapsody DR2 release)</FONT></H5>
10213 <UL>
10214 <LI>Fixed a bug in the change of the default headerpad in ld(1) to
10215 be the sizeof two section structures because objcunique(1) now can
10216 add 2 section headers.</LI>
10217 </UL>
10219 <H5><FONT SIZE="+1">Changes since the last release (cctools-264 for
10220 the 5.1 Rhapsody DR2 release)</FONT></H5>
10222 <UL>
10223 <LI>Changed the default headerpad in ld(1) to be the sizeof two
10224 section structures because objcunique(1) now can add 2 section
10225 headers.</LI>
10226 </UL>
10228 <H5><FONT SIZE="+1">Changes since the last release (cctools-263 for
10229 the 5.1 Rhapsody DR2 release)</FONT></H5>
10231 <UL>
10232 <LI>Added a definition of getenv() in the dyld code that always
10233 returns NULL so the reference to_dyld_lookup_and_bind() is not
10234 pulled in by the libc_dynamic code.</LI>
10235 </UL>
10237 <H5><FONT SIZE="+1">Changes since the last release (cctools-262 for
10238 the 5.1 Rhapsody DR2 release)</FONT></H5>
10240 <UL>
10241 <LI>The VMX opcodes have been removed. Radar bug #2219166.</LI>
10243 <LI>A bug was fixed in the code that starts the dyld debug thread
10244 that effected executables who's load commands were larger than 4k
10245 (like ProjectBuilder). Radar bug #2218925.</LI>
10246 </UL>
10248 <H5><FONT SIZE="+1">Changes since the last release (cctools-261 for
10249 the 5.1 Rhapsody DR2 release)</FONT></H5>
10251 <UL>
10252 <LI>The use of the profil(2) system call has been updated to
10253 reflect the fix in the kernel for the bucket incremented in
10254 profileServer(1) and in dyld. Radar bug #2215979.</LI>
10255 </UL>
10257 <H5><FONT SIZE="+1">Changes since the last release (cctools-260 for
10258 the 5.1 Rhapsody DR2 release)</FONT></H5>
10260 <P>Added supporting the PowerPC subtypes 603e, 603ev and 750. Changed
10261 NXFindBestFatArch() for PowerPC subtypes to the following: if an
10262 exact match is not found the subtype will be picked from the
10263 following order: 750, 604e, 604, 603ev, 603e, 603, ALL. Note the 601
10264 is not in the list, it is only picked via an exact match. Changed
10265 NXCombineCpuSubtypes() for PowerPC subtypes to the following:
10266 combining with the ALL type becomes the other type. Combining
10267 anything with 601 becomes 601. All other non exact matches combine to
10268 the ALL type. Radar bug #2213821.</P>
10270 <UL>
10271 <LI>Added the dcba PowerPC optional instruction to the assembler
10272 and otool.</LI>
10274 <LI>Added the special register names for the PowerPC 750
10275 processor:Radar bug #2212878
10277 <P><TABLE BORDER=0 WIDTH="48%" HEIGHT=210>
10278 <TR>
10279 <TD>
10280 <P>Special register name</P>
10281 </TD>
10282 <TD>
10283 <P>Number</P>
10284 </TD>
10285 </TR>
10286 <TR>
10287 <TD>
10288 <P>ummcr0</P>
10289 </TD>
10290 <TD>
10291 <P>936</P>
10292 </TD>
10293 </TR>
10294 <TR>
10295 <TD HEIGHT=8>
10296 <P>upmc1</P>
10297 </TD>
10298 <TD HEIGHT=8>
10299 <P>937</P>
10300 </TD>
10301 </TR>
10302 <TR>
10303 <TD>
10304 <P>upmc2</P>
10305 </TD>
10306 <TD>
10307 <P>938</P>
10308 </TD>
10309 </TR>
10310 <TR>
10311 <TD>
10312 <P>usia</P>
10313 </TD>
10314 <TD>
10315 <P>939</P>
10316 </TD>
10317 </TR>
10318 <TR>
10319 <TD>
10320 <P>ummcr1</P>
10321 </TD>
10322 <TD>
10323 <P>940</P>
10324 </TD>
10325 </TR>
10326 <TR>
10327 <TD>
10328 <P>upmc3</P>
10329 </TD>
10330 <TD>
10331 <P>941</P>
10332 </TD>
10333 </TR>
10334 <TR>
10335 <TD>
10336 <P>upmc4</P>
10337 </TD>
10338 <TD>
10339 <P>942</P>
10340 </TD>
10341 </TR>
10342 <TR>
10343 <TD>
10344 <P>l2cr</P>
10345 </TD>
10346 <TD>
10347 <P>1017</P>
10348 </TD>
10349 </TR>
10350 <TR>
10351 <TD>
10352 <P>ictc</P>
10353 </TD>
10354 <TD>
10355 <P>1019</P>
10356 </TD>
10357 </TR>
10358 <TR>
10359 <TD HEIGHT=12>
10360 <P>thrm1</P>
10361 </TD>
10362 <TD HEIGHT=12>
10363 <P>1020</P>
10364 </TD>
10365 </TR>
10366 <TR>
10367 <TD>
10368 <P>thrm2</P>
10369 </TD>
10370 <TD>
10371 <P>1021</P>
10372 </TD>
10373 </TR>
10374 <TR>
10375 <TD>
10376 <P>thrm3</P>
10377 </TD>
10378 <TD>
10379 <P>1022</P>
10380 </TD>
10381 </TR>
10382 </TABLE>
10383 </P></LI>
10385 <LI>Assembling PowerPC VMX instructions now requires the
10386 -force_cpusubtype_ALL flag. And code that uses them must dynamicly
10387 check to see if VMX is supported on the processor before using VMX
10388 instructions. Radar bug #2213821.</LI>
10390 <LI>Change the PowerPC instructions tlbld and tlbli to marked as
10391 OPTIONAL rather than 603 specific. This leaves the only
10392 instructions specific for a PowerPC cpu being 601 instructions.
10393 Radar bug #2213821.</LI>
10395 <LI>Moved the assemblers into /usr/libexec and /usr/local/libexec.
10396 Radar bug #2213838.</LI>
10397 </UL>
10399 <H5><FONT SIZE="+1">Changes since the last release (cctools-259 for
10400 the 5.1 Rhapsody DR2 release)</FONT></H5>
10402 <UL>
10403 <LI>Added the path /Local/Library/Frameworks to checksyms(l) as a
10404 conventional path Frameworks can be found in. Also corrected
10405 "it's" to "its" in error messages.</LI>
10407 <LI>Added -c to all the install(1) commands in all the
10408 Makefiles.</LI>
10409 </UL>
10411 <H5><FONT SIZE="+1">Changes since the last release (cctools-258 for
10412 the 5.1 Rhapsody DR2 release)</FONT></H5>
10414 <UL>
10415 <LI>Changed cctools to not use /usr/local/bin/install where it
10416 needed the -sS option but rather call strip -S and create a
10417 temporary file and install the temporary file.</LI>
10418 </UL>
10420 <H5><FONT SIZE="+1">Changes since the last release (cctools-257 for
10421 the 5.1 Rhapsody DR2 release)</FONT></H5>
10423 <UL>
10424 <LI>Changed checksyms(l) to once again treat /usr/lib/java as a
10425 conventional path libraries can be found in. This path got changed
10426 to /System/Library/Frameworks/JavaVM.framework/Libraries where
10427 that path should have been just added.</LI>
10429 <LI>Fixed dylib shared pc sampling. Radar bug #2004555.</LI>
10430 </UL>
10432 <H5><FONT SIZE="+1">Changes since the last release (cctools-256 for
10433 the 5.1 Rhapsody DR2 release)</FONT></H5>
10435 <UL>
10436 <LI>Changed checksyms(l) to treat
10437 /System/Library/Frameworks/JavaVM.framework/Libraries as a
10438 conventional path libraries can be found in.</LI>
10440 <LI>Changed the default address of dyld to 0x41100000.</LI>
10442 <LI>Changed cctools to use /usr/local/bin/install where it needs
10443 the -sS option.</LI>
10444 </UL>
10446 <H5><FONT SIZE="+1">Changes since the last release (cctools-255 for
10447 the 5.1 Rhapsody DR2 release)</FONT></H5>
10449 <UL>
10450 <LI>Changed checksyms(l) to treat /usr/lib/java as a conventional
10451 path libraries can be found in. Radar bug #2005914.</LI>
10452 </UL>
10454 <H5><FONT SIZE="+1">Changes since the last release (cctools-254 for
10455 the 5.1 Rhapsody DR2 release)</FONT></H5>
10457 <UL>
10458 <LI>The VMX opcodes have been added. Radar bug 2004760.</LI>
10459 </UL>
10461 <H5><FONT SIZE="+1">Changes since the last release (cctools-253 for
10462 the 5.1 Rhapsody DR2 release)</FONT></H5>
10464 <UL>
10465 <LI>Fixed a bug in ld(1) that prevented the Objective-C runtime
10466 optimization using _dyld_bind_objc_module() from working. The bug
10467 was in the routine that swaps the module table of a dynamic
10468 library.</LI>
10470 <LI>Added the rld function rld_write_symfile() for use by the kern
10471 loader.</LI>
10472 </UL>
10474 <H5><FONT SIZE="+1">Changes since the last release (cctools-252 for
10475 the 5.1 Rhapsody DR2 release)</FONT></H5>
10477 <UL>
10478 <LI>Updated the cctools project for the new directory layout for
10479 Premier (changing the directories with the word Next in them). See
10480 the updated man pages for specific details.</LI>
10482 <LI>Added the -b option to checksyms(l) to check dynamic binaries
10483 for relocation entries in read-only sections, make sure they are
10484 prebound and have had objcunique run on them. This is not yet the
10485 default.</LI>
10487 <LI>Delt with a bug in the 4.4bsd ar(1) which produced bad
10488 archives when the uid (or gid) field overflowed or underflowed.
10489 Radar bug #2000486.</LI>
10490 </UL>
10492 <H5><FONT SIZE="+1">Changes since the last release (cctools-251 for
10493 the 5.1 Rhapsody DR2 release)</FONT></H5>
10495 <UL>
10496 <LI>Fixed a bug in the disassembly output of otool(1) for ppc bl
10497 instructions that was not printing any address or symbol. Also
10498 added printing out a comment for branch targets to symbol stubs
10499 including the name of the symbol the stub is for.</LI>
10501 <LI>Changed the ppc dissassembly in otool(1) of "addis rX,0,immed"
10502 to "lis rX,immed" and "addi rX,0,immed" to "li rX,immed".</LI>
10504 <LI>Updated the dyld(1) man page to include the default fall back
10505 paths.</LI>
10507 <LI>Removed the -arch m98k which was the same as -arch ppc.</LI>
10508 </UL>
10510 <H5><FONT SIZE="+1">Changes since the last release (cctools-250 for
10511 the 5.1 Rhapsody DR2 release)</FONT></H5>
10513 <UL>
10514 <LI>Corrected the bug fix in ld(1) when doing prebound builds in
10515 Slick build environment with $NEXT_ROOT set. The change also
10516 effected Titan builds because RC builds do have $NEXT_ROOT set (to
10517 nothing).</LI>
10518 </UL>
10520 <H5><FONT SIZE="+1">Changes since the last release (cctools-249 for
10521 the 5.1 Rhapsody DR2 release)</FONT></H5>
10523 <UL>
10524 <LI>The man pages now get installed into /usr/share/man directly
10525 out of the cctools project. The man pages had some small updates
10526 cleaning up some things. arch(3) was added to the cctools set and
10527 updated. The also now have Apple Computer, Inc. on them instead of
10528 NeXT.</LI>
10530 <LI>Fixed a bug in as(1) where it would not take the cpu specific
10531 arch types -arch ppc604 or -arch ppc604e. Also changed the
10532 assembler to print out the cctools version as the Apple version
10533 instead of the NeXT version.</LI>
10535 <LI>Changed the ppc locking code in dyld to allow it to be stepped
10536 over by single step profiling tools using the step to branch mode
10537 in that code.</LI>
10538 </UL>
10540 <H5><FONT SIZE="+1">Changes since the last release (cctools-248 for
10541 the 5.1 Rhapsody DR2 release)</FONT></H5>
10543 <UL>
10544 <LI>Changed libtool(1) and redo_prebinding(1) look for objcunique
10545 in /usr/bin rather than in /bin.</LI>
10547 <LI>Added support for the ppc architecture to
10548 redo_prebinding(1).</LI>
10550 <LI>Fixed a bug in ld(1) when prebinding and segments in the
10551 output file overlap dependent libraries. In this case the output
10552 gets marked as prebound even though a message is printed that says
10553 it was disabled. This would cause redo_prebinding(1) to fail on it
10554 because of overlapping segments.</LI>
10556 <LI>Fixed a bug in ld(1) when prebinding with -i options. The
10557 indirect symbols being defined with -i options were being turned
10558 into prebound undefined symbols. Then after the binary was
10559 strip(1)'ed redo_prebinding(1) would fail on it because of
10560 undefined symbols.</LI>
10562 <LI>Fixed a bug in ld(1) when doing prebound builds in Slick build
10563 envorinment with $NEXT_ROOT set. It was recording the dynamic
10564 libraries name with $NEXT_ROOT prepened to it in LC_PREBOUND_DYLIB
10565 load commands.</LI>
10567 <LI>Fixed a bug where the ouput of nm(1) -n was not sorted
10568 correctly.</LI>
10570 <LI>Fixed a potentinal bug in dyld if a very long symbol name was
10571 to be printed as part of an error message it could have crashed
10572 the program.</LI>
10573 </UL>
10575 <H5><FONT SIZE="+1">Changes since the last release (cctools-247 for
10576 the 5.1 Rhapsody DR2 release)</FONT></H5>
10578 <UL>
10579 <LI>Changed the gmon.out format gprof(1) understands to be in sync
10580 with the 4.4bsd format. The header file &lt;mach-o/gmon.h&gt; is
10581 no longer installed and the 4.4bsd file in &lt;sys/gmon.h&gt; with
10582 Rhapsody updates is now used.</LI>
10584 <LI>Fixed a bug that would cause programs to segfault if dyld had
10585 to relocate itself because the executable overlapped with dyld's
10586 prefered address.</LI>
10587 </UL>
10589 <H5><FONT SIZE="+1">Changes since the last release (cctools-246 for
10590 the 5.0 Rhapsody DR1 release)</FONT></H5>
10592 <UL>
10593 <LI>The project source tree has been converted to build natively
10594 on Rhapsody.</LI>
10596 <LI>The binaries are now installed in the correct places for a
10597 4.4BSD system. There are nolonger any symbolic links to other
10598 locations. Radar bugs #1673496, #1680747 and #1682569.</LI>
10600 <LI>The command ar(1) was changed to have the -T options on by
10601 default. This causes archive member names to be truncated and does
10602 not use the extend format for long names which the compiler tools
10603 does not yet understand. The new option -L causes the extend
10604 format to be used. The hope is the compiler tools will understand
10605 the extened format for the Rhapsody Unified release. Radar bug
10606 #1670513.</LI>
10608 <LI>Removed the comment allowing the moduleName parameter of
10609 NSLinkModule() in &lt;mach-o/dyld.h&gt; to be NULL. Radar bug
10610 #1670835.</LI>
10611 </UL>
10613 <H3><FONT SIZE="+2">Documentation</FONT>&nbsp;</H3>
10615 <H5><FONT SIZE="+1">PowerPC assembler manual (PowerPC Addressing
10616 Modes and Assembler Instructions)</FONT></H5>
10618 <BLOCKQUOTE>See Jeff Mattson (jmattson_ext@next.com) for the latest
10619 copy.</BLOCKQUOTE>
10621 <H5><FONT SIZE="+1">Dynamic Shared Libraries User's Guide</FONT></H5>
10623 <BLOCKQUOTE>The current version of this can be found in <B>(not
10624 updated with respect to PowerPC yet)</B>:
10626 <BLOCKQUOTE>/Net/seaport/projects/cctools/docs/shlib/user_guide/user_guide.ps</BLOCKQUOTE></BLOCKQUOTE>
10628 <H5><FONT SIZE="+1">Dynamic Shared Libraries Detailed Design
10629 Documen</FONT></H5>
10631 <BLOCKQUOTE>The current version of this can be found in <B>(updated
10632 for PowerPC)</B>:
10634 <BLOCKQUOTE>/Net/seaport/projects/cctools/docs
10635 /shlib/detail_doc/current/detail_doc.ps</BLOCKQUOTE></BLOCKQUOTE>
10637 <H5><FONT SIZE="+1">Man Pages</FONT></H5>
10639 <BLOCKQUOTE>Unix manual pages for the cctools release are installed
10640 in /usr/share/man. This allows updated manual pages to be used in
10641 software by setting the MANPATH environment variable to include
10642 one or more paths. For example if the Rhapsody man pages are
10643 wanted you might set MANPATH as follows in your .login:
10645 <BLOCKQUOTE>setenv MANPATH /usr/share/man &nbsp;</BLOCKQUOTE></BLOCKQUOTE>
10647 <H3><FONT SIZE="+2">Notes Specific to Release 5.0 (Rhapsody
10648 DR1)</FONT></H3>
10650 <H3><FONT SIZE="+1">New Features</FONT></H3>
10652 <P>There is only one new feature for the 5.0 release:</P>
10654 <UL>
10655 <LI>The tools now use -arch ppc for the PowerPC architecture . The
10656 tools have been brought up the 603, 603e, 604 and 604e PowerPC
10657 from the 601. Support for dynamic shared libraries has been
10658 added.</LI>
10659 </UL>
10661 <H3>The current state of the dynamic shared library port to the
10662 PowerPC</H3>
10664 <BLOCKQUOTE>As of cctools-246 the all the tools are working or
10665 ported. This includes the assembler, the static linker, otool
10666 (including it's PowerPC disassembler), the dynamic linker and the
10667 various object tools like nm, size, etc. The PowerPC assembler as
10668 of the current release is now complete for the Rhapsody Developer
10669 release. It now supports all of the PowerPC extended mnemonics and
10670 all features of the 603, 603e, 604 and 604e PowerPC architecture.</BLOCKQUOTE>
10672 <H3>Current status of the support for the PowerPC</H3>
10674 <H5><FONT SIZE="+1">Changes since the last release (cctools-245 for
10675 the 5.0 Rhapsody DR1 release)</FONT></H5>
10677 <UL>
10678 <LI>Fixed a bug in the static link editor for PPC_RELOC_JBSR
10679 relocation types. The other_part field was being tuncating to the
10680 low16 bits.</LI>
10681 </UL>
10683 <H5><FONT SIZE="+1">Changes since the last release (cctools-244 for
10684 the 5.0 Rhapsody DR1 release)</FONT></H5>
10686 <UL>
10687 <LI>The symbolic links made in /usr/bin for the commands as, ld,
10688 strip, strings, nm and size for which the binaries are in /bin
10689 were corrected to use a relative path. Radar bug #1672088.</LI>
10690 </UL>
10692 <H5><FONT SIZE="+1">Changes since the last release (cctools-242 for
10693 the 5.0 Rhapsody DR1 release)</FONT></H5>
10695 <UL>
10696 <LI>Symbolic links were made in /usr/bin for the commands as, ld,
10697 strip, strings, nm and size for which the binaries are in /bin.
10698 Radar bug #1672088.</LI>
10699 </UL>
10701 <H5><FONT SIZE="+1">Changes since the last release (cctools-241 for
10702 the 5.0 Rhapsody DR1 release)</FONT></H5>
10704 <UL>
10705 <LI>Removed the builtin macro clrlsdi which was a typo for the
10706 correct macro clrlsldi.</LI>
10708 <LI>Removed the following builtin macros left over from the NRW
10709 port: mtrtcd, mfrtcd, mtrtci, mfrtci, mtbatu, mfbatu, mtbatl and
10710 mfbatl.</LI>
10712 <LI>Changed the PowerPC instruction "eciwx" to be marked as
10713 optional so to require -force_cpusubtype_ALL when used.</LI>
10715 <LI>Removed the non-existant "stmd", "mtpmr" and "mfpmr"
10716 instructions from the PowerPC assembler.</LI>
10718 <LI>Fixed the following extended mnemonics to the PowerPC
10719 assembler:
10721 <P><TABLE BORDER=0 WIDTH="49%">
10722 <TR>
10723 <TD>
10724 <P>mtrtcu Rx</P>
10725 </TD>
10726 <TD>
10727 <P>equivalent to</P>
10728 </TD>
10729 <TD>
10730 <P>mtspr 20,Rx</P>
10731 </TD>
10732 </TR>
10733 <TR>
10734 <TD>
10735 <P>mtrtcl Rx</P>
10736 </TD>
10737 <TD>
10738 <P>equivalent to</P>
10739 </TD>
10740 <TD>
10741 <P>mtspr 21,Rx</P>
10742 </TD>
10743 </TR>
10744 </TABLE>
10745 </P>
10747 <P>Note these are 601 specific and the special register numbers
10748 moving to (20,21) the Real Time Clock are diffierent from moving
10749 from (4,5) the same registers.</P></LI>
10750 </UL>
10752 <H5><FONT SIZE="+1">Changes since the last release (cctools-240 for
10753 the 5.0 Rhapsody DR1 release)</FONT></H5>
10755 <UL>
10756 <LI>Fixed a bug that caused bundles to not load on the PowerPC
10757 604e as there was no table entry in the ArchInfoTable.</LI>
10758 </UL>
10760 <H5><FONT SIZE="+1">Changes since the last release (cctools-239 for
10761 the 5.0 Rhapsody DR1 release)</FONT></H5>
10763 <UL>
10764 <LI>Changed the PowerPC assembler to nolonger support the
10765 mull&#91;o&#93;&#91;.&#93; and mulwd&#91;.&#93; instructions
10766 produced by the NRW compiler.</LI>
10768 <LI>Added the special register names:
10770 <P><TABLE BORDER=0 WIDTH="61%" HEIGHT=260>
10771 <TR>
10772 <TD WIDTH=215>
10773 <P>Special register name</P>
10774 </TD>
10775 <TD WIDTH=168>
10776 <P>Number</P>
10777 </TD>
10778 <TD WIDTH=157>
10779 <P>Processor</P>
10780 </TD>
10781 </TR>
10782 <TR>
10783 <TD WIDTH=215>
10784 <P>mmcr0</P>
10785 </TD>
10786 <TD WIDTH=168>
10787 <P>952</P>
10788 </TD>
10789 <TD WIDTH=157>
10790 <P>604 and 604e</P>
10791 </TD>
10792 </TR>
10793 <TR>
10794 <TD WIDTH=215>
10795 <P>pmc1</P>
10796 </TD>
10797 <TD WIDTH=168>
10798 <P>953</P>
10799 </TD>
10800 <TD WIDTH=157>
10801 <P>604 and 604e</P>
10802 </TD>
10803 </TR>
10804 <TR>
10805 <TD WIDTH=215>
10806 <P>pmc2</P>
10807 </TD>
10808 <TD WIDTH=168>
10809 <P>954</P>
10810 </TD>
10811 <TD WIDTH=157>
10812 <P>604 and 604e</P>
10813 </TD>
10814 </TR>
10815 <TR>
10816 <TD WIDTH=215>
10817 <P>sia</P>
10818 </TD>
10819 <TD WIDTH=168>
10820 <P>955</P>
10821 </TD>
10822 <TD WIDTH=157>
10823 <P>604 and 604e</P>
10824 </TD>
10825 </TR>
10826 <TR>
10827 <TD WIDTH=215>
10828 <P>mmcr1</P>
10829 </TD>
10830 <TD WIDTH=168>
10831 <P>956</P>
10832 </TD>
10833 <TD WIDTH=157>
10834 <P>604e</P>
10835 </TD>
10836 </TR>
10837 <TR>
10838 <TD WIDTH=215>
10839 <P>pmc3</P>
10840 </TD>
10841 <TD WIDTH=168>
10842 <P>957</P>
10843 </TD>
10844 <TD WIDTH=157>
10845 <P>604e</P>
10846 </TD>
10847 </TR>
10848 <TR>
10849 <TD WIDTH=215>
10850 <P>pmc4</P>
10851 </TD>
10852 <TD WIDTH=168>
10853 <P>958</P>
10854 </TD>
10855 <TD WIDTH=157>
10856 <P>604e</P>
10857 </TD>
10858 </TR>
10859 <TR>
10860 <TD WIDTH=215>
10861 <P>sda</P>
10862 </TD>
10863 <TD WIDTH=168>
10864 <P>959</P>
10865 </TD>
10866 <TD WIDTH=157>
10867 <P>604 and 604e</P>
10868 </TD>
10869 </TR>
10870 <TR>
10871 <TD WIDTH=215>
10872 <P>dmiss</P>
10873 </TD>
10874 <TD WIDTH=168>
10875 <P>976</P>
10876 </TD>
10877 <TD WIDTH=157>
10878 <P>603</P>
10879 </TD>
10880 </TR>
10881 <TR>
10882 <TD WIDTH=215>
10883 <P>dcmp</P>
10884 </TD>
10885 <TD WIDTH=168>
10886 <P>977</P>
10887 </TD>
10888 <TD WIDTH=157>
10889 <P>603</P>
10890 </TD>
10891 </TR>
10892 <TR>
10893 <TD WIDTH=215>
10894 <P>hash1</P>
10895 </TD>
10896 <TD WIDTH=168>
10897 <P>978</P>
10898 </TD>
10899 <TD WIDTH=157>
10900 <P>603</P>
10901 </TD>
10902 </TR>
10903 <TR>
10904 <TD WIDTH=215>
10905 <P>hash2</P>
10906 </TD>
10907 <TD WIDTH=168>
10908 <P>979</P>
10909 </TD>
10910 <TD WIDTH=157>
10911 <P>603</P>
10912 </TD>
10913 </TR>
10914 <TR>
10915 <TD WIDTH=215>
10916 <P>imiss</P>
10917 </TD>
10918 <TD WIDTH=168>
10919 <P>980</P>
10920 </TD>
10921 <TD WIDTH=157>
10922 <P>603</P>
10923 </TD>
10924 </TR>
10925 <TR>
10926 <TD WIDTH=215>
10927 <P>icmp</P>
10928 </TD>
10929 <TD WIDTH=168>
10930 <P>981</P>
10931 </TD>
10932 <TD WIDTH=157>
10933 <P>603</P>
10934 </TD>
10935 </TR>
10936 <TR>
10937 <TD WIDTH=215>
10938 <P>rpa</P>
10939 </TD>
10940 <TD WIDTH=168>
10941 <P>982</P>
10942 </TD>
10943 <TD WIDTH=157>
10944 <P>603</P>
10945 </TD>
10946 </TR>
10947 </TABLE>
10948 </P></LI>
10949 </UL>
10951 <DIR>
10952 <LI>Removed the bat&#91;0123&#93;&#91;ul&#93; 601 special register
10953 names left over from the NRW port. The names with
10954 ibat&#91;0123&#93;&#91;ul&#93; are to be used.</LI>
10956 <LI>Changed the name of the 601 special register "pid" to "pir"
10957 and added the special register name "hid15" also with the number
10958 1023.</LI>
10960 <LI>Removed the special register names rtcd (281), rtci (282) and
10961 fpecr (1022) which appear to be left over from the NRW port.</LI>
10963 <LI>Added the special register ear (282) which is optional in the
10964 PowerPC.</LI>
10966 <LI>Added the special registers tbl (284) and tbu (285) which were
10967 missing.</LI>
10969 <LI>Fixed the clrrdi simplified mnemonics to use rldicr not rldicl
10970 which they were using.</LI>
10972 <LI>Added the simplified mnemonic clrlsdi rA,rS,b,n equivalent to
10973 rldic rA,rS,n,b-n.</LI>
10975 <LI>Added the multiply low double word (mulld) 64-bit
10976 instruction.</LI>
10978 <LI>Added flagging invalid forms of branch conditional
10979 instructions where reserved bits of the BO field are not zero when
10980 -force_cpusubtype_ALL is not specified.</LI>
10982 <LI>Added flagging all 64-bit compares as invalid forms when
10983 -force_cpusubtype_ALL is not specified.</LI>
10985 <LI>Added flagging all 64-bit instructions and optional
10986 instructions as invalid forms when -force_cpusubtype_ALL is not
10987 specified.</LI>
10989 <LI>Removed the Power forms, ai&#91;.&#93;, of the PowerPC
10990 instructions addic&#91;.&#93; from the assembler.</LI>
10992 <LI>Removed the non-existant "lmd" instruction from the
10993 assembler.</LI>
10995 <LI>Added flagging invalid forms load multiple instructions (lmw,
10996 lswi and lswx).</LI>
10998 <LI>Changed the rA parameter of lhax, lfsx, lfdx, ldx, lbzx,
10999 lhbrx, lhzx, lwax, lwbrx, stbx, stdcx., stdx, stfdx, stfiwx,
11000 stfsx, sthbrx, sthx, stwbrx, stwx, eciwx, ecowx from rA to (rA|0)
11001 to match the manual. These are the same as the Radar bug #1653885
11002 for lwzx. The disassembler in otool(1) was also changed to match
11003 the manual.</LI>
11005 <LI>Changed the rA parameter of lfdu, lfsu, lhau, ldu, lwzu, stbu,
11006 stdu, stfdu, stfsu, sthu and stwu from (rA|0) to rA to match the
11007 manual. The disassembler in otool(1) was also changed to match the
11008 manual.</LI>
11010 <LI>Added flagging the "branch conditional to count register"
11011 (bcctr and bcctrl) that use the "decrement and test CTR" option as
11012 invalid forms.</LI>
11014 <LI>Fixed a bug in the static link editor that caused it to exit
11015 with an internal error if prebinding was done with objects
11016 compiled with PowerPC dynamic code generation.</LI>
11018 <LI>Added the file libstuff/fatals.c to the files installed in the
11019 GNU source package as it is needed to build the GNU assembler
11020 source.</LI>
11022 <LI>Changed the cctools project so that atom(1) only gets built
11023 for OS=nextstep because it uses the encumbered gnu/a.out.h header
11024 file.</LI>
11026 <LI>Removed the files gnu/a.out.h and gnu/exec.h from the files
11027 that get installed for the GNU source package as they are not
11028 needed to build the GNU assembler source and are encumbered with
11029 4.3bsd UNIX.</LI>
11030 </DIR>
11032 <H5><FONT SIZE="+1">Changes since the last release (cctools-238 for
11033 the 5.0 Rhapsody DR1 release)</FONT></H5>
11035 <UL>
11036 <LI>Fixed a bug that caused bundles to not load on the
11037 PowerPC.</LI>
11038 </UL>
11040 <H5><FONT SIZE="+1">Changes since the last release (cctools-237 for
11041 the 5.0 Rhapsody DR1 release)</FONT></H5>
11043 <UL>
11044 <LI>Fixed a build problem where the file /etc/magic should have
11045 been installed in /private/etc/magic.</LI>
11046 </UL>
11048 <H5><FONT SIZE="+1">Changes since the last release (cctools-236 for
11049 the 5.0 Rhapsody DR1 release)</FONT></H5>
11051 <UL>
11052 <LI>Changed the PowerPC immediate shifted instructions (addis and
11053 lis) to not check the sign of the immediate, but just to check for
11054 out of 16 bit range (signed or unsigned).</LI>
11056 <LI>Fixed the following extended mnemonic for the PowerPC
11057 assembler that was wrong in cctools-235:
11059 <P><TABLE BORDER=0 WIDTH="69%" HEIGHT=20>
11060 <TR>
11061 <TD>
11062 <P>crmove crbT,crbA</P>
11063 </TD>
11064 <TD>
11065 <P>equivalent to</P>
11066 </TD>
11067 <TD>
11068 <P>cror crbT,crbA,crbA</P>
11069 </TD>
11070 </TR>
11071 </TABLE>
11072 </P></LI>
11074 <LI>It was was crxor which it should not have been.</LI>
11076 <LI>Added forms of PowerPC instructions: cmpd, cmpdi, cmpld,
11077 cmpldi, cmpw, cmpwi, cmplw and cmplwi that take a number as their
11078 first parameter (previously they only took a cr register).</LI>
11080 <LI>Added forms of PowerPC instructions "tw 31,0,0" and "ori
11081 0,0,0" toallow the zeros to be encoded where registers are
11082 required.</LI>
11084 <LI>Added the following extended mnemonic to the PowerPC
11085 assembler:</LI>
11086 </UL>
11088 <P>mttbl rS equivalent to mtspr 284,rS</P>
11090 <UL>
11091 <LI>Fixed the PowerPC opcode of "mttbu rS" "Move to time base
11092 upper" to be equivalent to "mtspr 285,rS".</LI>
11094 <LI>Removed the PowerPC instruction mttb "Move to time base".</LI>
11096 <LI>Fixed a bug in the PowerPC instruction "lwzx rD,rA,rB" where
11097 rA should have been (rA|0). Radar bug #1653885.</LI>
11098 </UL>
11100 <H5><FONT SIZE="+1">Changes since the last release (cctools-235 for
11101 the 5.0 Rhapsody DR1 release)</FONT></H5>
11103 <UL>
11104 <LI>Added the PowerPC instruction jbsr pseudo instruction for use
11105 with kernel relocatables. This has the following form:
11107 <P>jbsr _foo,L1<BR>
11108 ...<BR>
11109 L1: lis r12,hi16(_foo) ; long branch stub<BR>
11110 ori r12,r12,lo16(_foo)<BR>
11111 mtctr r12<BR>
11112 bctr</P></LI>
11114 <LI>The jbsr pseudo instruction assembles to a bl instruction
11115 targeted at L1. It also generates a PPC_RELOC_JBSR relocation
11116 entry for the symbol _foo. Then when the linker creates a
11117 non-relocatable output file it will change the target of the bl
11118 instruction to _foo if the bl instruction's displacement will
11119 reach. Else it will leave the bl instruction targeted at L1.
11120 <I>otool</I>(1) understands how to disassemble these pseudo
11121 instructions.</LI>
11123 <LI>Fixed a bug in both the static and the dynamic link editors
11124 where it was not correctly checking for relocation overflow for
11125 PPC_RELOC_BR24 relocation types (used with bl instructions). The
11126 checking was off by the high bit as the displacement is
11127 signed.</LI>
11129 <LI>The cctools project has been unencumbered (for Grail,
11130 RC_OS=teflon). The programs ar(1) and file(1) are now ported
11131 OpenBSD versions. They should work the same but beware they are
11132 completely different sources.</LI>
11134 <LI>Added the following extended mnemonics to the PowerPC
11135 assembler:
11137 <P>&nbsp;<TABLE BORDER=0 WIDTH="74%">
11138 <TR>
11139 <TD WIDTH=134>
11140 <P>mtrtcu Rx</P>
11141 </TD>
11142 <TD WIDTH=118>
11143 <P>equivalent to</P>
11144 </TD>
11145 <TD>
11146 <P>mtspr rtcu,Rx</P>
11147 </TD>
11148 </TR>
11149 <TR>
11150 <TD WIDTH=134>
11151 <P>mtrtcl Rx</P>
11152 </TD>
11153 <TD WIDTH=118>
11154 <P>equivalent to</P>
11155 </TD>
11156 <TD>
11157 <P>mtspr rtcl,Rx</P>
11158 </TD>
11159 </TR>
11160 <TR>
11161 <TD WIDTH=134>
11162 <P>mtmq Rx</P>
11163 </TD>
11164 <TD WIDTH=118>
11165 <P>equivalent to</P>
11166 </TD>
11167 <TD>
11168 <P>mtspr mq,Rx</P>
11169 </TD>
11170 </TR>
11171 <TR>
11172 <TD WIDTH=134>
11173 <P>mfrtcu Rx</P>
11174 </TD>
11175 <TD WIDTH=118>
11176 <P>equivalent to</P>
11177 </TD>
11178 <TD>
11179 <P>mfspr Rx,rtcu</P>
11180 </TD>
11181 </TR>
11182 <TR>
11183 <TD WIDTH=134>
11184 <P>mfrtcl Rx</P>
11185 </TD>
11186 <TD WIDTH=118>
11187 <P>equivalent to</P>
11188 </TD>
11189 <TD>
11190 <P>mfspr Rx,rtcl</P>
11191 </TD>
11192 </TR>
11193 <TR>
11194 <TD WIDTH=134>
11195 <P>mfmq Rx</P>
11196 </TD>
11197 <TD WIDTH=118>
11198 <P>equivalent to</P>
11199 </TD>
11200 <TD>
11201 <P>mfspr Rx,mq</P>
11202 </TD>
11203 </TR>
11204 <TR>
11205 <TD WIDTH=134>
11206 <P>mfspr Rx,mq</P>
11207 </TD>
11208 <TD WIDTH=118>
11209 <P>equivalent to</P>
11210 </TD>
11211 <TD>
11212 <P>bcctr BO,BI</P>
11213 </TD>
11214 </TR>
11215 <TR>
11216 <TD WIDTH=134>
11217 <P>bctrl BO,BI</P>
11218 </TD>
11219 <TD WIDTH=118>
11220 <P>equivalent to</P>
11221 </TD>
11222 <TD>
11223 <P>bcctrl BO,BI</P>
11224 </TD>
11225 </TR>
11226 <TR>
11227 <TD WIDTH=134>
11228 <P>crmove crbT,crbA</P>
11229 </TD>
11230 <TD WIDTH=118>
11231 <P>equivalent to</P>
11232 </TD>
11233 <TD>
11234 <P>crxor crbT,crbA,crbA</P>
11235 </TD>
11236 </TR>
11237 <TR>
11238 <TD WIDTH=134>
11239 <P>crnot crbT,crbA</P>
11240 </TD>
11241 <TD WIDTH=118>
11242 <P>equivalent to</P>
11243 </TD>
11244 <TD>
11245 <P>crnor crbT,crbA,crbA</P>
11246 </TD>
11247 </TR>
11248 <TR>
11249 <TD WIDTH=134 HEIGHT=10>
11250 <P>mfear rT</P>
11251 </TD>
11252 <TD WIDTH=118 HEIGHT=10>
11253 <P>equivalent to</P>
11254 </TD>
11255 <TD HEIGHT=10>
11256 <P>mfspr rT,282</P>
11257 </TD>
11258 </TR>
11259 <TR>
11260 <TD WIDTH=134>
11261 <P>mtear rS</P>
11262 </TD>
11263 <TD WIDTH=118>
11264 <P>equivalent to</P>
11265 </TD>
11266 <TD>
11267 <P>mtspr 282,rS</P>
11268 </TD>
11269 </TR>
11270 <TR>
11271 <TD WIDTH=134>
11272 <P>mtfs&#91;.&#93; frB</P>
11273 </TD>
11274 <TD WIDTH=118>
11275 <P>equivalent to</P>
11276 </TD>
11277 <TD>
11278 <P>mtfsf&#91;.&#93; 0xff,frB</P>
11279 </TD>
11280 </TR>
11281 <TR>
11282 <TD WIDTH=134>
11283 <P>la rT,d(rA)</P>
11284 </TD>
11285 <TD WIDTH=118>
11286 <P>equivalent to</P>
11287 </TD>
11288 <TD>
11289 <P>addi rT,rA,d</P>
11290 </TD>
11291 </TR>
11292 <TR>
11293 <TD WIDTH=134>
11294 <P>cmp crT,rA,rB</P>
11295 </TD>
11296 <TD WIDTH=118>
11297 <P>equivalent to</P>
11298 </TD>
11299 <TD>
11300 <P>cmp crT,0,rA,rB</P>
11301 </TD>
11302 </TR>
11303 <TR>
11304 <TD WIDTH=134>
11305 <P>cmp num,rA,rB</P>
11306 </TD>
11307 <TD WIDTH=118>
11308 <P>equivalent to</P>
11309 </TD>
11310 <TD>
11311 <P>cmp num,0,rA,rB</P>
11312 </TD>
11313 </TR>
11314 <TR>
11315 <TD WIDTH=134>
11316 <P>cmpi crT,rA,s16</P>
11317 </TD>
11318 <TD WIDTH=118>
11319 <P>equivalent to</P>
11320 </TD>
11321 <TD>
11322 <P>cmpi crT,0,rA,s16</P>
11323 </TD>
11324 </TR>
11325 <TR>
11326 <TD WIDTH=134 HEIGHT=12>
11327 <P>cmpi num,rA,s16</P>
11328 </TD>
11329 <TD WIDTH=118 HEIGHT=12>
11330 <P>equivalent to</P>
11331 </TD>
11332 <TD HEIGHT=12>
11333 <P>cmpi num,0,rA,s16</P>
11334 </TD>
11335 </TR>
11336 <TR>
11337 <TD WIDTH=134>
11338 <P>cmpl crT,rA,rB</P>
11339 </TD>
11340 <TD WIDTH=118>
11341 <P>equivalent to</P>
11342 </TD>
11343 <TD>
11344 <P>cmpl crT,0,rA,rB</P>
11345 </TD>
11346 </TR>
11347 <TR>
11348 <TD WIDTH=134>
11349 <P>cmpl num,rA,rB</P>
11350 </TD>
11351 <TD WIDTH=118>
11352 <P>equivalent to</P>
11353 </TD>
11354 <TD>
11355 <P>cmpl num,0,rA,rB</P>
11356 </TD>
11357 </TR>
11358 <TR>
11359 <TD WIDTH=134>
11360 <P>cmpli crT,rA,s16</P>
11361 </TD>
11362 <TD WIDTH=118>
11363 <P>equivalent to</P>
11364 </TD>
11365 <TD>
11366 <P>cmpli crT,0,rA,u16</P>
11367 </TD>
11368 </TR>
11369 <TR>
11370 <TD WIDTH=134>
11371 <P>cmpli num,rA,s16</P>
11372 </TD>
11373 <TD WIDTH=118>
11374 <P>equivalent to</P>
11375 </TD>
11376 <TD>
11377 <P>cmpli num,0,rA,u16</P>
11378 </TD>
11379 </TR>
11380 </TABLE>
11381 </P></LI>
11382 </UL>
11384 <DIR>
11385 <LI>Added the following mnemonics to the PowerPC assembler:
11387 <P>eciwx rD,rA,rB<BR>
11388 ecowx rS,rA,rB<BR>
11389 fres&#91;.&#93; frD,frB<BR>
11390 frsqrte&#91;.&#93; frD,frB<BR>
11391 fsel&#91;.&#93; frD,frA,frC,frB<BR>
11392 fsqrt&#91;.&#93; frD,frB<BR>
11393 fsqrts&#91;.&#93; frD,frB<BR>
11394 stfiwx frs,rA,rB<BR>
11395 tlbsync</P></LI>
11397 <LI>Added additional forms for the following mnemonics to the
11398 PowerPC assembler:\
11400 <P><TABLE BORDER=0>
11401 <TR>
11402 <TD WIDTH=86>
11403 <P>mcrfs crfD,crfS</P>
11404 </TD>
11405 <TD>
11406 <P>Allows a crf as the first operand (previously only a
11407 number)</P>
11408 </TD>
11409 </TR>
11410 <TR>
11411 <TD WIDTH=86>
11412 <P>mcrxr crfD</P>
11413 </TD>
11414 <TD>
11415 <P>Allows a crf as the operand (previously only a
11416 number)</P>
11417 </TD>
11418 </TR>
11419 <TR>
11420 <TD WIDTH=86>
11421 <P>mftb rT,TBR</P>
11422 </TD>
11423 <TD>
11424 <P>Allows specifying the value of the timer base
11425 register</P>
11426 </TD>
11427 </TR>
11428 </TABLE>
11429 </P></LI>
11431 <LI>Fixed the 4 parameter forms of cmpli, and cmplwi to take an
11432 unsigned immediate not a signed immediate.</LI>
11434 <LI>Fixed the PowerPC clrlslwi macros which were incorrect as:
11436 <P>clrlslwi&#91;.&#93; ra,rs,b,n equivalent to rlwinm&#91;.&#93;
11437 ra,rs,n.b-n,31-b</P>
11439 <P>corrected to:</P>
11441 <P>clrlslwi&#91;.&#93; ra,rs,b,n equivalent to rlwinm&#91;.&#93;
11442 ra,rs,n.b-n,31-n</P></LI>
11443 </DIR>
11445 <H5><FONT SIZE="+1">Changes since the last release (cctools-234 thru
11446 cctools-230 for the 5.0 Rhapsody DR1 release)</FONT></H5>
11448 <UL>
11449 <LI>The only changes were to fix build problems relating to new
11450 System Framework &amp; Kernel header files and the switch to the
11451 -dynamic compiler for PowerPC.</LI>
11453 <LI>Removed the changed the static link editor to ignore -seg1addr
11454 (also known as -image_base) for dynamic libraries greater than
11455 0x4000000 for PowerPC. This was only needed to allow static code
11456 gen to be used with Frameworks.</LI>
11457 </UL>
11459 <H5><FONT SIZE="+1">Changes since the last release (cctools-229 for
11460 the 5.0 Rhapsody DR1 release)</FONT></H5>
11462 <UL>
11463 <LI>Added ppc604e to the arch table for a specific architecture as
11464 this is returned on some Macs.</LI>
11465 </UL>
11467 <H5><FONT SIZE="+1">Changes since the last release (cctools-228 for
11468 the 5.0 Rhapsody DR1 release)</FONT></H5>
11470 <UL>
11471 <LI>The changed the assembler in cctools-228 was wrong. It
11472 resulted in producing bad code when compiling -static (triggered
11473 by the change to compiler in cc-752). The change has been fixed in
11474 the cctools-229 assembler.</LI>
11475 </UL>
11477 <H5><FONT SIZE="+1">Changes since the last release (cctools-227 for
11478 the 5.0 Rhapsody DR1 release)</FONT></H5>
11480 <UL>
11481 <LI>Changed the assembler to allow section difference relocations
11482 with the -static flag. This fixes using the cc-752 and getting the
11483 "Can't emit reloc ..." error message from the assembler.</LI>
11484 </UL>
11486 <H5><FONT SIZE="+1">Changes since the last release (cctools-226 for
11487 the 5.0 Rhapsody DR1 release)</FONT></H5>
11489 <UL>
11490 <LI>Added the PowerPC mnemonics ai and ai. the assembler which are
11491 archaic forms of addic&#91;.&#93; as the compiler currently
11492 generates them in some cases.</LI>
11494 <LI>Fixed otool -c for use with PowerPC core files.</LI>
11495 </UL>
11497 <H5><FONT SIZE="+1">Changes since the last release (cctools-225 for
11498 the 5.0 Rhapsody DR1 release)</FONT></H5>
11500 <UL>
11501 <LI>Added ppc604 to the arch table for a specific architecture as
11502 this is what the Kernel is returning on the Power Mac 8500. This
11503 was causing code that supported loading bundles to fail (this is
11504 library code in System framework, thus a new System framework
11505 needs to be built and used to see this fix).</LI>
11507 <LI>Fixed a bug in the dynamic link editor where it was not
11508 correctly calculating the immediate of a HA16 reloc by checking
11509 the 0x8000 bit of the other half. This was causing address to be
11510 off by 0x10000.</LI>
11512 <LI>Fixed a bug in the dynamic link editor when the $HOME
11513 environment variable was not set. (the case for the single user
11514 prompt on PowerPC). This was causing bus errors when a dynamic
11515 library was not found.</LI>
11516 </UL>
11518 <H5><FONT SIZE="+1">Changes since the last release (cctools-224 for
11519 the 5.0 Rhapsody DR1 release)</FONT></H5>
11521 <UL>
11522 <LI>Fixed a bug in the static link editor where the __PAGEZERO
11523 segment was not being created for PowerPC (left over from NRW when
11524 executables started at high addresses and the kernel was at
11525 zero).</LI>
11527 <LI>Changed the static link editor to ignore -seg1addr (also known
11528 as -image_base) for dynamic libraries greater than 0x4000000 for
11529 PowerPC. This will allow static code gen to be used with
11530 Frameworks.</LI>
11532 <LI>Changes since the last release (cctools-223 for the 5.0
11533 Rhapsody release)</LI>
11535 <LI>Changed the source of cctools-224 to define NO_INDR_LIBC if
11536 __TEFLON__ is defined so it will build with SDK2 which is not
11537 using <I>indr</I>(l). This will allow cctools-224 to built for the
11538 Grail RC target.</LI>
11540 <LI>Fixed a bug in the static link editor when defining common
11541 symbols when a common section exists in the input .o files which
11542 has an alignment less than the alignment needed for the common
11543 symbols being defined by the link editor did not get aligned
11544 correctly.</LI>
11546 <LI>Fixed <I>libtool</I>(1) running on Teflon so it doesn't always
11547 report "internal link edit command failed". The link actually
11548 worked but the checking of the return code for Teflon was
11549 wrong.</LI>
11551 <LI>Fixed <I>as</I>(1) running on Teflon so it doesn't always exit
11552 non-zero when it runs the target assembler (/lib/arch/as). The
11553 assembly actually worked but the checking of the return code for
11554 Teflon was wrong.</LI>
11556 <LI>The other thread states for PowerPC are now printed by otool
11557 (useful for core files).</LI>
11559 <LI>Added the PowerPC simplified mnemonics crset, crclr and mtcr
11560 to the assembler.</LI>
11562 <LI>Added the include file &lt;mach-o/ranlib.h&gt; to the cctools
11563 project from &lt;bsd/ranlib.h&gt; and changed <I>off_t</I> type to
11564 <I>unsigned long</I> because <I>off_t</I> on Teflon is 64 bits
11565 which would break compatibility with existing libraries.</LI>
11567 <LI>Added the header files &lt;mach-o/sparc/swap.h&gt;and
11568 &lt;mach-o/ppc/swap.h&gt; which get installed in the System
11569 Framework to be shipped. This and the added library code allows
11570 swapping of thread states.</LI>
11572 <LI>Added the header files &lt;mach-o/i860/swap.h&gt;and
11573 &lt;mach-o/m88k/swap.h&gt; which get installed locally and not
11574 shipped. The code was not added to the System Framework.</LI>
11576 <LI>Changed the cctools package to install
11577 &lt;mach-o/ppc/reloc.h&gt; with the exported headers. And to
11578 install &lt;mach-o/hppa/reloc.h&gt; with the local headers.</LI>
11580 <LI>Changed of the ppc subtypes to match the kernel. Only the 601
11581 and 603 types are currently used by the assembler. The types
11582 currently in use are as follows:
11584 <UL>
11585 <LI>/*<BR>
11586 * PowerPC subtypes<BR>
11587 */<BR>
11588 #define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)<BR>
11589 #define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)<BR>
11590 #define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 2)<BR>
11591 #define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 3)<BR>
11592 #define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 4)<BR>
11593 #define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 5)<BR>
11594 #define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 6)<BR>
11595 #define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 7)<BR>
11596 #define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 8)<BR>
11597 #define CPU_SUBTYPE_POWERPC_740 ((cpu_subtype_t) 9)</LI>
11598 </UL>
11599 </LI>
11601 <LI>The -arch flags for the 601 and 603 are -arch ppc601 and -arch
11602 ppc603. Others will be defined as needed.</LI>
11604 <LI>Updated the NXFindBestFatArch(3) and NXCombineCpuSubtypes(3)
11605 to include PowerPC guessing at how to combine the PowerPC subtypes
11606 (someone in the OS group should look at this).</LI>
11608 <LI>Updated the ArchInfoTable to include PowerPC and removed mips
11609 and vax which gets returned with NXGetAllArchInfos(3).</LI>
11611 <LI>Updated &lt;mach-o/swap.h&gt; and library code with all the
11612 things for dynamic shared libraries that never made it into the
11613 System Framework code.</LI>
11614 </UL>
11616 <H5><FONT SIZE="+1">Changes since the last release (cctools-222 for
11617 the 5.0 Rhapsody DR1 release)</FONT></H5>
11619 <UL>
11620 <LI>Fixed changes to allow cctools-223 to build for 4.2mach as
11621 well as PowerPC &amp; Intel with Teflon SDK2.</LI>
11622 </UL>
11624 <H5><FONT SIZE="+1">Changes since the last release (cctools-221 for
11625 the 5.0 Rhapsody DR1 release)</FONT></H5>
11627 <UL>
11628 <LI>Added the -stack_addr and -stack_size options to <I>ld</I>(1).
11629 Note the kernel support for these has not yet been added. So the
11630 flags should only be used for bringing up the support in the
11631 kernel at this time. See the <I>ld</I>(1) man page for details on
11632 these flags.</LI>
11634 <LI>Fixed a bug in the link editor <I>ld</I>(1) for PowerPC HA16
11635 relocation types when bit 15 was set in the other half of the
11636 immediate stored in the relocation entry. This resulted in bad
11637 code. This bug was found when bringing up driverkit and is needed
11638 for anyone doing development on driverkit for PowerPC.</LI>
11640 <LI>Fixed a bug in the link editor <I>ld</I>(1) where it generated
11641 an error message for the lazy symbol pointer section in crt1.o for
11642 PowerPC which it shouldn't have. This bug was found bring up
11643 -dynamic code gen for PowerPC and is needed for anyone using
11644 -dynamic code gen for PowerPC.</LI>
11646 <LI>Incorporated many changes to allow cctools-222 to build for
11647 PowerPC &amp; Intel with Teflon SDK2.</LI>
11648 </UL>
11650 <H5><FONT SIZE="+1">Changes since the last release (cctools-220 for
11651 the 5.0 Rhapsody DR1 release)</FONT></H5>
11653 <UL>
11654 <LI>The thread status for the PowerPC has changed to match the
11655 kernel. This makes all previous executables incompatible. The old
11656 <I>otool</I>(1) will no longer work on PowerPC executables because
11657 of this change. All executables should be relinked.</LI>
11658 </UL>
11660 <H5><FONT SIZE="+1">Changes since the last release (cctools-219 for
11661 the 5.0 Rhapsody DR1 release)</FONT></H5>
11663 <UL>
11664 <LI>Fixed a bug in the link editor <I>ld</I>(1)where $NEXT_ROOT
11665 did not get prefixed to depenendent dynamic libraries.</LI>
11666 </UL>
11668 <H5><FONT SIZE="+1">Changes since the last release (cctools-218 for
11669 the 5.0 Rhapsody DR1 release)</FONT></H5>
11671 <UL>
11672 <LI>Added searching fallback paths when dynamic libraries can't be
11673 found. The two paths are in the environment variables
11674 DYLD_FALLBACK_FRAMEWORK_PATH and DYLD_FALLBACK_LIBRARY_PATH. If
11675 these are not set they default to
11676 $(HOME)/Library/Frameworks:/LocalLibrary/Frameworks:/NextLibrary/Frameworks
11677 and $(HOME)/lib:/usr/local/lib:/lib:/usr/lib (bug #69135).</LI>
11679 <LI>Changed the static linker to pad pure instruction sections of
11680 i386 outputs with nop's (bug #77806).</LI>
11682 <LI>Added .section_align <I>align_value</I> to be allowed in
11683 section order files. This causes the symbol following it to be
11684 aligned on a 2^<I>align_value</I> byte boundary (bug #77807).</LI>
11685 </UL>
11687 <H5><FONT SIZE="+1">Changes since the last release (cctools-217 for
11688 the 5.0 Rhapsody DR1 release)</FONT></H5>
11690 <UL>
11691 <LI>Changed the cctools project to build with gnumake.</LI>
11693 <LI>Updated the locking code and the cache management code in the
11694 dynamic linker for the PowerPC with suggestions from the ppc
11695 bringup team.</LI>
11696 </UL>
11698 <H5><FONT SIZE="+1">Changes since the last release (cctools-216 for
11699 the 5.0 Rhapsody DR1 release)</FONT></H5>
11701 <UL>
11702 <LI>Ported the dynamic linker to PowerPC.</LI>
11703 </UL>
11705 <H5><FONT SIZE="+1">Changes since the last release (cctools-215 for
11706 the 5.0 Rhapsody DR1 release)</FONT></H5>
11708 <UL>
11709 <LI>Changed the standard symbol stubs for the PowerPC to take
11710 advantage of the super scaler nature of the 603 and 604. See the
11711 updated Dynamic Shared Libraries Detailed Design Document for the
11712 details.</LI>
11713 </UL>
11715 <H5><FONT SIZE="+1">Changes since the last release (cctools-214 for
11716 the 5.0 Rhapsody DR1 release)</FONT></H5>
11718 <UL>
11719 <LI>Made the cctools-215 project build (except for linking dyld
11720 and otool) under the Teflon SDK.</LI>
11722 <LI>Fixed the PowerPC assembler to use the correct opcodes for
11723 mftb and mftbu and updated otool's disassembly.</LI>
11725 <LI>Added the support in the static link editor to understand
11726 thePowerPC position-independent relocation entries (section
11727 difference). This allows PowerPC dynamic shared libraries and
11728 executables that use them to be built (Note as stated above there
11729 is not yet a compiler that supports -dynamic for -arch ppc, and
11730 there is no dynamic linker yet for PowerPC).</LI>
11732 <LI>Added the support in the PowerPC assembler for the standard
11733 symbol stubs.</LI>
11734 </UL>
11736 <H5><FONT SIZE="+1">Changes since the last release (cctools-213 for
11737 the 5.0 Rhapsody DR1 release)</FONT></H5>
11739 <UL>
11740 <LI>Added the support in the PowerPC assembler for
11741 position-independent relocation entries (section difference). As
11742 well as support in otool for printing them and dissassembling with
11743 them.</LI>
11745 <LI>Updated the Detailed Design Document with the first cut at the
11746 code generation for -dynamic for the PowerPC. This is just a first
11747 pass to allow getting the assember and otool in place so that the
11748 compiler work can start.</LI>
11750 <LI>Fixed a bug in the PowerPC assembler where it treated the
11751 comment character ';' (semicolon) as a statement separator.</LI>
11753 <LI>Fixed the PowerPC assembler to allow -arch m98k if passed to
11754 it.</LI>
11755 </UL>
11757 <H5><FONT SIZE="+1">Changes since the last release (cctools-212 for
11758 the 5.0 Rhapsody DR1 release)</FONT></H5>
11760 <UL>
11761 <LI>The header files for mach-o subdirectory and the library files
11762 were added to the cctools project taken from the libc_macho
11763 project.</LI>
11765 <LI>Fixed the typo in the <I>ld</I>(1) warning message for bug
11766 #77070.</LI>
11768 <LI>Fixed a bug in <I>ld</I>(1) that was causing prebinding not to
11769 happen if a private extern had the same name as a global function
11770 in a dependent library (this can occur because -lcc_dynamic is
11771 being linked in).</LI>
11773 <LI>Fixed the PowerPC's assembler manual for compare instructions
11774 to have a 0 not a 1 for the 32-bit version not the 64-bit version.
11775 For example cmp 0,1,RA,RB was changed to cmp 0,0,RA,RB.</LI>
11777 <LI>Changed <I>libtool</I>(1) to ignore the -pg flag.</LI>
11779 <LI>Added the not rA,rT and not. rA,rT instructions.</LI>
11780 </UL>
11782 <H5><FONT SIZE="+1">Changes since the last release (cctools-211 for
11783 the 5.0 Rhapsody DR1 release)</FONT></H5>
11785 <UL>
11786 <LI>Fixed a bug in the link editor <I>ld</I>(1)where $NEXT_ROOT
11787 did not prefix standard framework paths. Also fixed -Z to not use
11788 standard framework paths.</LI>
11790 <LI>Changed the following instructions to the correct PowerPC
11791 mnemonics:
11793 <P><TABLE BORDER=0 WIDTH="62%">
11794 <TR>
11795 <TD>
11796 <P>NRW compiler mnemonic</P>
11797 </TD>
11798 <TD>
11799 <P>PowerPC mnemonic</P>
11800 </TD>
11801 </TR>
11802 <TR>
11803 <TD>
11804 <P>tlbiex</P>
11805 </TD>
11806 <TD>
11807 <P>tlbie</P>
11808 </TD>
11809 </TR>
11810 <TR>
11811 <TD>
11812 <P>slbiex</P>
11813 </TD>
11814 <TD>
11815 <P>slbie</P>
11816 </TD>
11817 </TR>
11818 </TABLE>
11819 </P></LI>
11821 <LI>Also corrected the opcodes for slbie and slbia
11822 instructions.</LI>
11824 <LI>The bug in the assembler that causes it exits with a zero
11825 status and create an output file if it can't open the input file
11826 has been fixed.</LI>
11828 <LI>The .flag_reg <I>num</I> and .noflag_reg <I>num</I> ppc
11829 directives were added to the assembler to allow warnings to be
11830 generated for specific register uses.</LI>
11832 <LI>The -no_ppc601 flag and the .no_ppc601 directive were added to
11833 the assembler to warn of 601 uses.</LI>
11835 <LI>The 603 instructions tlbld rB and tlbli rB were added to the
11836 assembler.</LI>
11838 <LI>The missing 601 instruction clcs rD,rA was added to the
11839 assembler.</LI>
11841 <LI>Use of instructions specific to the 601 and 603 now cause the
11842 assembler to mark the resulting object file with the specific
11843 cpusubtype. Note the assembler is currently not complete with
11844 respect to instructions for the specfic cpusubtypes. All of the
11845 ppc subtypes have been added to cctools-212's version of
11846 &lt;mach/machine.h&gt; but only the 601 and 603 types are
11847 currently used. The types are as follows:
11849 <UL>
11850 <LI>/*<BR>
11851 * PowerPC subtypes<BR>
11852 */<BR>
11853 #define CPU_SUBTYPE_POWERPC_ALL ((cpu_subtype_t) 0)<BR>
11854 #define CPU_SUBTYPE_POWERPC_601 ((cpu_subtype_t) 1)<BR>
11855 #define CPU_SUBTYPE_POWERPC_601v ((cpu_subtype_t) 2)<BR>
11856 #define CPU_SUBTYPE_POWERPC_602 ((cpu_subtype_t) 3)<BR>
11857 #define CPU_SUBTYPE_POWERPC_603 ((cpu_subtype_t) 4)<BR>
11858 #define CPU_SUBTYPE_POWERPC_603e ((cpu_subtype_t) 5)<BR>
11859 #define CPU_SUBTYPE_POWERPC_603ev ((cpu_subtype_t) 6)<BR>
11860 #define CPU_SUBTYPE_POWERPC_604 ((cpu_subtype_t) 7)<BR>
11861 #define CPU_SUBTYPE_POWERPC_604e ((cpu_subtype_t) 8)<BR>
11862 #define CPU_SUBTYPE_POWERPC_620 ((cpu_subtype_t) 9)<BR>
11863 #define CPU_SUBTYPE_POWERPC_X704 ((cpu_subtype_t) 10)<BR>
11864 #define CPU_SUBTYPE_POWERPC_603q ((cpu_subtype_t) 11)</LI>
11865 </UL>
11866 </LI>
11868 <LI>The -arch flags for the 601 and 603 are -arch ppc601 and -arch
11869 ppc603. Others will be defined as needed.</LI>
11871 <LI>Changes since the last release (cctools-210 for the 5.0
11872 Rhapsody release)</LI>
11874 <LI>The project sources were changed so that the lib_ofiles target
11875 could be built for teflon in the Grail release control
11876 target.</LI>
11877 </UL>
11879 <H5><FONT SIZE="+1">Changes since the last release (cctools-209.2 for
11880 the 4.2 OpenStep release)</FONT></H5>
11882 <UL>
11883 <LI>Changed the PowerPC assembler to treat $ the same as . (dot)
11884 for the current pc.</LI>
11886 <LI>Changed the treatment of stswi and lswi instruction's third
11887 parameter so that it allows the value 32 in the assembly language
11888 and is treated as if it were 0.</LI>
11890 <LI>Changed the following instructions to the correct PowerPC
11891 mnemonics:
11893 <P><TABLE BORDER=0 WIDTH="46%">
11894 <TR>
11895 <TD WIDTH=139>
11896 <P>NRW compiler mnemonic</P>
11897 </TD>
11898 <TD>
11899 <P>PowerPC mnemonic</P>
11900 </TD>
11901 </TR>
11902 <TR>
11903 <TD WIDTH=139>
11904 <P>mull</P>
11905 </TD>
11906 <TD>
11907 <P>mullw</P>
11908 </TD>
11909 </TR>
11910 <TR>
11911 <TD WIDTH=139>
11912 <P>mull.</P>
11913 </TD>
11914 <TD>
11915 <P>mullw.</P>
11916 </TD>
11917 </TR>
11918 <TR>
11919 <TD WIDTH=139>
11920 <P>mullo</P>
11921 </TD>
11922 <TD>
11923 <P>mullwo</P>
11924 </TD>
11925 </TR>
11926 <TR>
11927 <TD WIDTH=139>
11928 <P>mullo.</P>
11929 </TD>
11930 <TD>
11931 <P>mullwo.</P>
11932 </TD>
11933 </TR>
11934 <TR>
11935 <TD WIDTH=139>
11936 <P>mulwd</P>
11937 </TD>
11938 <TD>
11939 <P>mulhw</P>
11940 </TD>
11941 </TR>
11942 <TR>
11943 <TD WIDTH=139>
11944 <P>mulwd.</P>
11945 </TD>
11946 <TD>
11947 <P>mulhw.</P>
11948 </TD>
11949 </TR>
11950 </TABLE>
11951 </P></LI>
11953 <LI>The NRW compiler mnemonics will continue to work as long as
11954 the NRW compiler is in use. Assembly code should be converted to
11955 use the correct mnemonics. The disassembly of otool -tV uses the
11956 correct PowerPC mnemonics.</LI>
11958 <LI>Fixed the mr instruction (it was ori rA,rS,0 not or rA,rS,rS
11959 as it should have been). Also added the mr. instruction.</LI>
11961 <LI>Changed the lis instruction to treat it's immediate as
11962 unsigned causing it not to flag the instructions like lis
11963 r1,0x8000. This is now consistant with addis r1,0,0x8000.</LI>
11965 <LI>The tools now use -arch ppc for the PowerPC architecture
11966 (previously they used -arch m98k, which still works but is no
11967 longer supported).&nbsp;</LI>
11968 </UL>
11970 <H3><FONT SIZE="+2">Documentation</FONT>&nbsp;</H3>
11972 <H5><FONT SIZE="+1">PowerPC assembler manual (PowerPC Addressing
11973 Modes and Assembler Instructions)</FONT></H5>
11975 <BLOCKQUOTE>See Jeff Mattson (jmattson_ext@next.com) for the latest
11976 copy.</BLOCKQUOTE>
11978 <H5><FONT SIZE="+1">Dynamic Shared Libraries User's Guide</FONT></H5>
11980 <BLOCKQUOTE>The current version of this can be found in <B>(not
11981 updated with respect to PowerPC yet)</B>:
11983 <BLOCKQUOTE>/Network/Servers/seaport/projects/cctools/docs/shlib/user_guide/user_guide.ps</BLOCKQUOTE></BLOCKQUOTE>
11985 <H5><FONT SIZE="+1">Dynamic Shared Libraries Detailed Design
11986 Document</FONT></H5>
11988 <BLOCKQUOTE>The current version of this can be found in <B>(updated
11989 for PowerPC)</B>:
11991 <BLOCKQUOTE>/Network/Servers/seaport/projects/cctools/docs/shlib/detail_doc/current/detail_doc.ps</BLOCKQUOTE></BLOCKQUOTE>
11993 <H5><FONT SIZE="+1">Man Pages</FONT></H5>
11995 <BLOCKQUOTE>Unix manual pages for the cctools release are installed
11996 in the standard places. These are updated for for every
11997 submission.</BLOCKQUOTE>
11998 </BODY>
11999 </HTML>