2 2007-10-16 Nick Kledzik <kledzik@apple.com>
4 <rdar://problem/5556038> Cannot build with libm_static.a statically linked
5 * src/MachOWriterExecutable.hpp: fix when extern relocs are used with -r -d
9 2007-07-3 Nick Kledzik <kledzik@apple.com>
11 <rdar://problem/5351380> Kernel is linked with some global symbols unsorted
12 * src/MachOWriterExecutable.hpp: Add NListNameSorter to allow global atoms and extra labels to be sorted
15 2007-07-20 Nick Kledzik <kledzik@apple.com>
17 <rdar://problem/5254468> Can't do objc_msgSendSuper dispatches after loading a Fix&Continue bundle
18 * src/MachOWriterExecutable.hpp: when calculating what kind of reloc to use, never use an
19 external reloc to reference 32-bit ObjC symbols.
22 2007-07-20 Nick Kledzik <kledzik@apple.com>
24 <rdar://problem/5349847> Runtime crash with ICC math library on Leopard
25 * src/MachOReaderRelocatable.hpp: detect if section starts with a symbol that is not
26 aligned to section and correct it.
31 2007-06-29 Nick Kledzik <kledzik@apple.com>
33 <rdar://problem/5303718> export hiding does not work for frameworks
34 * src/MachOReaderDylib.hpp: fix checks in isPublicLocation()
35 * unit-tests/test-cases/symbol-moving: update to test frameworks as well as dylibs
38 2007-06-27 Nick Kledzik <kledzik@apple.com>
40 <rdar://problem/5299907> linker should use undefines from flat dylibs when linking a main flat
41 * src/ObjectFile.h: added fLinkingMainExecutable
42 * src/Options.cpp: set up fLinkingMainExecutable
43 * src/MachOReaderDylib.hpp: when linking a main executable for flat namespace, the reader for
44 any loaded flat namespace dylib will have a new atoms that has references to all undefined
46 * unit-tests/test-cases/flat-indirect-undefines: added test case
47 * doc/man/man1/ld.1: update man page to describe when dylib undefines are used
50 2007-06-27 Nick Kledzik <kledzik@apple.com>
52 <rdar://problem/5277857> OpenGL.framework and X11 both have a libGL.dylib which can cause ld to segfault if both are found
53 * src/MachOReaderDylib.hpp: add assertNoReExportCycles() method
54 * unit-tests/test-cases/dylib-re-export-cycle: added test case
57 2007-06-27 Nick Kledzik <kledzik@apple.com>
59 <rdar://problem/5286462> ld64 has slightly different warning message formats than the old ld
60 * src/ld.cpp: standardize all warning messages to start with "ld: warning"
61 * src/MachOWriterExecutable.hpp: ditto
62 * src/MachOReaderRelocatable.hpp: ditto
63 * src/MachOReaderDylib.hpp:ditto
66 2007-06-26 Nick Kledzik <kledzik@apple.com>
68 <rdar://problem/5297034> -dead_strip can cause duplicate external commons
69 * src/ld.cpp: don't use discarded coalesced global atoms as dead strip roots
70 * src/machochecker.cpp: error if duplicate external symbols
71 * unit-tests/test-cases/commons-coalesced-dead_strip: added test case
74 2007-06-26 Nick Kledzik <kledzik@apple.com>
76 <rdar://problem/4135857> update man page that linker does not search indirect libraries with two-level namespace
77 * doc/man/man1/ld.1: add new "Indirect dynamic libraries" section to man page
80 2007-06-26 Nick Kledzik <kledzik@apple.com>
82 <rdar://problem/5285473> Xc9A466: Exports file cannot use Mac line ends
83 * src/Options.cpp: check for \r or \n when parsing .exp files
84 * unit-tests/test-cases/exported_symbols_list-eol: added test case
89 2007-05-31 Nick Kledzik <kledzik@apple.com>
91 <rdar://problem/4607755> Simplier, generalized way to re-export dylibs: LC_REEXPORT_DYLIB
92 * src/MachOWriterExecutable.hpp: Use LC_REEXPORT_DYLIB when targetting 10.5
95 ----- Tagged ld64-74.5
97 2007-05-31 Nick Kledzik <kledzik@apple.com>
99 <rdar://problem/5241902> set OSO timestamp to zero for when building in buildit
100 * src/ld.cpp: check for RC_RELEASE and if exists set all OSO timestamps to zero
103 2007-05-30 Nick Kledzik <kledzik@apple.com>
105 <rdar://problem/5224676> BUILD_STABS now causes ld of xnu to bus error
106 * src/ld.cpp: Change || to && in collectStabs()
109 ----- Tagged ld64-74.4
111 2007-05-18 Nick Kledzik <kledzik@apple.com>
113 <rdar://problem/5211667> static probes don't work with libraries in dyld shared cache
114 * src/OpaqueSection.hpp: the __TEXT segment is executable
117 ----- Tagged ld64-74.3
119 2007-05-16 Nick Kledzik <kledzik@apple.com>
121 <rdar://problem/5201463> ppc: linker adds stubs to cstring references
122 * src/MachOWriterExecutable.hpp: update ppc stubableReference() to only allow high/low references
123 to be stubed if they reference a symbol in some other dylib.
124 * unit-tests/test-cases/stub-generation: added test case
127 2007-05-16 Nick Kledzik <kledzik@apple.com>
129 <rdar://problem/5008421> ppc64: need to make LOCAL indirect symbol table entry for now local symbol
130 * src/MachOWriterExecutable.hpp: factored local tests into indirectSymbolIsLocal()
131 * unit-tests/test-cases/non-lazy-r: added test case
134 2007-05-15 Nick Kledzik <kledzik@apple.com>
136 <rdar://problem/5198807> ld64 drops fix&continue bit in __OBJC, __image_info.
137 * src/MachOReaderRelocatable.hpp: implement objcReplacementClasses()
140 2007-05-15 Nick Kledzik <kledzik@apple.com>
142 <rdar://problem/5066152> support __image_info in __DATA segment for 64-bits
143 * src/MachOReaderRelocatable.hpp: use strncmp() for __objc_imageinfo since it is 16 bytes long
144 * src/MachOWriterExecutable.hpp: specialize segment/section names for synthesized objc image info section
147 2007-05-15 Nick Kledzik <kledzik@apple.com>
149 * unit-tests/include/common.makefile: set COMPILER_PATH so harness works with latest compiler
152 ----- Tagged ld64-74.2
154 2007-05-11 Nick Kledzik <kledzik@apple.com>
156 <rdar://problem/5195447> ld64-74.1 breaks libstdc++ DejaGnu test (G5 only)
157 * src/MachOWriterExecutable.hpp: don't stub a reference if the target offset is non-zero
160 ----- Tagged ld64-74.1
162 2007-05-09 Nick Kledzik <kledzik@apple.com>
164 * src/Options.h: add emitWarnings()
165 * src/Options.cpp: wire up -w to emitWarnings()
168 2007-05-09 Nick Kledzik <kledzik@apple.com>
170 <rdar://problem/5137285> ld64 won't link wine (regression from Tiger)
171 * src/Architectures.hpp: add x86::kPointerDiff16 and x86::kPCRel16
172 * src/MachOReaderRelocatable.hpp: add support to parse new relocs
173 * src/MachOWriterExecutable.hpp: add support fo new relocs
176 2007-05-08 Nick Kledzik <kledzik@apple.com>
178 <rdar://problem/5182537> need way for ld and dyld to see different exported symbols in a dylib
179 * src/MachOReaderDylib.hpp: update parse and use $ld$ symbols
180 * src/Options.h: move VersionMin to ReaderOptions
181 * src/ObjectFile.h: move VersionMin to ReaderOptions
182 * src/Options.cpp: move VersionMin to ReaderOptions
183 * src/MachOWriterExecutable.hpp: move VersionMin to ReaderOptions
184 * unit-tests/test-cases/symbol-moving: added test case
187 2007-05-03 Nick Kledzik <kledzik@apple.com>
189 <rdar://problem/5181105> typo in error message for linking -pie
190 * src/MachOWriterExecutable.hpp: fix typo in error messages
195 2007-05-03 Nick Kledzik <kledzik@apple.com>
197 <rdar://problem/5171880> ld64 can't find @executable _path relative dylibs from our umbrella frameworks
198 <rdar://problem/4019497> ld64 should handle linking against dylibs that have @loader_path based dylib load commands
199 * src/ObjectFile.h: add from parameter to findDylib()
200 * src/MachOReaderDylib.hpp: supply from parameter to findDylib()
201 * src/ld.cpp: use from parameter for @loader_path substitution in findDylib()
202 * unit-tests/test-cases/re-export-relative-paths: added test case
205 2007-05-02 Nick Kledzik <kledzik@apple.com>
207 * src/ObjectFile.h: add fLogObjectFiles and fLogAllFiles
208 * src/Options.cpp: hook up -t to fLogAllFiles and -whatsloaded to fLogObjectFiles
209 * src/MachOReaderDylib.hpp: log if fLogAllFiles
210 * src/MachOReaderRelocatable.hpp: log if fLogObjectFiles or fLogAllFiles
211 * src/MachOReaderArchive.hpp: log if fLogAllFiles
212 * doc/man/man1/ld.1: update man page
215 2007-05-02 Nick Kledzik <kledzik@apple.com>
217 <rdar://problem/5177848> typo in message, frameowrk
218 * src/Options.cpp: fix typo
221 2007-05-01 Nick Kledzik <kledzik@apple.com>
223 <rdar://problem/4977301> "ld" man page is missing the description for many options
224 * doc/man/man1/ld.1: add documentation on all obsolete options
227 2007-05-01 Nick Kledzik <kledzik@apple.com>
229 <rdar://problem/5113424> ld doesn't handle -mlong-branch .o files that have had local symbols stripped
230 <rdar://problem/4965359> warning about dwarf line info with -mlong-branch
231 * src/MachOReaderRelocatable.hpp: don't lop -mlong-branch stubs off end of functions
232 * src/MachOWriterExecutable.hpp: allow code references besides BR24 to be stubable
235 2007-04-30 Nick Kledzik <kledzik@apple.com>
237 <rdar://problem/5065659> unable to link VTK because __textcoal_nt too large
238 * src/MachOReaderRelocatable.hpp: when doing a final link map __textcoal_nt to __text
241 2007-04-30 Nick Kledzik <kledzik@apple.com>
243 <rdar://problem/5062685> ld does not report error when -r is used and exported symbols are not defined.
244 <rdar://problem/4637139> ld leaves global common symbols not in exported symbols list.
245 * src/ld.cpp: stop special casing -r mode in checkUndefines()
246 * src/MachOWriterExecutable.hpp: don't create proxy atom in -r mode if it is supposed to be exported.
247 mark tentative definitions are private extern in -r mode even without -keep_private_externs
248 * unit-tests/test-cases/exported_symbols_list-r: added test case
251 2007-04-27 Nick Kledzik <kledzik@apple.com>
253 <rdar://problem/5137732> ld should keep looking when it finds a weak definition in a dylib
254 * src/ld.cpp: modified addJustInTimeAtoms() to keep looking when a weak defintion is found
255 * unit-tests/test-cases/weak-def-ordinal: added test case
258 2007-04-27 Nick Kledzik <kledzik@apple.com>
260 <rdar://problem/5166572> better error message for indirect dylibs missing required architecture
261 * src/ld.cpp: when loading indirect dylib add path to error messages
264 2007-04-25 Nick Kledzik <kledzik@apple.com>
266 <rdar://problem/5109373> the i386 slice of dyld does not need __IMPORT segment
267 * src/ObjectFile.h: add fForDyld
268 * src/Options.cpp: set up fForDyld
269 * src/MachOReaderRelocatable.hpp: if fForDyld, change __IMPORT segment to __DATA
270 * src/MachOWriterExecutable.hpp: recognize __DATA/__pointers in dyld as a non-lazy section
273 2007-04-24 Nick Kledzik <kledzik@apple.com>
275 <rdar://problem/5008421> ppc64: need to make LOCAL indirect symbol table entry for now local symbol
276 * src/MachOWriterExecutable.hpp: use INDIRECT_SYMBOL_LOCAL for any non-global symbol
277 * unit-tests/test-cases/strip_local: update test case
280 2007-04-24 Nick Kledzik <kledzik@apple.com>
282 <rdar://problem/5150407> ld64 -sectorder and -order_file files don't accept white space following the :
283 * src/Options.cpp: prune white space after colon and before symbol name
284 * unit-tests/test-cases/order_file: update test case to have a space after the colon
287 2007-04-24 Nick Kledzik <kledzik@apple.com>
289 <rdar://problem/5055233> ld64 corrupts debug symbol table entries, nm doesn't print them
290 * src/MachOWriterExecutable.hpp: properly set ilocalsym in module table
293 2007-04-24 Nick Kledzik <kledzik@apple.com>
295 <rdar://problem/5066152> support __image_info in __DATA segment for 64-bits
296 * src/MachOReaderRelocatable.hpp: look for new objc info section name too
299 2007-04-24 Nick Kledzik <kledzik@apple.com>
301 * src/MachOWriterExecutable.hpp: fix -non_global_symbols_strip_list to work with -r
302 * unit-tests/test-cases/local-symbol-partial-stripping: update test case
306 ----- Tagged ld64-73.7
308 2007-05-10 Nick Kledzik <kledzik@apple.com>
310 <rdar://problem/5194804> can't use dtrace static probes in x86_64 dylib
311 * src/MachOWriterExecutable.hpp: x86_64:kPointerDiff32 is ok in shared region
312 * unit-tests/test-cases/dtrace-static-probes: update to build dylib too
315 2007-05-09 Nick Kledzik <kledzik@apple.com>
317 <rdar://problem/5191610> 9A430: using -dead_strip with static dtrace probes causes ld to crash
318 * src/ld.cpp: fix markLive() to look at right name in dtrace probe refernce
319 * unit-tests/test-cases/dtrace-static-probes: added -dead_strip case
322 ----- Tagged ld64-73.6
324 2007-04-17 Nick Kledzik <kledzik@apple.com>
326 <rdar://problem/5140897> Add options to do partial stripping of local symbols
327 * src/MachOWriterExecutable.hpp: use fOptions.keepLocalSymbol()
328 * src/Options.cpp: implement -non_global_symbols_no_strip_list and -non_global_symbols_strip_list
329 * src/Options.h: replace stripLocalSymbols() with localSymbolHandling() and keepLocalSymbol()
330 * doc/man/man1/ld.1: document -non_global_symbols_no_strip_list and -non_global_symbols_strip_list
331 * unit-tests/test-cases/local-symbol-partial-stripping: added test case
334 ----- Tagged ld64-73.5
336 2007-04-17 Nick Kledzik <kledzik@apple.com>
338 <rdar://problem/5129379> ld64-73.3 XBS logging incorrectly reporting "direct" dynamic libraries
339 * src/ld.cpp: restore direct vs indirect library for LD_TRACE_DYLIBS logging
342 2007-04-16 Nick Kledzik <kledzik@apple.com>
344 <rdar://problem/5067034> data initialized to a weak imported symbol is missing relocation
345 * src/MachOWriterExecutable.hpp: check for A::kPointerWeakImport in buildExecutableFixups()
346 * unit-tests/test-cases/weak_import: updated test case to catch this problem
349 2007-04-13 Nick Kledzik <kledzik@apple.com>
351 <rdar://problem/5071047> Support -U
352 * src/MachOWriterExecutable.hpp: create proxies for -U symbols
353 * src/Options.cpp: process -U
354 * src/Options.h: add allowedUndefined() and someAllowedUndefines()
355 * src/ld.cpp: create proxies for -U symbols
356 * doc/man/man1/ld.1: document -U and -undefined options
357 * unit-tests/test-cases/undefined-dynamic-lookup: added test case
360 ----- Tagged ld64-73.4
362 2007-04-12 Nick Kledzik <kledzik@apple.com>
364 <rdar://problem/5125280> ld changes needed to support read-only DOF
365 * src/Options.cpp: remove -read_only_dof
366 * src/Options.h: remove fReadOnlyDOFs
367 * src/ld.cpp: only generate read-only DOF sections
370 ----- Tagged ld64-73.3.1
372 2007-04-13 Nick Kledzik <kledzik@apple.com>
374 <rdar://problem/5130496> -framework vecLib -framework Accelerate causes bad ordinals
375 * src/MachOWriterExecutable.hpp: fix bug optimizeDylibReferences() when there are two readers with same install name
378 ----- Tagged ld64-73.3
380 2007-04-03 Nick Kledzik <kledzik@apple.com>
382 * src/ld.cpp: read-only-dofs should use 32-bit offsets for x86_64
383 * src/MachOReaderDylib.hpp: if "public" re-export is not marked implict, still mark it as re-exported
386 2007-04-02 Nick Kledzik <kledzik@apple.com>
388 <rdar://problem/5105971> if replacement file for -dylib_file is missing, warn instead of error
389 * src/ld.cpp: a try/catch to turn -dylib_file error into a warning.
390 * unit-tests/test-cases/dylib_file-missing: add test case
391 * doc/man/man1/ld.1: update man page about -dead_strip_dylibs
394 ----- Tagged ld64-73.2
396 2007-03-31 Nick Kledzik <kledzik@apple.com>
398 <rdar://problem/5102873> ld64-73: atom sorting error with duplicate zero sized bss symbols
399 * src/MachOReaderRelocatable.hpp: suppress warning on sorting zero size zero fill atoms
401 2007-03-31 Nick Kledzik <kledzik@apple.com>
403 <rdar://problem/5102845> ld64-73 fails anything linking with -lm
404 * src/ld.cpp: when processing dylbs that are sylinks ensure that fDylibMap contains all paths
405 * src/MachOWriterExecutable.hpp: when dead stripping dylibs and renumbering ordinals make sure
406 aliases dylib get renumbered too
407 * unit-tests/test-cases/dylib-aliases: added
410 ----- Tagged ld64-73.1
412 2007-03-30 Nick Kledzik <kledzik@apple.com>
414 * src/MachOWriterExecutable.hpp: back out use of LC_REEXPORT_DYLIB until rdar://problem/5009909 is in build fleet
419 2007-03-30 Nick Kledzik <kledzik@apple.com>
421 <rdar://problem/4175790> ER: -dead_strip_dylibs
422 <rdar://problem/3904828> linker should add implicit load commands for indirectly used public dylibs
423 * src/ObjectFile.h: change dylib reader interface to implictly/explicitlyLinked
424 * src/ld.cpp: use new dylib reader interface
425 * src/Options.h: add deadStripDylibs()
426 * src/Options.cpp: support -dead_strip_dylibs
427 * src/MachOReaderDylib.hpp: use new dylib reader interface
428 * src/MachOWriterExecutable.hpp: remove dylib load commands for unused dylibs and alter ordinals
429 * unit-tests/test-cases/re-export-optimizations: added
430 * unit-tests/test-cases/dead_strip_dylibs: added
433 2007-03-30 Nick Kledzik <kledzik@apple.com>
435 * src/Options.cpp: enable -lfoo to search for libfoo.so as well as libfoo.dylib,
436 remove seg addr table hack for transitioning to new linker
438 2007-03-30 Nick Kledzik <kledzik@apple.com>
440 <rdar://problem/5073800> ADOBE XCODE3: Linker is slow with large C++ .o files
441 * src/MachOReaderRelocatable.hpp: the compiler generates stubs to weak functions in the
442 same translation unit. Don't treat those like the spurios stubs to static functions.
445 2007-03-29 Nick Kledzik <kledzik@apple.com>
447 <rdar://problem/4739044> ld64 should link mach_kernel during xnu builds to support dtrace
448 * src/MachOReaderRelocatable.hpp: To handle duplicate labels properly, rework how atoms sizes are set
449 by iterating through sorted fAtoms rather than fAddrToAtom, . Change default alignment of commons
450 to be the natural alignment of the size rounded up to the closest power of two and max it at 12.
451 Build atoms in reverse symbol table order so that global atoms are constructed before locals.
452 This assures that if there is a global and local label at the same location, the global label
453 will become the atom's name and the local will be an alias. Properly handle a label
454 at the end of a section. Handle R_ABS in relocations. Handle sect-diff relocs with addends.
455 Don't auto-strip 'l' symbols in static executables (mach_kernel).
456 * src/OpaqueSection.hpp: opaque_section now has an ordinal
457 * src/ld.cpp: opaque_section now requires an ordinal
458 * src/ObjectFile.h: add ReaderOptions.fForStatic
459 * src/Options.cpp: set fForStatic when building a static executable
460 * src/MachOWriterExecutable.hpp: add from atom to StubAtom<ppc>. Properly write out i386
461 sect-diff relocs with addends. properly write out ppc PICbase relocs where pic base
465 2007-03-27 Nick Kledzik <kledzik@apple.com>
467 <rdar://problem/5085863> Typo in ld man page (-exported_symbols_list)
468 * doc/man/man1/ld.1: fix typo
471 2007-03-26 Nick Kledzik <kledzik@apple.com>
473 <rdar://problem/4727750> consider generating LC_UUID from a checksum of the file
474 * src/Options.h: change emitUUID() to getUUIDMode()
475 * src/Options.cpp: support -random_uuid
476 * src/MachOWriterExecutable.hpp: set uuid to be md5 hash of entire output file
479 2007-03-24 Nick Kledzik <kledzik@apple.com>
481 * src/MachOWriterExecutable.hpp: restructure writeAtoms() to copy all atoms in memory if possible
484 2007-03-24 Nick Kledzik <kledzik@apple.com>
486 <rdar://problem/5082603> ld -r of stripped .o file can incorrectly merge non-lazy pointers
487 * src/MachOWriterExecutable.hpp: when generating a .o file, non-lazy pointer with target offsets should be
488 encoded as LOCAL in the indirect symbol table
489 * unit-tests/test-cases/stripped-indirect-symbol-table: added test case
492 2007-03-23 Nick Kledzik <kledzik@apple.com>
494 <rdar://problem/5084564> SWB: ld64-72 errors building with gcc-4.2
495 * src/MachOReaderDylib.hpp: add curly brackets in switch cases
496 * src/MachOWriterExecutable.hpp: rearrange classes so there are no template specialization forward references
499 2007-03-23 Nick Kledzik <kledzik@apple.com>
501 * src/ld.cpp: fix -print_statistics when using -dead_strip
504 2007-03-23 Nick Kledzik <kledzik@apple.com>
506 * src/MachOReaderRelocatable.hpp: generate better names for non-lazy pointers to the interior of atoms
509 2007-03-16 Nick Kledzik <kledzik@apple.com>
511 * src/MachOWriterExecutable.hpp: speed up ld -r a little by reversing relocs en mas
514 2007-03-16 Nick Kledzik <kledzik@apple.com>
516 <rdar://problem/4975277> ld Bus Error on missing command line arguments
517 * src/Options.cpp: check next argv[] is not NULL
520 2007-03-16 Nick Kledzik <kledzik@apple.com>
522 <rdar://problem/4832049> need to be able to order symbols in anonymous namespaces
523 * src/ld.cpp: add logic to do fuzzy matching of symbols with anonymous namespace usage
524 * unit-tests/test-cases/order_file-ans: added test case
527 2007-03-16 Nick Kledzik <kledzik@apple.com>
529 <rdar://problem/5042552> headerpad_max_install_names deprecated for 64-bit
530 * src/ld.cpp: make sure dylib load command order matches command line order
531 * src/Options.h: add maxMminimumHeaderPad()
532 * src/Options.cpp: add maxMminimumHeaderPad() set by -headerpad_max_install_names
533 * src/src/MachOWriterExecutable.hpp: check maxMminimumHeaderPad()
534 * doc/man/man1/ld.1: update man page about -headerpad_max_install_names
537 2007-03-16 Nick Kledzik <kledzik@apple.com>
539 <rdar://problem/4592484> Linker returns success although exported symbols are undefined.
540 * src/ld.cpp: turn missing symbols back into an error
543 2007-03-16 Nick Kledzik <kledzik@apple.com>
545 <rdar://problem/4019497> ld64 should handle linking against dylibs that have @loader_path based dylib load commands
546 * unit-tests/test-cases/loader_path: added test case
549 2007-03-16 Nick Kledzik <kledzik@apple.com>
551 <rdar://problem/3904828> linker should add implicit load commands for indirectly used public dylibs
552 <rdar://problem/4142277> Indirect libraries should be found using -F and -L options
553 <rdar://problem/4607755> Simplier, generalized way to re-export dylibs: LC_REEXPORT_DYLIB
554 * src/ld.cpp: reworked all dylib processing. Readers can now add the dylib list.
555 * src/Options.h: add findFileUsingPaths()
556 * src/MachOReaderDylib.hpp: look in re-exported children instead of requring linker to do that
557 * src/ObjectFile.h: add processIndirectLibraries(), remove getDependentLibraryPaths()
558 * src/machochecker.cpp: support LC_REEXPORT_DYLIB
559 * src/ExecutableFile.h: simplify DyLibUsed
560 * src/Options.cpp: add findFileUsingPaths(). add new re-export options
561 * src/MachOWriterExecutable.hpp: Use LC_REEXPORT_DYLIB when targetting 10.5
562 * doc/man/man1/ld.1: updated with new re-export options
563 * unit-tests/test-cases/indirect-path-search: added tests that -F and -L work with indirect dylibs
564 * unit-tests/test-cases/re-export-cases: added tests for all combinations of re-exporting
567 2007-03-14 Nick Kledzik <kledzik@apple.com>
569 <rdar://problem/4982400> sort external relocations to optimize dyld performance
570 * src/MachOWriterExecutable.hpp: added ExternalRelocSorter
571 * src/machochecker.cpp: verify external relocations are grouped by symbol number
572 * unit-tests/test-cases/external-reloc-sorting: added test case
577 2007-03-06 Nick Kledzik <kledzik@apple.com>
579 * src/Options.cpp: ignore .objc_category_name_* symbols in .exp files
582 2007-03-06 Nick Kledzik <kledzik@apple.com>
584 * src/Options.cpp: stop special casing mach_kernel and instead requre kernel to be built with -new_linker
587 2007-03-06 Nick Kledzik <kledzik@apple.com>
589 <rdar://problem/5044253> ld64-72 (experimental) is causing DejaGnu test failures
590 * src/MachOWriterExecutable.hpp: add optimizableGOTReferenceKind() to track GOT uses that cannot be optimized
593 2007-03-06 Nick Kledzik <kledzik@apple.com>
595 <rdar://problem/5026135> minimum header padding should be 32 to allow code signing
596 * src/Options.cpp: initialize fMinimumHeaderPad to 32
597 * src/MachOWriterExecutable.hpp: better calculation of header padding
600 2007-03-06 Nick Kledzik <kledzik@apple.com>
602 <rdar://problem/5033206> Linker crashes with -flat_namespace against two-level dylibs that might have re-exports
603 * src/ld.cpp: flat namespace should not allow NULL indirect readers
606 2007-03-06 Nick Kledzik <kledzik@apple.com>
608 * src/MachOReaderRelocatable.hpp: don't error on S_COALESCED sections with anonymous atoms
609 * src/MachOWriterExecutable.hpp: set MH_PIE bit when linking -pie
610 * ld64.xcodeproj/project.pbxproj: don't echo environment when running unit test
613 2007-03-01 Nick Kledzik <kledzik@apple.com>
615 * doc/man/man1/ld.1: Add descriptions to all "rarely used options"
618 2007-03-01 Nick Kledzik <kledzik@apple.com>
620 <rdar://problem/4971033> Remove support for Essential Symbols: Warn about use of -Sp option; remove man page entry
621 * src/Options.cpp: make -Sp obsolete
622 * doc/man/man1/ld.1: make -Sp obsolete
625 2007-03-01 Nick Kledzik <kledzik@apple.com>
627 <rdar://problem/5040314> Support -pie
628 * src/Options.h: Add positionIndependentExecutable()
629 * src/Options.cpp: Support -pie option to set positionIndependentExecutable()
630 * src/MachOWriterExecutable: if -pie is used, add extra local relocations and error if any
631 absolute addressing is used
634 2007-03-01 Nick Kledzik <kledzik@apple.com>
636 <rdar://problem/4739044> ld64 should link mach_kernel during xnu builds to support dtrace
637 * src/ld.cpp: Ensure segments are laid out in discovery order. Add support for kAbsoluteSymbol.
638 Warn when merging symbols of different visiblity. Warn when a tentative definition
639 is replaced by one a real definition with a smaller size. Lay out __common section
640 so that ones built with -fno-commons come before regular commons.
641 * src/ObjectFile.h: remove SegmentOffset ivar and getter/setters
642 * src/machochecker.cpp: allow images with no r/w segments
643 * src/MachOReaderRelocatable: Add AbsoluteAtom. Sort tentative definitions by name instead of by size
644 Add support for custom commons alignment.
645 * src/Options.cpp: Fix spurious -sectalign warnings. Don't use ld_classic when linking mach_kernel
646 * src/MachOWriterExecutable.hpp: Support kAbsoluteSymbol atoms. In -r mode, set custom alignment
647 for commons if alignment is not its size. Support global __dtrace_probe labels.
648 * src/ObjectDump.cpp: add support for kAbsoluteSymbol atoms.
649 * unit-tests/test-cases/commons-alignment: Added test case for custom commons alignment
650 * unit-tests/test-cases/absolute-symbol: Added test case for basic absolute symbols
651 * unit-tests/test-cases/segment-order: Added test case that segments lay out in discovery order
652 * unit-tests/test-cases/commons-order: Added test case that commons lay out correctly
653 * unit-tests/test-cases/end-label: Added test case that a label used to mark the end of a section does not
654 get associcated with the next section.
657 2007-02-23 Nick Kledzik <kledzik@apple.com>
659 <rdar://problem/3965017> gcc-5005: DejaGnu failures due to -frepo
660 * src/ld.cpp: Add quotes to referenced from name to make collect2 and -frepo happy
663 2007-02-22 Nick Kledzik <kledzik@apple.com>
665 * src/MachOWriterExecutable.hpp: rework how padding after load commands is calculated
668 2007-02-21 Nick Kledzik <kledzik@apple.com>
670 * src/MachOWriterExecutable.hpp: extend special case of __mh_execute_header to static executables too
673 2007-02-21 Nick Kledzik <kledzik@apple.com>
675 <rdar://problem/3882294> gcc link map option ( "-M" ) should be redirectable to file
676 * doc/man/man1/ld.1: added -map option description
677 * src/Options.h: added generatedMapPath()
678 * src/Options.cpp: set up generatedMapPath() if -map option is used
679 * src/MachOWriterExecutable.hpp: add writeMap() method to generate map file
682 2007-02-19 Nick Kledzik <kledzik@apple.com>
684 <rdar://problem/4557734> Implement GOT Load elimination optimization
685 * src/ld.cpp: track size of all atoms and if > 2GB sort large zero-fill atoms to end
686 * src/MachOWriterExecutable.hpp: If image size < 2GB, only generate GOT entries if value must be
687 updatable by dyld. If > 2GB, only eliminate GOT entries to non-zero-fill atoms. Any use
688 of an eliminated GOT entry has its code changed from MOVQ _foo@GOT(%rip) to LEAQ _foo(%rip).
689 * unit-tests/test-cases/large-data: added
690 * unit-tests/test-cases/got-elimination: added
693 ----- Tagged ld64-71.2
695 2007-02-13 Nick Kledzik <kledzik@apple.com>
697 <rdar://problem/4995303> new ld ignores -segprot option
698 * src/Options.h: expose customSegmentProtections()
699 * src/Options.cpp: parse -segprot option and populate customSegmentProtections()
700 * src/MachOWriterExecutable.hpp: use customSegmentProtections()
703 2007-02-13 Nick Kledzik <kledzik@apple.com>
705 <rdar://problem/4988068> i386 -stack_addr doesn't work
706 * src/MachOWriterExecutable.hpp: use correct offset into thread state record
709 ----- Tagged ld64-71.1
711 2007-02-07 Nick Kledzik <kledzik@apple.com>
713 * src/ld.cpp: sort __OBJC2 segment to be next to __OBJC segment
716 2007-02-07 Nick Kledzik <kledzik@apple.com>
718 * src/Options.cpp: change missing -seg_addr_table from an error to a warning
721 2007-02-06 Nick Kledzik <kledzik@apple.com>
723 <rdar://problem/4977311> Leopard 9A357: -dylib_file broken?
724 * src/MachOWriterExecutable.hpp: remove use of fInstallPathOverride
725 * src/Options.cpp: wire up -dylib_file option
726 * src/Options.h: remove fInstallPathOverride. add fDylibOverrides
727 * src/ld.cpp: check dylibOverrides() for indirect libraries
728 * unit-tests/test-cases/dylib_file: add test case
731 2007-02-05 Nick Kledzik <kledzik@apple.com>
733 * src/MachOReaderDylib.hpp: don't warn about zero size __image_info sections
736 2007-02-04 Rick Balocca <rbalocca@apple.com>
737 Enable the failing cases for missing command line arguments
739 2007-02-04 Rick Balocca <rbalocca@apple.com>
740 Make sure that all .o's are checked by ObjectDump
741 and all macho are checked by machochecker
743 2007-02-04 Rick Balocca <rbalocca@apple.com>
744 Fix an endian problem with machochecker
745 Fix blank-stubs Makefile
749 2007-02-02 Rick Balocca <rbalocca@apple.com>
750 blank-stubs test case: handle the case of a native ppc compile--this
751 sets the subtype, which must be passed to lipo
753 2007-02-01 Rick Balocca <rbalocca@apple.com>
754 make cpu-sub-types test more robust
756 2007-02-01 Rick Balocca <rbalocca@apple.com>
757 auto-arch tests were resulting in a false FAILs
759 2007-02-01 Rick Balocca <rbalocca@apple.com>
760 test cpu-sub-types was resulting in a false FAIL
762 2007-02-01 Nick Kledzik <kledzik@apple.com>
764 <rdar://problem/4969335> STD:VSC: c99 -o writes to file that does not have write permission
765 * src/MachOWriterExecutable.hpp: check file is writable before using it
767 2007-02-01 Nick Kledzik <kledzik@apple.com>
769 <rdar://problem/4965743> debug map (N_OSO) timestamps for object files in ranlib archive are incorrect
770 * src/MachOReaderArchive.hpp: parse modTime for .o files out of archive header
772 2007-01-31 Nick Kledzik <kledzik@apple.com>
774 <rdar://problem/4967535> 9A354: ld -all_load does *NOT* produce the same dSYM as *.o or -u
775 * src/ld.cpp: when using -all_load don't assume that all atoms have same reader
776 * unit-tests/test-cases/dwarf-archive-all_load: added
778 ----- Tagged ld64-70.1
780 2007-01-31 Nick Kledzik <kledzik@apple.com>
782 * src/MachOWriterExecutable.hpp: in addObjectRelocs_powerpc() mask scattered r_address to 16-bits
787 2007-01-30 Nick Kledzik <kledzik@apple.com>
789 <rdar://problem/4810668> linker should verify GC consistency of modules being linked into library
790 <rdar://problem/4474195> Support cpu-sub-types for ppc
791 * src/ObjectFile.h: Add getObjCConstraint() and getCpuConstraint()
792 * src/MachOReaderRelocatable.hpp: don't make atom for __image_info section, instead parse constaints
793 * src/MachOReaderDylib.hpp: look at __image_info content to get constaints
794 * src/ld.cpp: add updateContraints() and checkObjc()
795 * src/MachOWriterExecutable.hpp: add ObjCInfoAtom to sythesize __image_info content
798 2007-01-28 Nick Kledzik <kledzik@apple.com>
800 src/*: remove ObjectFile::requiresFollowOnAtom() method
803 2007-01-28 Nick Kledzik <kledzik@apple.com>
805 src/ld.cpp: enable LLVM_SUPPORT by default
806 src/LLVMReader.hpp: don't use absolute paths for llvm headers and libraries
809 2007-01-26 Rick Balocca <rbalocca@apple.com>
810 * src/ObjectDump.cpp: The usage() message was incorrect.
813 2007-01-25 Rick Balocca <rbalocca@apple.com>
814 * unit-tests/test-cases/zero-fill3: It was reporting FAIL on ld64 error return.
815 It should have been checking for non-error return.
818 2007-01-24 Nick Kledzik <kledzik@apple.com>
820 <rdar://problem/4952297> x86 fast stubs should not cross 64-byte boundries
821 * src/MachOWriterExecutable.hpp: for x86, 64-byte align __jump_table section
822 and make 64-btye crossing stubs be empty entries with indirect symbol table
823 entry of INDIRECT_SYMBOL_ABS
826 2007-01-19 Nick Kledzik <kledzik@apple.com>
828 * src/Options.h: add readOnlyx86Stubs()
829 * src/Options.cpp: support -read_only_stubs
830 * src/MachOWriterExecutable.hpp: make __IMPORT segment not writable if -read_only_stubs is used
833 2007-01-16 Eric Christopher <echristo@apple.com>
835 <rdar://problem/4856341> ld64 --help isn't recognized
836 * src/Options.cpp (Options::parse): Support --help and -help.
839 2007-01-15 Nick Kledzik <kledzik@apple.com>
841 * src/MachOFileAbstraction.hpp: add range checking on macho_scattered_relocation_info::set_r_address()
844 2007-01-14 Nick Kledzik <kledzik@apple.com>
846 <rdar://problem/4514409> Support wildcards in contents of -exported_symbols_list
847 * src/Options.h: add SetWithWildcards class
848 * src/Options.cpp: add -exported_symbol and -unexported_symbol and use SetWithWildcards
849 * doc/man/man1/ld.1: add -exported_symbol and wildcard explanation
850 * unit-tests/test-cases/exported-symbols-wildcards: added test case
853 2007-01-10 Nick Kledzik <kledzik@apple.com>
855 <rdar://problem/4868270> [U]SDT probes should use C calling convention
856 * src/Options.cpp: Add -read_only_dof
857 * src/ld.cpp: create __dof section(s) based on probe and isenabled sites
858 * src/MachOReaderRelocatable.hpp: parse new sdt 2.0 probes encoded in .o files
859 * src/MachOWriterExecutable.hpp: handle regenerating dtrace probes into .o files
860 * unit-tests/test-cases/dtrace-static-probes: added test case
863 ----- Tagged ld64-69.8
865 2007-01-30 Nick Kledzik <kledzik@apple.com>
867 <rdar://problem/4964508> Support LD_FORCE_NO_SEG_ADDR_TABLE
868 * src/Options.cpp: Support LD_FORCE_NO_SEG_ADDR_TABLE
871 ----- Tagged ld64-69.7
873 2007-01-25 Nick Kledzik <kledzik@apple.com>
875 <rdar://problem/4949507> Leopard9A351: CFM Apps Are Broken because CFM glue is missing
876 * src/MachOReaderRelocatable.hpp: check S_ATTR_NO_DEAD_STRIP in dontDeadStrip()
879 ----- Tagged ld64-69.6
881 2007-01-24 Nick Kledzik <kledzik@apple.com>
883 <rdar://problem/4947347> LD_TRACE_ARCHIVES should only print out when a .o is actually used from an archive
884 * src/ld.cpp: create and use logArchive()
887 ----- Tagged ld64-69.5
889 2007-01-22 Nick Kledzik <kledzik@apple.com>
891 <rdar://problem/4946075> 9A350: can't link ppc programs with ld_classic
892 * src/Options.cpp: Remove support for LD_NO_CLASSIC_LINKER. Add support for -classic_linker
895 ----- Tagged ld64-69.4
897 2007-01-17 Nick Kledzik <kledzik@apple.com>
899 <rdar://problem/4925645> QTComponents does not link with ld64
900 * src/MachOReaderRelocatable.hpp: handle N_RSYM and N_PSYM stabs
903 ----- Tagged ld64-69.3
905 2007-01-03 Nick Kledzik <kledzik@apple.com>
907 * src/Options.cpp: If the same dylib is specified twice and the second is specified weak, make it weak
910 ----- Tagged ld64-69.2
912 2006-12-18 Nick Kledzik <kledzik@apple.com>
914 <rdar://problem/4889729> -dead_strip without -exported_symbols_list should not strip global functions from archives
915 * src/ld.cpp: when adding a .o file from an archive, add all its global symbols to live roots
916 * unit-tests/test-cases/dead_strip-archive: added
919 2006-12-18 Nick Kledzik <kledzik@apple.com>
921 <rdar://problem/4889409> flat_namespace main executables do not need to indirect interior references
922 * src/MachOWriterExecutable.hpp: don't indirect references to global symbols in main executables
923 * unit-tests/test-cases/flat-main: updated to test for indirection
924 * unit-tests/test-cases/flat-dylib: added
927 ----- Tagged ld64-69.1
929 2006-12-15 Nick Kledzik <kledzik@apple.com>
931 <rdar://problem/4886721> -flat_namespace does not work with -mdynamic-no-pic
932 * src/MachOWriterExecutable.hpp: rework checking for use of ppc absolute addressing to allow them as long as
933 the target is within the same linkage unit.
936 2006-12-15 Nick Kledzik <kledzik@apple.com>
938 <rdar://problem/4886652> -ObjC should only load .o with .objc_ symbols
939 * src/Options.cpp: remove warning from -ObjC and have it instead set fLoadAllObjcObjectsFromArchives
940 * src/MachOReaderArchive.hpp: when -ObjC is used, preload all .o files from archives that contain .objc_ symbols
945 2006-12-13 Nick Kledzik <kledzik@apple.com>
947 <rdar://problem/4879913> prebound interior pointers must be non-zero
948 * src/MachOWriterExecutable.hpp: in fixUpReference_powerpc() set lazy pointers bound to with the dylib to
949 their target value. Properly set REFERENCE_FLAG_UNDEFINED_* flags in reference table and n_desc
952 2006-12-09 Nick Kledzik <kledzik@apple.com>
954 <rdar://problem/4868738> ld64 fails to detect error that ld_classic does
955 * src/MachOWriterExecutable.hpp: check for absolute reloc to an external symbol
956 * src/MachOReaderRelocatable.hpp: ignore -mlong-branch stubs in .o files
959 2006-12-09 Nick Kledzik <kledzik@apple.com>
961 <rdar://problem/4874209> symbols with REFERENCED_DYNAMICALLY should never be stripped
962 * src/MachOWriterExecutable.hpp: update Writer<A>::shouldExport() to check for kSymbolTableInAndNeverStrip
963 * unit-tests/test-cases/main-stripped: add test that dynamically referenced symbol cannot be stripped
966 2006-12-08 Nick Kledzik <kledzik@apple.com>
968 * unit-tests/test-cases/allowable-client: add variant test cases (e.g. CoreServices_profile)
969 * src/ld.cpp: allow frameworks with variant install names (e.g. CoreServices_profile) to be private clients
972 2006-12-08 Nick Kledzik <kledzik@apple.com>
974 * doc/man/man1/ld.1: rewrite man page
975 * src/Options.h: add warnObsolete()
976 * src/Options.cpp: use warnObsolete() on many options. Make nonWeak the weak-mis-match default.
977 Make -ObjC mean -all_load.
979 ----- Tagged ld64-68.3
981 2006-12-05 Nick Kledzik <kledzik@apple.com>
983 * src/ld.cpp: allow umbrella frameworks to have variant install names (e.g. CoreServices_profile) and still link
986 ----- Tagged ld64-68.2
988 2006-12-05 Nick Kledzik <kledzik@apple.com>
990 * src/MachOWriterExecutable.cpp: Use N_PBUD in the symbol table for undefined symbols in prebound dylibs
993 ----- Tagged ld64-68.1
995 2006-12-01 Nick Kledzik <kledzik@apple.com>
997 * src/Options.cpp: always generate module tables for 32-bit architectures so that ld_classic
998 can link against them
1001 ----- Tagged ld64-68
1003 2006-12-01 Nick Kledzik <kledzik@apple.com>
1005 <rdar://problem/4858299> seg_addr_table needs matching fuzziness
1006 * src/Options.cpp: special case a how a dozen dylib are looked up in the seg_addr_table
1009 2006-12-01 Nick Kledzik <kledzik@apple.com>
1011 * src/Options.cpp: have all -static links for 32-bit archs roll over to ld_classic unless
1012 LD_NO_CLASSIC_LINKER_STATIC is set.
1013 * unit-tests/bin/make-recursive.pl: set LD_NO_CLASSIC_LINKER_STATIC for unit tests
1016 2006-11-29 Nick Kledzik <kledzik@apple.com>
1018 <rdar://problem/4855542> ld64-67: QTComponents fails to build
1019 * src/MachOReaderRelocatable.hpp: don't error out when a local non-lazy pointer does not point to a symbol
1020 * unit-tests/test-cases/strip_local: added test case
1023 2006-11-28 Nick Kledzik <kledzik@apple.com>
1025 <rdar://problem/4433496> Need a way to mark libraries usable by dynamic linker but unusable by static linker
1026 * src/Options.cpp: allow -client_name to be used with main executables
1027 * src/ld.cpp: generalize -allowable_client. Any dylib can now restrict who can link against it. As a convention
1028 linking with -allowable_client '!' will mean no one can statically link with the dylib. It can still be loaded
1029 dynamically, or by any existing clients, but no new clients can link with it.
1030 * unit-tests/test-cases/allowable-client/Makefile: enable previously commented out test cases. Add test cases
1031 of a dylib that allows no clients and just one client
1033 2006-11-27 Nick Kledzik <kledzik@apple.com>
1035 <rdar://problem/4795615> -final_output should be used if -install_name not used
1036 * src/Options.cpp: fall back to using -final_output for install name
1039 ----- Tagged ld64-67
1041 2006-11-17 Nick Kledzik <kledzik@apple.com>
1043 * src/MachOWriterExecutable.hpp: support __IMPORT segment being slide independently of __DATA segment in shared cache
1046 2006-11-16 Nick Kledzik <kledzik@apple.com>
1048 <rdar://problem/4838262> 9a303: ld -filelist Bus Error
1049 * src/Options.cpp: add check that -filelist is followed by an argument
1052 2006-11-16 Nick Kledzik <kledzik@apple.com>
1054 * src/MachOWriterExecutable.hpp: when building split-seg dylibs, LINKEDIT goes in read-only side
1057 2006-11-15 Nick Kledzik <kledzik@apple.com>
1059 * src/MachOWriterExecutable.hpp: set proper attributes for __eh_frame in ld -r mode
1060 * unit-tests/test-cases/eh_frame: added test case
1063 2006-11-10 Nick Kledzik <kledzik@apple.com>
1065 * src/MachOReaderRelocatable.hpp: redirect references to static weak stubs to the real target
1068 2006-11-09 Nick Kledzik <kledzik@apple.com>
1070 * src/MachOWriterExecutable.hpp: r_address is offset from first LC_SEGMENT vmaddr - not from segment with lowest address
1073 ----- Tagged ld64-66.1
1075 2006-11-09 Nick Kledzik <kledzik@apple.com>
1077 * src/MachOWriterExecutable.hpp: initialize fModuleInfoAtom to zero
1080 2006-11-08 Nick Kledzik <kledzik@apple.com>
1082 <rdar://problem/4821985> FSF GCC's libjava doesn't link with Ochre ld64
1083 * src/MachOReaderRelocatable.hpp: ignore debug_line section if debug_info section is missing or empty
1085 ----- Tagged ld64-66
1087 2006-11-07 Nick Kledzik <kledzik@apple.com>
1089 <rdar://problem/4824368> SWB: d64-65 does not built usage split-seg dylibs
1090 * src/MachOWriterExecutable.hpp: when prebinding split-seg correctly set r_address fields and on
1091 disk values for external relocations
1092 * unit-tests/test-cases/prebound-split-seg: added test case
1095 2006-11-03 Nick Kledzik <kledzik@apple.com>
1097 * src/MachOReaderDylib.hpp: don't report dependent libraries if MH_NO_REEXPORTED_DYLIBS bit is set
1098 * src/MachOWriterExecutable.hpp: set MH_NO_REEXPORTED_DYLIBS bit if dylib does not logically re-export any other dylibs
1099 * unit-tests/test-cases/re-export-flag: added test case
1100 * src/machochecker.cpp: validate use of MH_NO_REEXPORTED_DYLIBS
1103 2006-11-02 Nick Kledzik <kledzik@apple.com>
1105 <rdar://problem/4814565> Mysterious messages from ld64 with MACOSX_DEPLOYMENT_TARGET = 10.5
1106 * src/MachOWriterExecutable.hpp: kPointerWeakImport is a valid reference type to cross segments
1109 2006-11-02 Nick Kledzik <kledzik@apple.com>
1111 * src/Options.cpp,h: Add support for -rpath
1112 * src/MachOFileAbstraction.hpp: add macho_rpath_command
1113 * src/MachOWriterExecutable.hpp: add RPathLoadCommandsAtom to create LC_RPATH for each -rpath
1116 ----- Tagged ld64-65
1118 2006-10-30 Nick Kledzik <kledzik@apple.com>
1120 <rdar://problem/4729162> x86_64 default stack_addr is wrong
1121 * src/Options.cpp: change default 64-bit stack location when using -stack_size
1124 2006-10-30 Nick Kledzik <kledzik@apple.com>
1126 <rdar://problem/4474316> dylibs need modules for 10.3 and for ld_classic in Salt
1127 * src/MachOWriterExecutable.hpp: add ModuleInfoLinkEditAtom to create module table stuff
1128 * src/Options.cpp,h: Add needsModuleTable()
1129 * src/MachOFileAbstraction.hpp: Add macho_dylib_module, macho_dylib_reference, and macho_dylib_table_of_contents
1132 2006-10-27 Nick Kledzik <kledzik@apple.com>
1134 * unit-tests/test-cases/no-uuid/Makefile: add -gstabs+ to be compatible with latest compiler
1135 * unit-tests/test-cases/stabs-coalesce/Makefile: add -gstabs+ to be compatible with latest compiler
1138 2006-10-26 Nick Kledzik <kledzik@apple.com>
1140 <rdar://problem/4585230> i386 -mdynamic-no-pic switch statement jump table is out of line
1141 * src/MachOWriterExecutable.hpp: for i386 don't check for direct references to weak symbols
1144 2006-10-26 Devang Patel <dpatel@apple.com>
1146 * src/LLVMReader.hpp: Supply final output file path to optimizer.
1148 2006-10-26 Devang Patel <dpatel@apple.com>
1150 * src/ObjectFile.h: Make setSection* methods virtual.
1151 * src/LLVMReader.hpp: Override setSection* methods.
1153 2006-10-26 Devang Patel <dpatel@apple.com>
1155 * unit-tests/test-case/llvm-integration/a13.h: New.
1156 * unit-tests/test-case/llvm-integration/a13.cc: New.
1157 * unit-tests/test-case/llvm-integration/main13.cc: New.
1159 2006-10-26 Devang Patel <dpatel@apple.com>
1161 * src/options.h, src/options.cpp: Add -save-temps command line option.
1162 * src/LLVMReader.hpp: Use saveTemps option.
1165 2006-10-26 Devang Patel <dpatel@apple.com>
1167 * src/LLVMReader.hpp: Remove invalid module from memory.
1169 2006-10-26 Devang Patel <dpatel@apple.com>
1171 * src/LLVMReader.hpp: Collect symbol alignment info from LLVM optimizer.
1173 2006-10-21 Eric Christopher <echristo@apple.com>
1175 * src/ld.cpp (Linker::Linker): Check for LD_NO_CLASSIC_LINKER before
1176 invoking ld_classic.
1177 * unit-tests/test-cases/relocs-literals/Makefile: Run for -mdynamic-no-pic
1179 * unit-tests/test-cases/static-executable/Makefile: Skip for 64-bit. Add
1180 -dead_strip to command line.
1182 ----- Tagged ld64-64.2
1184 2006-10-19 Nick Kledzik <kledzik@apple.com>
1186 * ld64.xcodeproj/project.pbxproj: stop copying LLVMReader.hpp into man1 directory
1188 ----- Tagged ld64-64.1
1190 2006-10-19 Nick Kledzik <kledzik@apple.com>
1192 <rdar://problem/4791643> ld64-63.1 erroneously coalesces an empty string with a non-empty string
1193 * src/MachOReaderRelocatable.hpp: rework cstring parsing to not assume all strings are start
1194 at section alignment boundaries, and when coalescing empty strings always use one with greatest
1195 alignment requirement
1196 * src/MachOWriterExecutable.hpp: in -r mode, don't pad end of cstring section
1197 * src/ObjectFile.h: correctly name leadingZeros() as trailingZeros()
1198 * src/ld.cpp: leadingZeros() --> trailingZeros()
1201 2006-10-18 Eric Christopher <echristo@apple.com>
1203 * unit-tests/test-cases/read-only-relocs/Makefile: Skip for x86_64.
1204 * unit-tests/test-cases/llvm-integration/Makefile: Skip if llvm isn't
1207 2006-10-18 Nick Kledzik <kledzik@apple.com>
1209 <rdar://problem/4783853> ld64 change required to go with assembler cstring change
1210 <rdar://problem/4732996> ld64 should error when a local relocation references an address outside its section
1211 * src/MachOReaderRelocatable.hpp: for x86_64 in order to work with local or external relocations to cstrings
1212 change parser to allow atoms with a pending name that is resolved after references are instantiated.
1213 Make direct references to kRegularDefinition atoms.
1214 * src/MachOWriterExecutable.hpp: in -r mode for x86_64 generate L* labels for cstrings and use external relocations
1215 * unit-tests/test-cases/relocs-literals/test.c: add two cases of cstring literal plus addend
1218 2006-10-06 Nick Kledzik <kledzik@apple.com>
1220 <rdar://problem/4786250> check MACOSX_DEPLOYMENT_TARGET if -macosx_version_min is not used
1221 * src/Options.cpp: if -macosx_version_min is not used, check MACOSX_DEPLOYMENT_TARGET, if
1222 that is unused, default to 10.5
1224 ----- Tagged ld64-64
1226 2006-10-06 Nick Kledzik <kledzik@apple.com>
1228 <rdar://problem/4756806> crash in ppc64 program - bl to saveFP, but saveFP is too far away?
1229 * src/MachOWriterExecutable.hpp: in addPPCBranchIslands(), properly account for growth of __text
1232 2006-10-06 Nick Kledzik <kledzik@apple.com>
1234 <rdar://problem/4769120> Linker-defined alias converts reference into definition and generates error.
1235 * src/MachOReaderRelocatable.hpp: only alias symbols actually in the symbol table
1238 2006-10-06 Nick Kledzik <kledzik@apple.com>
1240 * unit-tests/test-cases/dwarf-debug-notes/Makefile: crt1.o no longer has stabs, so don't need to strip it
1241 * unit-tests/test-cases/dwarf-debug-notes-r/Makefile: crt1.o no longer has stabs, so don't need to strip it
1244 2006-10-06 Nick Kledzik <kledzik@apple.com>
1246 * src/MachOReaderRelocatable.hpp: rework dwarf line parsing to fix warnings that starting
1247 showing up with gcc-5421
1250 2006-10-05 Eric Christopher <echristo@apple.com>
1252 <rdar://problem/4760935> ld64 needs to support libtool options
1253 * src/Options.cpp (Options::parse): Add -noall_load, -install_name,
1254 -current_version and -compatibility_version.
1256 2006-10-03 Eric Christopher <echristo@apple.com>
1258 * src/Options.cpp (Options::gotoClassicLinker): Use execvp
1261 2006-10-03 Eric Christopher <echristo@apple.com>
1263 * unit-tests/test-cases/tentative-to-real/Makefile: Clean up after tests.
1265 2006-10-03 Eric Christopher <echristo@apple.com>
1267 * unit-tests/include/common.makefile (VALID_ARCHS): Add x86_64.
1268 (OTOOL): Remove munging based on ARCH.
1270 2006-09-29 Nick Kledzik <kledzik@apple.com>
1272 <rdar://problem/4743925> problem merging .o files built with and without -fno-common
1273 src/Options.*: make MakeTentativeDefinitionsReal a reader option
1274 src/ObjectFile.h: make MakeTentativeDefinitionsReal a reader option
1275 src/MachOWriterExecutable.hpp: make MakeTentativeDefinitionsReal a reader option
1276 src/MachOReaderRelocatable.hpp: only assign a section name of __common to
1277 tentative defintions when making a final linked image
1280 2006-09-28 Nick Kledzik <kledzik@apple.com>
1282 src/Options.h/.cpp: add support for -segaddr option
1283 src/MachOWriterExecutable.hpp: In Writer::assignFileOffsets(), use -segaddr info
1286 2006-09-28 Nick Kledzik <kledzik@apple.com>
1288 <rdar://problem/4587349> Emit new CPU subtypes for ppc64 and x86-64 when targeting 10.5 or later
1289 src/MachOWriterExecutable.hpp: set high bit of cpusubtype of 64-bit main executables when targeting 10.5 or later
1292 2006-09-28 Devang Patel <dpatel@apple.com>
1294 Add LLVM LTO support
1295 src/LLVMReader.hpp: New file.
1296 src/ld.cpp: Add optimization phase. Use LLVM LTO.
1297 unit-tests/test-cases/llvm-integration: New tests.
1299 2006-09-27 Nick Kledzik <kledzik@apple.com>
1301 ld64.xcodeproj/project.pbxproj: remove accidental install of source file into man1
1304 2006-09-25 Nick Kledzik <kledzik@apple.com>
1306 src/Architectures.hpp: add kPointerDiff16 for ppc and ppc64
1307 src/MachOReaderRelocatable.hpp: support kPointerDiff16
1308 src/MachOWriterExecutable.hpp: support kPointerDiff16
1310 ----- Tagged ld64-63.1
1312 2006-09-22 Nick Kledzik <kledzik@apple.com>
1314 src/MachOWriterExecutable.hpp: include stubs in LC_SEGMENT_SPLIT_INFO
1317 2006-09-21 Nick Kledzik <kledzik@apple.com>
1319 src/Options.cpp: disable split-seg dylibs for 64-bit architectures
1322 2006-09-19 Nick Kledzik <kledzik@apple.com>
1324 src/MachOReaderRelocatable.hpp: rework __cstring parsing to better handle mixed alignment cstrings
1325 src/MachOWriterExecutable.hpp: in -r mode, make all __cstrings aligned to section alignment
1328 2006-09-19 Nick Kledzik <kledzik@apple.com>
1330 src/MachOWriterExecutable.hpp: rework encoding of LC_SEGMENT_SPLIT_INFO
1333 2006-09-19 Nick Kledzik <kledzik@apple.com>
1335 src/Options.cpp: check for -search_paths_first in first pass
1338 ----- Tagged ld64-63
1340 2006-09-15 Nick Kledzik <kledzik@apple.com>
1342 src/Options.cpp: since the ld64 will repeatedly search an archive, and some project list archives
1343 multiple times on command line to work with traditional linkers, automatically ignore duplicate libraries
1344 unit-tests/test-cases/archive-duplicate: added test case
1347 2006-09-15 Nick Kledzik <kledzik@apple.com>
1349 src/Options.cpp: support -r -static
1350 src/MachOWriterExecutable.hpp: support -r -static an don't generate LC_DYSYMTAB
1353 2006-09-14 Nick Kledzik <kledzik@apple.com>
1355 src/MachOWriterExecutable.hpp: in -r mode references to weak symbols should not create external relocations
1356 as that can cause nmedit to errror later.
1359 2006-09-13 Nick Kledzik <kledzik@apple.com>
1361 <rdar://problem/4718189> ld64: Handle .objc_class_name exports specially
1362 src/Options.cpp: add hack so that .objc_class_name_XXX in -exported_symbols_list imples _OBJC_CLASS_$_XXX
1363 src/ld.cpp: add hack to supporess errors about .objc_class_name_XXX or _OBJC_CLASS_$_XXX being undefined
1366 2006-09-12 Nick Kledzik <kledzik@apple.com>
1368 <rdar://problem/4474172> Support -prebind when targeting ppc and OS < 10.4
1369 src/Options.h: add splitSeg() and baseWritableAddress()
1370 src/Options.cpp: Add support for -seg_addr_table and LD_SEG_ADDR_TABLE, and -prebind and LD_PREBIND.
1371 src/src/MachOWriterExecutable.hpp: support split-seg and canonical prebound files to be generated
1374 2006-09-11 Nick Kledzik <kledzik@apple.com>
1376 <rdar://problem/4464904> Linking a dylib or binary from identical binaries should produce the same output
1377 src/MachOWriterExecutable.hpp: set the timestamps to be constant
1380 2006-09-11 Nick Kledzik <kledzik@apple.com>
1382 <rdar://problem/4070025> Linker support for ordering all sections and symbols
1383 src/Options.cpp: Add -order_file_statistics. Allow architecture prefixes in order files
1384 src/ld.cpp: Use fOptions.printOrderFileStatistics()
1387 2006-09-11 Nick Kledzik <kledzik@apple.com>
1389 <rdar://problem/3894079> Support -sectorder
1390 unit-tests/test-cases/order_file: added test case
1391 src/ld.cpp: Implement order file support in Linker::sortAtoms()
1392 src/Options.h: add Options.orderedSymbols()
1393 src/Options.cpp: add parseOrderFile(), implement -order_file
1396 2006-09-07 Nick Kledzik <kledzik@apple.com>
1398 <rdar://problem/4637023> need -i for 64-bit (or equivalent)
1399 <rdar://problem/4014529> Support -i for aliasing exported symbols
1400 unit-tests/test-cases/alias-objects: added
1401 unit-tests/test-cases/alias-command-line: added
1402 src/ObjectFile.h: Added Atom::getOrdinal() as new way to sort atoms. Added ReaderOptions.fAliases
1403 src/MachOReaderRelocatable.hpp: Added SymbolAliasAtom to handle multiple symbols to same address
1404 src/MachOReaderArchive.hpp: implement Atom::getOrdinal() to space out atom ordinals across member objects
1405 src/Options.cpp: support -i, -alias, -alias_list. Move search of /Network/Library/Frameworks to after /System/Library/Frameworks
1406 src/MachOWriterExecutable.hpp: pad out seg_info data. Implement getOrdinal().
1407 src/ObjectDump.cpp: call constructors directly instead of using make() wrapper
1410 2006-09-01 Nick Kledzik <kledzik@apple.com>
1412 <rdar://problem/4458878> Need the ability to tag libraries/plug-ins with security attributes
1413 src/MachOReaderDylib.hpp: add warning if using -root_safe or -setuid_safe and link against dylib that is not
1414 src/ObjectFile.h: add ReaderOption fRootSafe and fSetuidSafe
1415 src/Options.cpp: handle -root_safe or -setuid_safe command line options
1416 src/MachOWriterExecutable.hpp: set MH_ROOT_SAFE and MH_SETUID_SAFE flags
1419 2006-08-31 Nick Kledzik <kledzik@apple.com>
1421 src/ld.cpp: Add Linker::processDTrace() for processing dtrace static probes
1422 src/OpaqueSection.hpp: renamed, add symbol name, add ability to add references
1423 ld64.xcodeproj/project.pbxproj: remove SectCreate.cpp, add OpaqueSection.hpp
1426 2006-08-28 Nick Kledzik <kledzik@apple.com>
1428 <rdar://problem/4571042> Add convention for removing symbols at link time
1429 <rdar://problem/3962731> Assembler -L option causes ld64 to split stubs
1430 unit-tests/test-cases/special-labels: added test case
1431 src/MachOReaderRelocatable.hpp: ignore L* labels, make l* labels as kSymbolTableNotIn
1434 2006-08-28 Nick Kledzik <kledzik@apple.com>
1436 src/lObjectFile.h: refactor isTargetUnbound() into getTargetBinding()
1437 src/ld.cpp: create __dof section in final linked images from dtrace static probes
1438 src/Architectures.hpp: add kDtraceProbe
1439 src/Options.h/cpp: Add support for -dtrace
1440 src/machochecker.cpp: support LC_SEGMENT_SPLIT_INFO
1441 src/MachOWriterExecutable.hpp: support kDtraceProbe
1442 src/MachOReaderRelocatable.hpp: suppport kDtraceProbe
1445 2006-08-25 Nick Kledzik <kledzik@apple.com>
1447 <rdar://problem/4701529> generate LC_SEGMENT_SPLIT_INFO for 10.5 or later dylibs
1448 src/Options.h&.cpp: implement sharedRegionEligible() to control when LC_SEGMENT_SPLIT_INFO is added
1449 src/MachOFileAbstraction.hpp: add macho_linkedit_data_command
1450 src/MachOWriterExecutable.hpp: generate LC_SEGMENT_SPLIT_INFO load command and linkedit content
1452 ----- Tagged ld64-62
1454 2006-08-15 Nick Kledzik <kledzik@apple.com>
1456 <rdar://problem/4681062> wrong error message when symbol is found in unused indirect library
1457 src/ld.cpp: remove indirect libraries if they are not re-exported
1458 unit-tests/test-cases/indirect-dylib: added test case
1461 2006-08-15 Nick Kledzik <kledzik@apple.com>
1463 <rdar://problem/3930461> alignment needs to be richer
1464 src/ObjectFile.h: define ObjectFile::Alignment class for tracking rich alignment info
1465 src/ld.cpp: modify SymbolTable::add() to work with new Alignment type
1466 src/MachOReaderRelocatable.hpp: use new Alignment type. Remove alignAtLeast() and handleAnonymousNonLazyPointers()
1467 src/MachOWriterExecutable.hpp: update for new Alignment type, use modulus when calculating layout address
1468 src/ObjectDump.cpp: print richer Alignment info
1469 unit-tests/test-cases/align-modulus: added test case
1472 2006-08-11 Nick Kledzik <kledzik@apple.com>
1474 remove OPEN_SOURCE conditionals around x86_64 support
1477 2006-07-31 Nick Kledzik <kledzik@apple.com>
1479 <rdar://problem/4654131> ld64 while linking cc1 [ when dead_strip is ON]
1480 src/ld.cpp: Add ivar fAtomsWithUnresolvedReferences to track atoms not initially resolvable
1481 unit-tests/test-cases/dead_strip-archive: added test case
1484 2006-07-31 Nick Kledzik <kledzik@apple.com>
1486 <rdar://problem/4656617> x86_64: instructions with immediate and rip-relative operands need to use new relocation types
1487 src/MachOWriterExecutable.hpp: generate new reloc types in -r mode
1488 src/MachOReaderRelocatable.hpp: parse new reloc types
1489 unit-tests/test-cases/relocs-asm/relocs-asm.s: add test cases for new reloc type
1492 2006-07-18 Nick Kledzik <kledzik@apple.com>
1494 src/MachOReaderRelocatable.hpp: suppress warning about dwarf info parsing for one benign no-op case
1495 the compiler emits when there are not functions in the __text section
1498 2006-07-17 Nick Kledzik <kledzik@apple.com>
1500 <rdar://problem/4634840> faster debug note generation
1501 src/ld.cpp: rework collectDebugInfo() to produce all debug notes in one pass, intead of a
1502 pass per .o file. Added timing info for collectDebugInfo() to -print_statistics
1503 unit-tests/test-cases/dwarf-debug-notes-r/Makefile: add expliced -arch to ld -r
1504 unit-tests/test-cases/dwarf-debug-notes-r/expected-stabs: alter for new debug notes order
1507 2006-07-17 Nick Kledzik <kledzik@apple.com>
1509 <rdar://problem/4623994> ld64 VSIZE is 1.18GB when building Finder ppc64
1510 src/ld.cpp: fixed typo in createReader() that prevented dylibs from being unmapped
1512 ----- Tagged ld64-61.1
1514 2006-07-11 Nick Kledzik <kledzik@apple.com>
1516 <rdar://problem/4622049> ld64-61: gcc DejaGnu tests failing due to -arch followed by unknown architecture name
1517 src/Options.cpp: map ppc750, ppc7400, ppc7450, and ppc970 to ppc. Improve error message
1519 2006-07-11 Nick Kledzik <kledzik@apple.com>
1521 <rdar://problem/4622769> If -arch is missing, rollover to ld_classic does not happen
1522 src/Options.h: make gotoClassicLinker() public
1523 src/ld.cpp: call gotoClassicLinker() if the inferred architecture is ppc or i386
1525 ----- Tagged ld64-61
1527 2006-06-29 Nick Kledzik <kledzik@apple.com>
1529 <rdar://problem/4606628> ld64 should be renamed to ld
1530 src/Options.cpp: exec() ld_classic if -arch ppc or -arch i386 is seen
1531 src/ld.cpp: alter version string
1532 ld64.xcodeproj/project.pbxproj: change install location to /usr/bin/ld, add symlink from /usr/bin/ld64
1533 doc/man/man1/ld.1: added
1535 ----- Tagged ld64-60
1537 2006-06-28 Nick Kledzik <kledzik@apple.com>
1539 <rdar://problem/4604539> Can't link large ppc64 program: ld64 says "bl out of range"
1540 MachOWriterExecutable.hpp: fix branch island generation to work for weak_import functions
1541 and properly chain together branch islands
1542 MachOReaderRelocatable.hpp: improve performance of huge .o file reading by sorted references
1545 2006-06-28 Nick Kledzik <kledzik@apple.com>
1547 <rdar://problem/4603454> MySQL-36 fails to build with ld64-59
1548 src/MachOReaderRelocatable.hpp: back out fix for 4585335
1549 src/MachOWriterExecutable.hpp: back out fix for 4585335
1551 2006-06-27 Nick Kledzik <kledzik@apple.com>
1553 src/MachOReaderRelocatable.hpp: handle N_GSYM without ending :G() since that is how
1554 dwarf debug notes are formed.
1556 2006-06-23 Nick Kledzik <kledzik@apple.com>
1558 <rdar://problem/4599239 objc class with no superclass causes bad undefined symbol
1559 src/MachOReaderRelocatable.hpp: handle NULL superclass in objc_class
1560 unit-tests/test-cases/relocs-objc/test.m: add case with no super class
1563 2006-06-23 Nick Kledzik <kledzik@apple.com>
1565 <rdar://problem/4313369> ld64 doesn't support variant linking -framework fw,_debug
1566 src/Options.cpp: enhance findFramework() to support suffixes
1568 ----- Tagged ld64-59
1570 2006-06-22 Nick Kledzik <kledzik@apple.com>
1572 <rdar://problem/4596726> ld64 lost DWARF debug notes
1573 src/MachOReaderRelocatable.hpp: add fHasUUID so kDebugInfoStabsUUID can be set later
1574 unit-tests/test-cases/dwarf-debug-notes-r: added test case
1576 2006-06-21 Nick Kledzik <kledzik@apple.com>
1578 <rdar://problem/4567995> python 64-bit address miscalculation
1579 src/MachOReaderRelocatable.hpp: change getTargetOffset() to sign extend the 32-bit value to 64-bits
1581 2006-06-21 Nick Kledzik <kledzik@apple.com>
1583 <rdar://problem/4535036> ld64 seems to offset things incorrectly when using -r
1584 src/MachOWriterExecutable.hpp: in -r mode, virtual sections should not increment address
1587 ----- Tagged ld64-58
1589 2006-06-16 Nick Kledzik <kledzik@apple.com>
1591 src/rebase.cpp: fix page alignment problem
1592 src/rebase.cpp: fix endianess problem with local non-lazy pointers
1594 2006-06-15 Nick Kledzik <kledzik@apple.com>
1596 src/rebase.cpp: fix to build in CurryWeed
1597 ld64.xcodeproj/project.pbxproj: fix to build properly in CurryWeed
1599 2006-06-15 Nick Kledzik <kledzik@apple.com>
1601 <rdar://problem/4495309> Support .objc_class_name_* symbols
1602 src/ObjectFile.h: Add kSymbolTableInAsAbsolute
1603 src/MachOReaderRelocatable.hpp: synthesize references to required objc classes
1604 src/MachOWriterExecutable.hpp: write objc_class_name as absolute symbol
1605 unit-tests/test-cases/objc-references: added
1607 2006-06-15 Nick Kledzik <kledzik@apple.com>
1609 <rdar://problem/4484369> SECTION_ATTRIBUTES unset in ppc64 mach-o header
1610 src/MachOWriterExecutable.hpp: add section attribute for sections with code
1612 2006-06-15 Nick Kledzik <kledzik@apple.com>
1614 <rdar://problem/4569407> ld64 bogus duplicate symbol name linking GNU libobjc
1615 src/MachOReaderRelocatable.hpp: only special case Apple objc runtime objc classes
1617 2006-06-15 Nick Kledzik <kledzik@apple.com>
1619 <rdar://problem/4582999> x86_64: ".align" directive not honored
1620 src/MachOReaderRelocatable.hpp: change code alignment to not depend on atom size
1622 2006-06-14 Nick Kledzik <kledzik@apple.com>
1624 <rdar://problem/4585335> jump table into middle of weak symbol causes error
1625 src/MachOReaderRelocatable.hpp: create direct references to the interior of weak symbols
1626 src/MachOWriterExecutable.hpp: do not error on absolute references to interior of weak symbols
1628 2006-06-13 Nick Kledzik <kledzik@apple.com>
1630 src/Options.cpp: allow -image_base as an alias for -seg1addr
1632 2006-06-13 Nick Kledzik <kledzik@apple.com>
1634 <rdar://problem/4585115> implement -d
1635 src/Options.h: add fMakeTentativeDefinitionsReal
1636 src/Options.cpp: set fMakeTentativeDefinitionsReal if -d option is found
1637 src/MachOWriterExecutable.hpp: turn tentative into real definition if makeTentativeDefinitionsReal
1638 unit-tests/test-cases/btentative-to-real: added test case
1640 2006-06-13 Nick Kledzik <kledzik@apple.com>
1642 <rdar://problem/4584355> implement -bundle_loader
1643 src/Options.h: add fBundleLoader bit to DynamicLibraryOptions
1644 src/Options.cpp: handle -bundle_loader
1645 src/ld.cpp: pass fBundleLoader bit to MachOReaderDylib
1646 src/MachOReaderDylib.hpp: support reading MH_EXECUTE files if fBundleLoader is set
1647 src/MachOWriterExecutable.hpp: set bundle loader ordinal as EXECUTABLE_ORDINAL
1648 unit-tests/test-cases/bundle_loader: added test case
1650 2006-06-12 Nick Kledzik <kledzik@apple.com>
1652 <rdar://problem/4583347> -syslibroot can cause "can't find ordinal for imported" error
1653 src/MachOReaderDylib.hpp: in Reader::reExports() compare install path in addition to load path
1656 2006-06-10 Nick Kledzik <kledzik@apple.com>
1658 <rdar://problem/4548935> Need rebasing tool
1659 src/rebase.cpp: added
1660 unit-tests/test-cases/rebase-basic: added
1661 doc/man/man1/rebase.1: added
1662 ld64.xcodeproj/project.pbxproj: added rebase target. changed all targets to build with dwarf
1665 2006-06-10 Nick Kledzik <kledzik@apple.com>
1667 src/machochecker.cpp: add some ppc reloc sanity checking
1669 ----- Tagged ld64-57
1671 2006-06-06 Nick Kledzik <kledzik@apple.com>
1673 <rdar://problem/4565088> ld64 is not adding a final '/' char on the initial directory-name SO stab debug map entry
1674 ld.cpp: Change Linker::synthesizeStabs() to assure directory SO always has a trailing slash
1675 unit-tests/test-cases/dwarf-debug-notes/expected-stabs: update with trailing /
1677 2006-06-06 Nick Kledzik <kledzik@apple.com>
1679 <rdar://problem/4572702> -sectcreate of a 0-byte section fails
1680 MachOWriterExecutable.cpp: Don't error out on zero length segments
1681 MachOWriterExecutable.cpp: For ppc64 reloc base address is the first writable segment iff
1682 there is a writable segment >4GB from base address
1684 2006-06-04 Eric Christopher <echristo@apple.com>
1688 * src/ld.cpp (createReader): Fixed error message.
1690 (resolveFrom): Ditto.
1691 (checkUndefines): Ditto.
1693 ----- Tagged ld64-56
1695 2006-05-23 Nick Kledzik <kledzik@apple.com>
1697 <rdar://problem/4558079> No debug notes for ObjC methods when linking with ld64
1698 ld.cpp: don't limit debug notes to functions starting with underscore
1700 2006-05-22 Nick Kledzik <kledzik@apple.com>
1702 <rdar://problem/4556982> ld64 spends much time in mach_o::relocatable::Reader<x86_64>::findAtomByName
1703 * src/MachOReaderRelocatable.hpp: add makeReferenceToSymbol() so that x86_64 does not need to do by-name lookups
1705 2006-05-22 Nick Kledzik <kledzik@apple.com>
1707 <rdar://problem/4535044> remove inferring warning
1708 * ld.cpp: Remove "inferring" warning. If a link failed and now arch was specifed add which arch was
1709 inferred to error message
1711 2006-05-19 Nick Kledzik <kledzik@apple.com>
1713 <rdar://problem/4544001> ld64 does not honor -arch_multiple
1714 * ld.cpp: If fOptions.printArchPrefix(), add architecture name to error message
1716 2006-05-19 Nick Kledzik <kledzik@apple.com>
1718 <rdar://problem/4555973> Support S_16BYTE_LITERALS section types
1719 * src/MachOReaderRelocatable.hpp: support S_16BYTE_LITERALS
1720 * src/MachOWriterExecutable.hpp: support S_16BYTE_LITERALS
1722 2006-05-19 Nick Kledzik <kledzik@apple.com>
1724 <rdar://problem/4548803> "warning can't parse dwarf compilation unit info" warnings building debug
1725 * src/MachOReaderRelocatable.hpp: fix bugs in dwarf line table parsing
1727 ----- Tagged ld64-55
1729 2006-05-18 Nick Kledzik <kledzik@apple.com>
1731 <rdar://problem/4534339> Default the pagezero size to 4GB for x86-64
1732 * src/Options.cpp: Chnage default the pagezero size to 4GB for x86-64
1734 2006-05-18 Nick Kledzik <kledzik@apple.com>
1736 <rdar://problem/4552825> x86_64 CarbonCore fails to link with "atom not found in symbolIndex"
1737 * src/MachOWriterExecutable.hpp: in buildObjectFileFixups() don't call addObjectRelocs() on kNoFixUp references
1739 2006-05-18 Nick Kledzik <kledzik@apple.com>
1741 <rdar://problem/4553555> ld64: .section defaults to read-only
1742 * src/MachOReaderRelocatable.hpp: default unknown segments to r/w
1744 2006-05-18 Nick Kledzik <kledzik@apple.com>
1746 <rdar://problem/4551990> -fvisibility=hidden causes crashes for x86_64
1747 * src/MachOWriterExecutable.hpp: properly handle RIP relative tentative definitions
1749 2006-05-12 Nick Kledzik <kledzik@apple.com>
1751 * src/Architectures.hpp: add x86::kAbsolute32
1752 * src/MachOReaderRelocatable.hpp: generate x86::kAbsolute32 for mdynamic-no-pic instructions
1753 * src/MachOWriterExecutable.hpp: process x86::kAbsolute32 reference kind
1755 ----- Tagged ld64-54
1757 2006-05-11 Nick Kledzik <kledzik@apple.com>
1759 <rdar://problem/4545108> CF-393 failes to link for x86_64
1760 * src/MachOWriterExecutable.cpp: fix sign extension for Rel32 relocs in Writer<x86_64>::fixUpReferenceRelocatable
1762 2006-05-11 Nick Kledzik <kledzik@apple.com>
1764 <rdar://problem/4501434> warning arch x86_64 not found using i386
1765 * src/ld.cpp: remove hack to allow x86_64 to link against i386 dylibs
1768 2006-05-10 Nick Kledzik <kledzik@apple.com>
1770 <rdar://problem/4543754> x86_64: .objc_class_name symbol names scrambled
1771 * src/MachOReaderRelocatable.hpp: properly compute alignment of __OBJC __class sections
1774 2006-05-08 Nick Kledzik <kledzik@apple.com>
1776 <rdar://problem/3894083> Support -dead_strip
1777 * src/Options.h/cpp: implement -why_load and -why_live. Enable -dead_strip.
1778 * src/MachOReaderArchive.hpp: implement -why_load
1779 * src/MachOReaderRelocatable.hpp: suppress GCC_except_table* symbols in final output
1780 * src/ld.cpp: implement dead code stripping
1781 * unit-tests/test-cases/dead_strip: added
1783 ----- Tagged ld64-53
1785 2006-05-05 Nick Kledzik <kledzik@apple.com>
1787 * src/Options.cpp: make 10.4 be minimum OS version for newer architectures
1789 2006-05-05 Nick Kledzik <kledzik@apple.com>
1791 <rdar://problem/4147604> N_SO symbols in 64-bit builds have a zero address for n.n_value
1792 * src/ld.cpp: for SO stabs, associate first and last atom in the SO range
1793 * src/MachOWriterExecutable.hpp: use atom associated with SO stab to set ins n_value
1795 2006-05-05 Nick Kledzik <kledzik@apple.com>
1797 * MachOWriterExecutable.hpp: fix end FUN stab to have length of function
1800 2006-05-02 Nick Kledzik <kledzik@apple.com>
1802 <rdar://problem/4496250> 64-bit main executables should have 4GB zero page by default
1803 * src/Opptions.cpp: change default pagezero_size to 4GB for ppc64
1804 <rdar://problem/4492850> 64 bit: apps with -mdynamic-no-pic seg fault when page zero > 4GB
1805 * src/MachOWriterExecutable.cpp: rework pagezero for ppc64 so that if any mdynamic-no-pic code
1806 is found, the code is kept in the low 2GB, and a new segment is create to map away up to 4GB.
1808 2006-05-02 Nick Kledzik <kledzik@apple.com>
1810 * src/Opptions.cpp: remove warning about -stack_addr not specified. Add warning if 32-bit stack
1811 overlaps shared region
1813 ----- Tagged ld64-52.1
1815 2006-05-01 Nick Kledzik <kledzik@apple.com>
1817 * src/MachOReaderRelocatable.cpp: rework handleAnonymousNonLazyPointers() to handle anl's in the middle
1818 the __data section too.
1820 ----- Tagged ld64-52
1822 2006-04-28 Nick Kledzik <kledzik@apple.com>
1824 <rdar://problem/4513304> 64-bit: 9A152 TextEdit crashes in dlopen on bring-up
1825 * src/MachOReaderRelocatable.cpp: rework anonymous non-lazy-pointer detection
1827 2006-04-28 Nick Kledzik <kledzik@apple.com>
1829 <rdar://problem/4528054> 64 Bit: Development build of ppc64 TextEdit gets confused about static variables
1830 * src/MachOReaderRelocatable.cpp: mark non-lazy-pointer atoms as scopeTranslationUnit if targetting a static symbol
1834 2006-04-21 Nick Kledzik <kledzik@apple.com>
1836 * src/Options.cpp: fix default address for ppc64 custom stack
1837 * src/MachOWriterExecutable.cpp: fix set up of ppc64 custom stack
1840 2006-04-14 Nick Kledzik <kledzik@apple.com>
1842 * src/Options.cpp: fix -sub_library processing to work it dylib is specifed with leaf name
1844 ----- Tagged ld64-51.1
1846 2006-04-13 Nick Kledzik <kledzik@apple.com>
1848 <rdar://problem/4513304> 64-bit: 9A152 TextEdit crashes in dlopen on bring-up
1849 * src/MachOReaderRelocatable.hpp: when detecting anonymous non-lazy-pointers disqualify data
1850 that points to static or global symbols
1851 * src/ld.cpp: print version of ld64 in error messages
1854 ----- Tagged ld64-51
1856 2006-04-11 Nick Kledzik <kledzik@apple.com>
1858 <rdar://problem/4499168> exported symbols not properly stripped
1859 * src/MachOReaderRelocatable.hpp: enable AnonymousAtom::setScope()
1861 2006-03-31 Nick Kledzik <kledzik@apple.com>
1863 <rdar://problem/4498391> ld64 fails when linking debug ppc64 HIToolbox
1864 * src/MachOReaderRelocatable.hpp: handle anonymous non-lazy pointers encoded with local relocations
1865 * src/MachOWriterExecutable.hpp: in -r mode, only generated INDIRECT_SYMBOL_LOCAL for non-lazy targets that
1868 2006-03-31 Nick Kledzik <kledzik@apple.com>
1870 <rdar://problem/4496499> ld64 should remove generated file if link errors out
1871 * src/MachOWriterExecutable.hpp: catch exceptions in Writer<A>::write(), delete output file, and rethrow
1874 ----- Tagged ld64-50
1877 2006-03-29 Nick Kledzik <kledzik@apple.com>
1879 * src/MachOReaderRelocatable.hpp: synthesize .objc_class_name symbols
1880 * src/MachOFileAbstraction.hpp: use strncpy for sect/seg names to zero fill trailing space
1882 2006-03-28 Nick Kledzik <kledzik@apple.com>
1884 * src/MachOReaderRelocatable.hpp: fix spurious warning about dwarf line info
1886 ----- Tagged ld64-49.1
1888 2006-03-25 Nick Kledzik <kledzik@apple.com>
1890 * MachOWriterExecutable.hpp : don't complain about ppc64 dyld being based > 4GB
1892 ----- Tagged ld64-49
1894 2006-03-24 Nick Kledzik <kledzik@apple.com>
1896 * src/MachOWriterExecutable.hpp: dyld is allowed to have synthesized non-lazy pointers
1897 <rdar://problem/4488113> ld64 is after processing bad GSYM stabs
1898 * src/MachOReaderRelocatable.hpp: if a GSYM is found that does not match any data symbol, suppress it
1900 2006-03-23 Nick Kledzik <kledzik@apple.com>
1902 * src/MachOWriterExecutable.hpp: in Writer<x86>::fixUpReferenceFinal() fix when x86::kPointer is for an
1905 2006-03-23 Nick Kledzik <kledzik@apple.com>
1907 * src/Options.cpp: change macosx-min-version to default to a per-architecture setting
1908 add warning if -pagezero_size is not page aligned
1909 * src/MachOWriterExecutable.hpp: properly handle external relocations for ppc64 with 4GB pagezero
1910 * src/machochecker.cpp: sanity check relocation records
1912 ----- Tagged ld64-48
1914 2006-03-21 Nick Kledzik <kledzik@apple.com>
1916 <rdar://problem/4481406> 64bit: passing function pointer to another function passes the wrong function address
1917 * src/MachOReaderRelocatable.hpp: when processing a non-lazy pointer to a static function, don't accidentally
1918 match it to a STAB symbol.
1920 2006-03-21 Nick Kledzik <kledzik@apple.com>
1922 <rdar://problem/4180168> .eh symbols make up 13% of libstdc++'s stripped binary size
1923 * src/ObjectFile.h: add ReaderOptions.fForFinalLinkedImage
1924 * src/Options.cpp: setup ReaderOptions.fForFinalLinkedImage
1925 * src/MachOReaderRelocatable.hpp: mark .eh symbols kSymbolTableNotIn when building final linked image
1927 2006-03-21 Nick Kledzik <kledzik@apple.com>
1929 <rdar://problem/4473742> ld64 does not parse optional second argument to -filelist
1930 * unit-tests/test-cases/filelist: added
1931 * src/Options.cpp: in Options::loadFileList() handle comma option
1934 ----- Tagged ld64-47.1
1937 ----- Tagged ld64-47
1940 ----- Tagged ld64-46
1942 2006-03-10 Nick Kledzik <kledzik@apple.com>
1944 <rdar://problem/4419505> ld64 should figure out architecture from .o files
1945 * unit-tests/test-cases/auto-arch: added
1946 * src/ld.cpp: added Linker::inferArchitecture() to scan .o files are infer architecture to link
1947 * src/MachOReaderArchive.hpp: enhanced validFile() to look deeper into archive and really valdate
1948 * src/MachOWriterExecutable.hpp: stop using fOptions.architecture()
1949 * src/Options.cpp: stop defaulting to ppc64
1952 2006-03-09 Nick Kledzik <kledzik@apple.com>
1954 <rdar://problem/4465004> Need "intentionally left blank" dylib stubs
1955 * unit-tests/include/common.makefile: add VALID_ARCHS
1956 * unit-tests/run-all-unit-tests: set up VALID_ARCHS
1957 * unit-tests/test-cases/blank-stubs: add test case
1958 * src/ld.cpp: in addDylib(), detect and ignore blank stubs
1959 * src/MachOReaderDylib.hpp: in constructor, handle blank stubs
1961 2006-03-09 Nick Kledzik <kledzik@apple.com>
1963 <rdar://problem/4471424> crash in stub with 2GB pagezero
1964 * src/MachOWriterExecutable.hpp: StubAtom<ppc64> can't be no-pic if a large zero-page is used
1966 2006-03-06 Nick Kledzik <kledzik@apple.com>
1968 * src/Options.cpp: addSectionAlignment, warn if -sectalign alignment is not a power of two
1970 ----- Tagged ld64-45
1973 2006-03-06 Nick Kledzik <kledzik@apple.com>
1975 <rdar://problem/4466930> LP64/9A122: ld64: hang when trying to link DiscRecording framework
1976 * src/Options.cpp: addSectionAlignment, warn on zero. Use log2() for alignment conversion
1979 ----- Tagged ld64-44
1981 2006-03-04 Nick Kledzik <kledzik@apple.com>
1983 * src/MachOReaderRelocatable.hpp: fix again test for detection of anonymous non-lazy-pointer.
1984 Error out if .o file contains old __DWARFA style dwarf.
1986 2006-03-02 Nick Kledzik <kledzik@apple.com>
1988 * src/ld.cpp: only re-map page aligned sub-parts of a fat file. A conformat mmap() requires alignment.
1990 ----- Tagged ld64-43
1993 2006-03-02 Nick Kledzik <kledzik@apple.com>
1995 * src/MachOReaderRelocatable.hpp: <rdar://problem/4464370> tighten detection of anonymous non-lazy-pointer
1997 ----- Tagged ld64-42
1999 2006-02-28 Nick Kledzik <kledzik@apple.com>
2001 * src/MachOReaderRelocatable.hpp: fix x86 __IMPORT permissions for class Segment
2003 2006-02-28 Nick Kledzik <kledzik@apple.com>
2005 <rdar://problem/4461240> SWB: ld64-37 (can't resolve symbol ___dso_handle)
2006 * src/MachOWriterExecutable.hpp: add class DsoHandleAtom
2008 2006-02-28 Nick Kledzik <kledzik@apple.com>
2010 * unit-tests/test-cases/literals-coalesce-alignment: added test case
2011 * src/ld.cpp: when coalescing strings pick one with greater alignment
2012 <rdar://problem/4458660> ld64: CG link failed because lo14 reference to anonymous non-lazy-pointer not aligned
2013 * unit-tests/test-cases/relocs-c/test.c: tweak to fail like 4458660
2014 * src/MachOReaderRelocatable.hpp: detect anonymous non-lazy-pointer and transform into real non-lazy-pointers
2016 ----- Tagged ld64-41
2018 2006-02-24 Nick Kledzik <kledzik@apple.com>
2020 * src/Options.cpp: Warning about -no_dead_strip_inits_and_terms and -i options.
2023 ----- Tagged ld64-40
2025 2006-02-24 Nick Kledzik <kledzik@apple.com>
2027 <rdar://problem/4454698> Leopard9A113: ppc64 libstdc++.dylib initializer crashes in pthread_once
2028 * unit-tests/test-cases/multiple-entry-points: added
2029 * src/MachOReaderRelocatable.hpp: make sure that if there are multiple symbols with the same
2030 address, that we properly make zero length atoms for all but last symbol
2032 2006-02-24 Nick Kledzik <kledzik@apple.com>
2034 * src/Options.cpp: <rdar://problem/4456093> ld64 doesn't realpath(3) B&I tracing paths
2036 2006-02-24 Nick Kledzik <kledzik@apple.com>
2038 * src/Options.cpp: <rdar://problem/4457078> 9A110: ld64 can't deal with section names >16 chars
2040 2006-02-23 Nick Kledzik <kledzik@apple.com>
2042 * src/MachOWriterExecutable.hpp: use vector.reserve() to minimize re-allocations
2043 * src/Options.cpp: use vector.reserve() to minimize re-allocations
2044 * src/MachOReaderRelocatable.hpp: use vector.reserve() to minimize re-allocations
2045 * src/MachOReaderDylib.hpp: use vector.reserve() to minimize re-allocations
2046 * src/ld.cpp: use vector.reserve() to minimize re-allocations
2048 2006-02-23 Nick Kledzik <kledzik@apple.com>
2050 <rdar://problem/4455927> ld64 creates corrupt executables (and has malloc errors) with -headerpad option
2051 * src/MachOWriterExecutable.hpp: Change LoadCommandsPaddingAtom<A>::setSize() to update fLargestAtomSize
2052 * unit-tests/test-cases/header-pad: added
2054 2006-02-23 Nick Kledzik <kledzik@apple.com>
2056 <rdar://problem/4455192> ld64 creates invalid static executables
2057 * src/MachOWriterExecutable.hpp: Change MachHeaderAtom<A>::copyRawContent() to create correct header
2058 for static executables. Change SymbolTableLoadCommandsAtom to skip LC_DYSYMTAB for static executables
2059 * src/machochecker.cpp: Add tests that static executables are well formed
2060 * unit-tests/test-cases/static-executable: added
2062 2006-02-22 Nick Kledzik <kledzik@apple.com>
2064 * src/Options.cpp: <rdar://problem/4453468> chnage printf on unknown arg to a throw
2066 ----- Tagged ld64-39
2068 2006-02-20 Nick Kledzik <kledzik@apple.com>
2070 * unit-tests/test-cases/read-only-relocs: added new test case
2071 * src/MachOWriterExecutable.hpp: <rdar://problem/4448922> detect and error on relocs in read-only sections
2072 * src/MachOReaderRelocatable.hpp: fix parsing of i386 absolute addressing relocs
2074 2006-02-20 Nick Kledzik <kledzik@apple.com>
2076 * unit-tests/test-cases/stabs-coalesce: added new test case
2077 * src/ld.cpp.hpp: <rdar://problem/4449226> in collectStabs removed unused stabs
2079 ----- Tagged ld64-38
2081 2006-02-17 Nick Kledzik <kledzik@apple.com>
2083 * src/MachOWriterExecutable.hpp: <rdar://problem/4434578> set correct n_sect field of stabs
2085 2006-02-15 Nick Kledzik <kledzik@apple.com>
2087 * src/MachOReaderArchive.hpp: <rdar://problem/4441920> with -all_load skip over both kinds of SYMDEFs
2088 * unit-tests/test-cases/archive-basic/Makefile: add -all_load test case
2090 ----- Tagged ld64-37
2092 2006-02-13 Eric Christopher <echristo@apple.com>
2094 * src/MachOWriterExecutable.hpp (assignFileOffsets): Simplify. Add comments.
2097 2006-02-13 Nick Kledzik <kledzik@apple.com>
2099 * src/MachOWriterExecutable.hpp: in Writer<x86>::fixUpReferenceRelocatable() fix kPCRel32 for external case
2101 2006-02-13 Nick Kledzik <kledzik@apple.com>
2103 * unit-tests/test-cases/zero-fill: added
2104 * src/machochecker.cpp: check that S_ZEROFILL have no file offset
2105 * src/MachOWriterExecutable.hpp: rework assignFileOffsets() to fix rdar://problem/4441145
2107 2006-02-12 Nick Kledzik <kledzik@apple.com>
2109 * src/MachOReaderRelocatable.hpp: <rdar://problem/4440880> fix use of first zero-length c-string in .o file
2111 2006-02-12 Nick Kledzik <kledzik@apple.com>
2113 * src/MachOReaderRelocatable.hpp: <rdar://problem/4440905> fix uninitialized fAlignment
2115 2006-02-12 Nick Kledzik <kledzik@apple.com>
2117 * unit-tests/test-cases/relocs-asm/relocs-asm.s: add pointer-diff cases
2118 * src/Architectures.hpp: make size explicit in ppc/ppc64 kPointerDiff
2119 * src/MachOReaderRelocatable.hpp: don't allow kPointerDiff64 for ppc (just ppc64)
2120 * src/MachOWriterExecutable.cpp: set proper r_length for ld -r of kPointerDiff
2122 ----- Tagged ld64-36
2124 2006-02-08 Nick Kledzik <kledzik@apple.com>
2126 * src/MachOReaderRelocatable.cpp: rdar://problem/4438677 Handle when a .o file dwarf line info entries but no functions
2128 2006-02-08 Nick Kledzik <kledzik@apple.com>
2130 * src/MachOWriterExecutable.cpp: Properly set address of first TEXT section
2131 Keep S_COALESCED attribute for __eh_frame
2133 2006-02-08 Nick Kledzik <kledzik@apple.com>
2135 * src/ld.cpp: Temporarily turn allowable client errors into warnings
2136 * unit-tests/test-cases/allowable-clientMakefile: Temporarily let warnings be ok for above
2137 * src/MachOWriterExecutable.hpp: fix ld -r to not use external relocations for symbols make static
2139 2006-02-08 Nick Kledzik <kledzik@apple.com>
2141 * src/ld.cpp: A sibling in an umbrella can always link with its other siblings
2142 * unit-tests/test-cases/allowable-client: add test case for above
2144 2006-02-08 Nick Kledzik <kledzik@apple.com>
2146 * src/MachOReaderRelocatable.hpp: support LOCAL non-lazy pointers to hidden symbols
2147 * src/machochecker.cpp: verify indirect symbol table
2148 * unit-tests/test-cases/private-non-lazy: added test case
2150 2006-02-07 Nick Kledzik <kledzik@apple.com>
2152 * src/MachOWriterExecutable.hpp: fix calculation of file offsets in ld -r mode
2153 * src/machochecker.cpp: verify segment file offsets are within file
2155 ----- Tagged ld64-35
2157 2006-02-06 Nick Kledzik <kledzik@apple.com>
2159 * ld.cpp: allow parent of sub-framework to link
2160 * unit-tests/test-cases/allowable-client/Makefile: added cases for parent and clients of parent
2162 2006-02-04 Nick Kledzik <kledzik@apple.com>
2164 * unit-tests/test-cases/relocs-c/test.c: added some array cases
2165 * src/MachOReaderRelocatable.hpp: factor out makeReferenceToEH()
2166 * src/MachOWriterExecutable.hpp: add initial support for non-lazy pointer synthesis
2168 ----- Tagged ld64-34
2170 2006-02-04 Nick Kledzik <kledzik@apple.com>
2172 * src/ld.cpp: <rdar://problem/4432917> fix -no_arch_warnings
2173 <rdar://problem/4432932> fix -undefined warning
2174 Do BINCL/EINCL optimization for gfull stabs
2175 Implement "essential symbols" for stabs (-Sp)
2176 Fix allowable clients to only test on direct libraries
2177 * src/MachOReaderRelocatable.hpp: support BINCL/EINCL stabs
2179 2006-02-03 Nick Kledzik <kledzik@apple.com>
2181 * src/machochecker.cpp: add code to check load command alignment
2182 * src/MachOWriterExecutable.hpp: make load command alignment depend on architecture
2184 2006-02-03 Nick Kledzik <kledzik@apple.com>
2186 * unit-tests/test-cases/literals-coalesce: added
2187 * src/MachOReaderRelocatable.hpp: assure all targets of low14 ppc relocs are at least 4-byte alignmented
2189 ----- Tagged ld64-33
2191 2006-02-02 Nick Kledzik <kledzik@apple.com>
2193 * src/MachOReaderRelocatable.hpp: properly coalesce 8-byte literals
2194 * src/MachOWriterExecutable.hpp: support ppc64::kPointerDiff32
2196 ----- Tagged ld64-32
2198 2006-02-02 Nick Kledzik <kledzik@apple.com>
2200 * src/MachOReaderRelocatable.hpp: support anonymous zero fill atoms
2202 2006-02-02 Nick Kledzik <kledzik@apple.com>
2204 * src/ld.cpp: A weak definition is good enough, do not search archives for a non-weak one
2205 * unit-tests/test-cases/archive-weak: add test case for above
2206 * src/MachOReaderRelocatable.hpp: an atom should never have a by-name reference to itself
2207 * src/Options.cpp: prevent .eh symbols from being exported via a -exported_symbols_list
2209 2006-02-01 Nick Kledzik <kledzik@apple.com>
2211 * src/MachOReaderRelocatable.hpp: Support -macosx_version_min 10.5
2213 2006-02-01 Nick Kledzik <kledzik@apple.com>
2215 * src/MachOReaderRelocatable.hpp: don't try to parse debug_line dwarf if no symboled atoms
2217 ----- Tagged ld64-31
2219 2006-02-01 Eric Christopher <echristo@apple.com>
2221 * unit-tests/test-cases/allow-stack-execute/Makefile: Move otool handling...
2222 * unit-tests/include/common.makefile: ... here.
2223 * unit-tests/bin/fail-if-stdin.pl: New.
2224 * unit-tests/test-cases/no-uuid: Ditto.
2225 * src/ld.cpp (Linker::) Add fCreateUUID.
2226 (::Linker): Initialize.
2227 (::collectStabs): Use. Set if dwarf or we have a UUID already.
2228 (::writeOutput): Pass as argument to Writer::write along with option.
2229 * src/Options.h (Option::emitUUID): Declare.
2230 (Option::fEmitUUID): Ditto.
2231 * src/Options.cpp (Option::emitUUID): New.
2232 (parse): Handle -no_uuid.
2233 * src/MachOReaderRelocatable (Reader::Reader): Handle LC_UUID.
2234 * src/ExecutableFile.h (Writer::Write): Add createUUID boolean.
2235 * src/MachOWriterExecutable: Add UUID forward declaration.
2237 (UUIDLoadCommandAtom): Emit LC_UUID if fEmit. New function emit. Size
2239 (Writer::writer): Add handle for LC_UUID. If createUUID emit LC_UUID.
2240 (MachHeaderAtom::copyRawContent): Don't count a load command if its size is
2242 (UUIDLoadCommandAtom::copyRawContent): Depend on fEmit.
2245 2006-01-31 Nick Kledzik <kledzik@apple.com>
2247 * unit-tests/test-cases/dwarf-debug-notes : Added
2248 * src/ld.cpp: don't generate debug note for .eh symbols
2249 * src/MachOReaderRelocatable.hpp: make dwarf line info to atom matching faster and better
2251 2006-01-31 Nick Kledzik <kledzik@apple.com>
2253 * ld64.xcodeproj/project.pbxproj : Make buildable on Leopard
2254 * src/MachOFileAbstraction.hpp: make buildable without latest cctools headers
2256 2006-01-31 Nick Kledzik <kledzik@apple.com>
2258 * src/MachOReaderRelocatable.hpp: better error message for bad relocs
2259 * src/ObjectDump.cpp: add emacs tab settings
2260 * src/SectCreate.h: ditto
2261 * src/SectCreate.cpp: ditto
2262 * src/machochecker.cpp: ditto
2263 * src/ExecutableFile.h: ditto
2265 2006-01-30 Eric Christopher <echristo@apple.com>
2267 * src/ExecutableFile.h: Indent.
2269 2006-01-30 Nick Kledzik <kledzik@apple.com>
2271 * src/MachOReaderRelocatable.hpp: performance improvements
2272 * src/ld.cpp: now that stubs are synthesized in write, don't need to special case anymore
2274 2006-01-30 Nick Kledzik <kledzik@apple.com>
2276 * src/MachOReaderRelocatable.hpp: fix parsing of pcc relocs
2277 * unit-tests/test-cases/relocs-asm/relocs-asm.s: add test case for above
2279 2006-01-29 Nick Kledzik <kledzik@apple.com>
2281 * unit-tests/test-cases/weak_import: added test case
2282 * src/ld.cpp: move code for weak_import mismatch to writer
2283 * src/ObjectFile.h: remove ImportWeakness methods
2284 * src/MachOReaderDylib.hpp: ditto
2285 * src/SectCreate.cpp: ditto
2286 * src/Architectures.hpp: add new ReferenceKinds for weak_imports
2287 * src/MachOReaderRelocatable.hpp: implement new ReferenceKinds
2288 * src/MachOWriterExecutable.hpp: handle new ReferenceKinds and weak_import mismatches
2290 2006-01-29 Nick Kledzik <kledzik@apple.com>
2292 * src/Options.cpp: verify -allow_stack_execute is only used on main executables
2294 2006-01-29 Nick Kledzik <kledzik@apple.com>
2296 * src/MachOReaderRelocatable.hpp: sync with latest dwarf reader from Geoff
2297 * src/debugline.c: sync with latest dwarf reader from Geoff
2299 2006-01-27 Eric Christopher <echristo@apple.com>
2301 * src/ld.cpp (Linker::syntesizeStabs): Correct spelling. Update all uses.
2303 2006-01-27 Eric Christopher <echristo@apple.com>
2305 * src/Options.h (Options): Add hasExecutableStack, fExecutableStack.
2306 * src/Options.cpp (Options::hasExecutableStack): New.
2307 (Options::parse): Parse -allow_stack_execute.
2308 * src/MachOWriterExecutable.hpp (MachHeaderAtom::copyRawContent):
2309 Implement MH_ALLOW_STACK_EXECUTION.
2310 * unit-tests/include/common.makefile (FAIL_IF_EMPTY): New.
2311 * unit-tests/bin/fail-if-no-stdin.pl: New file.
2312 * unit-tests/test-cases/allow-stack-execute: New directory.
2314 2006-01-27 Nick Kledzik <kledzik@apple.com>
2316 * src/MachOFileAbstraction.hpp: rely on latest system headers
2317 * src/MachOWriterExecutable.hpp: fix ppc stubs.
2318 wrote new relocationNeededInFinalLinkedImage() to replace common code
2320 2006-01-27 Eric Christopher <echristo@apple.com>
2322 * src/ld.cpp (logTraceInfo): New.
2323 (Linker::addArchive): Use.
2324 (Linker::addDylib): Ditto.
2325 * src/ObjectFile (ReaderOptions::fTraceOutputFile): New.
2326 * src/MachOReaderArchive.hpp (Reader::Reader): Move trace
2327 logging to Linker::addArchive.
2328 * src/Options.cpp (parsePreCommandLineEnvironment): Check
2329 LD_PRINT_FILE if tracing dylibs or archives.
2331 2006-01-26 Nick Kledzik <kledzik@apple.com>
2333 * src/MachOWriterExecutable.hpp: handle NULL strings in SO debug notes
2335 2006-01-26 Nick Kledzik <kledzik@apple.com>
2337 * src/MachOWriterExecutable.hpp: fix header padding calculation and thread state
2339 2006-01-26 Nick Kledzik <kledzik@apple.com>
2341 Rewrite all stabs processing.
2342 Move sythesize of debug notes into ld.cpp
2344 2006-01-26 Nick Kledzik <kledzik@apple.com>
2346 * src/MachOWriterExecutable.hpp: fix ppc and ppc64 stub relocs
2348 2006-01-25 Nick Kledzik <kledzik@apple.com>
2350 * ld64.xcodeproj/project.pbxproj: special case building in Curry
2352 2006-01-25 Nick Kledzik <kledzik@apple.com>
2354 * src/MachOWriterExecutable.hpp: fix bugs in stub/lazy-pointer synthesis
2356 2006-01-24 Eric Christopher <echristo@apple.com>
2358 * src/ld.cpp (Linker::createReaders): Change logging title to XBS.
2359 (Linker::addDylib): Ditto.
2360 * src/MachOReaderArchive.hpp (Reader::Reader): Ditto.
2361 * src/Options.h (fPrintOptions): New.
2362 * src/Options.cpp (Options::Options): Initialize above.
2363 (Options::checkForFile): Change logging title to XBS.
2364 (Options::findFramework): Ditto.
2365 (Options::parse): Add log for options.
2366 (Options::parsePreCommandLineEnvironmentSettings): Add LD_TRACE_ARCHIVES,
2367 LD_TRACE_DYLIBS, and LD_PRINT_OPTIONS.
2369 2006-01-24 Nick Kledzik <kledzik@apple.com>
2371 * src/MachOReaderRelocatable.hpp: better C++ eh parsing
2373 2006-01-23 Eric Christopher <echristo@apple.com>
2375 * unit-tests/bin/fail-if-exit-zero.pl: New.
2376 * unit-tests/include/common.makefile (FAIL_IF_SUCCESS): Use.
2377 * unit-tests/allowable-client: New test.
2378 * src/ld.cpp (Linker::addDylib): Check allowable clients before adding dylib.
2379 * src/Options.h (allowableClients): New.
2380 (clientName): Ditto.
2381 (fAllowableClients): Ditto.
2382 (fClientName): Ditto.
2383 * src/Options.cpp: Implement above.
2384 (parse): Handle -allowable_client and -client_name.
2385 * src/MachOReaderDylib.hpp (getAllowableClients): New.
2386 (fAllowableClients): Ditto.
2387 (Reader): Process LC_SUB_CLIENT load command.
2388 * src/ObjectFile.h (parentUmbrella): New.
2389 (getAllowableClients): New.
2390 * src/MachOWriterExecutable.hpp (AllowableClientLoadCommandsAtom): New.
2392 2006-01-23 Nick Kledzik <kledzik@apple.com>
2394 * unit-tests/test-cases/archive-basic: added
2395 * src/ld.cpp: fix shadowed local variable
2396 * src/FileAbstraction.hpp: <rdar://problem/4417372> ld64 shouldn't inline when building debug
2398 2006-01-23 Nick Kledzik <kledzik@apple.com>
2400 * src/ld.cpp: fix symbol not found error message
2401 * src/MachOReaderDylib.hpp: add logging to hash table
2402 * src/MachOReaderRelocatable.hpp: enable stabs processing. Handle static functions with stubs
2403 handle labeled cstrings.
2404 * src/MachOWriterExecutable.hpp: properly suppress atoms not in symbol table. fix low14 error check.
2406 * unit-tests/test-cases/relocs-literals/test.c: add more interesting edge cases
2408 2006-01-17 Nick Kledzik <kledzik@apple.com>
2410 * src/MachOReaderRelocatable.hpp: tweaks to synthesizing debug notes
2412 2006-01-16 Nick Kledzik <kledzik@apple.com>
2414 * src/debugline.{sh}: added
2415 * src/MachOReaderRelocatable.hpp: synthesize debug notes SOL from dwarf
2416 * src/MachOWriterExecutable.hpp: fix lazy pointer section
2417 * src/ObjectDump.hpp: Fix conditionalization
2418 * unit-tests/test-cases/dwarf-strip: added
2420 2006-01-11 Nick Kledzik <kledzik@apple.com>
2422 * src/MachOReaderRelocatable.hpp: support Tiger crt1.o build with old ld64
2423 * src/ObjectDump.hpp: Support -arch option
2425 2006-01-10 Nick Kledzik <kledzik@apple.com>
2427 * src/MachOWriterExecutable.hpp: fix stubs for ppc64
2428 * src/MachOFileAbstraction.hpp: fix typo for macho_routines
2429 * ld64.xcodeproj/project.pbxproj: add machochecker target
2430 * src/machochecker.cpp: new skeleton for checking mach-o file bit
2431 * unit-tests/: Add support for running machochecker
2433 2006-01-10 Nick Kledzik <kledzik@apple.com>
2435 * src/MachOReaderRelocatable.hpp: warn if dwarf can't be parsed
2436 * src/MachOReaderArchive.hpp: modTime for OSO stabs from archives is .a modTime
2438 2006-01-09 Nick Kledzik <kledzik@apple.com>
2440 * track modification time of .o files so that sythesized OSO stab will have it
2442 2006-01-09 Nick Kledzik <kledzik@apple.com>
2444 * src/MachOFileAbstraction.hpp: add macho_uuid_command
2445 * src/MachOWriterExecutable.cpp: add UUID load command to generated files
2447 2006-01-09 Nick Kledzik <kledzik@apple.com>
2449 * src/MachOReaderDylib.hpp: no longer keep dylib memory mapped
2450 * src/ld.cpp: don't track dylib sizes because they are not longer memory mapped
2452 2006-01-05 Nick Kledzik <kledzik@apple.com>
2454 * src/MachOReaderRelocatable.hpp: support new relocations
2456 2006-01-05 Nick Kledzik <kledzik@apple.com>
2458 * src/MachOReaderDylib.hpp: support MH_DYLIB_STUB
2459 * src/MachOReaderRelocatable.hpp: Add Geoff's comp unit extractor
2461 2006-01-05 Nick Kledzik <kledzik@apple.com>
2463 refactor: transform Atom::dontStripName() to getSymbolTableInclusion()
2464 * src/ld.cpp: pass dyld_stub_binding_helper to writer
2465 * src/MachOReaderRelocatable.hpp: update synthesized stabs
2466 Ignore stubs and lazy pointers in .o files
2467 Support initializers and terminators
2468 * src/MachOWriterExecutable.hpp: synthesize stubs and lazy pointers as needed
2469 * ld64.xcodeproj/project.pbxproj: change Release target to build with dwarf
2471 2006-01-03 Eric Christopher <echristo@apple.com>
2473 * src/Options.h (multipleDefinitionsInDylibs): Declare.
2474 (overridingDefinitionInDependentDylib): Ditto.
2475 (warnOnMultipleDefinitionsInObjectFiles): Ditto.
2476 (multiplyDefined): Remove.
2477 (multiplyDefinedUnused): Ditto.
2478 (fMultiplyDefined): Ditto.
2479 (fWarnOnMultiplyDefined): New.
2480 (fMultiplyDefinedDynamic): Ditto.
2481 * src/Options.cpp (Options::Options): Initialize above.
2482 (overridingDefinitionInDependentDylib): New.
2483 (multipleDefinitionsInDylibs): Ditto.
2484 (warnOnMultipleDefinitionsInObjectFiles): Ditto.
2485 (parse): Update comments. Fix parsing of -y option.
2486 Update error message for -dead_strip. Parse above
2489 2006-01-02 Nick Kledzik <kledzik@apple.com>
2491 * Refactor: move Atom::writeContent() to Writer
2493 2005-12-23 Nick Kledzik <kledzik@apple.com>
2495 * Reworked, simplify, and document test harness
2496 * unit-tests/README: Added
2498 2005-12-23 Nick Kledzik <kledzik@apple.com>
2500 * src/MachOReaderRelocatable.hpp: fixes for Objective-C
2501 * unit-tests/test-cases/relocs-objc: Added
2503 2005-12-22 Nick Kledzik <kledzik@apple.com>
2505 * src/MachOReaderRelocatable.hpp: fix check that next reloc is pair
2506 * src/MachOReaderRelocatable.hpp: Add code to synthesize essential stabs from dwarf
2508 2005-12-21 Nick Kledzik <kledzik@apple.com>
2510 * src/MachOReaderRelocatable.hpp: Fix parsing of literal sections
2511 * src/MachOWriterExecutable.hpp: Fix writing of literal sections
2512 * unit-tests/test-cases/relocs-literals: Added
2514 2005-12-15 Eric Christopher <echristo@apple.com>
2516 * src/Options.h (enum Treatment): New.
2517 (enum PICTreatment): Delete.
2518 (enum VersionMin): New.
2520 (macosxVersionMin): Ditto.
2521 (multiplyDefined): Ditto.
2522 (multiplyDefinedUnused): Ditto.
2523 (setVersionMin): Ditto.
2524 (setPICTreatment): Delete.
2525 (setReadOnlyRelocTreatment): Ditto.
2526 (picTreatment): Adjust return type.
2527 (parseTreatment): New.
2529 (fVersionMin): Ditto.
2530 (fPICTreatment): Change type.
2531 (fMultiplyDefined): New.
2532 (fMultiplyDefinedUnused): Ditto.
2533 (fLimitUndefinedSymbols): Ditto.
2535 * src/Options.cpp: Fix whitespace. Add comments on options.
2536 (Options::Options): Add initializers for new variables.
2537 (Options::prebind): New.
2538 (Options::macosxVersionMin): Ditto.
2539 (Options::parseTreatment): Ditto.
2540 (Options::setVersionMin): Ditto.
2541 (Options::setReadOnlyRelocTreatment): Delete.
2542 (Options::setPICTreatment): Ditto.
2543 (Options::Parse): Update for above. Add comments.
2545 2005-12-15 Nick Kledzik <kledzik@apple.com>
2547 * src/MachOReaderRelocatable.hpp: Add comments about dwarf
2549 2005-12-14 Nick Kledzik <kledzik@apple.com>
2551 * src/ELFFileAbstraction.hpp: Added
2552 * src/ELFReaderRelocatable.hpp: Added
2553 * Lot of fixes for new architecture
2554 * Added __OPEN_SOURCE__ to "Preprocessor Macros" to disable new architecture support by default
2556 2005-12-13 Nick Kledzik <kledzik@apple.com>
2558 * src/MachOReaderRelocatable.hpp: check for S_ATTR_DEBUG and ignore those sections
2559 * unit-tests/test-cases/dwarf-ignore: added
2561 2005-12-12 Nick Kledzik <kledzik@apple.com>
2563 * Added test harness and three initial tests:
2564 relocs-asm, relocs-c, and hello-world
2566 2005-12-12 Nick Kledzik <kledzik@apple.com>
2568 * src/MachOReaderRelocatable.hpp: Massive refactoring:
2569 Now there are three Atom classes, Chopping into Atoms
2570 is done on label boundaries or by knowledge of special
2571 sections, Share lots of ppc/ppc64 code.
2572 Stabs process code is temporarily disabled.
2574 2005-12-12 Nick Kledzik <kledzik@apple.com>
2576 * src/ObjectDump.cpp: Add command line options: -no_content, -stabs, -no_sort
2578 2005-12-11 Eric Christopher <echristo@apple.com>
2580 * src/Options.cpp: Reformat.
2581 * src/Options.h: Ditto.
2583 2005-12-07 Eric Christopher <echristo@apple.com>
2585 * src/MachOReaderRelocatable.hpp (Atom::getAlignment):
2586 When calculating alignment of an Atom, take into account
2587 the alignment from which we pulled the Atom.
2589 2005-12-06 Nick Kledzik <kledzik@apple.com>
2591 * src/Options.cpp src/Options.h: Add design comments
2593 2005-12-05 Eric Christopher <echristo@apple.com>
2595 * src/ld.cpp (Linker::createWriter): Uncomment ppc64 and
2598 2005-12-05 Eric Christopher <echristo@apple.com>
2600 * ChangeLog: New file.
2602 2005-12-02 Nick Kledzik <kledzik@apple.com>
2604 * src/ObjectFile.h: Add design comments
2606 2005-11-30 Nick Kledzik <kledzik@apple.com>
2608 * Fix uses of __OPEN_SOURCE__
2610 2005-11-28 Nick Kledzik <kledzik@apple.com>
2612 * Refactor Atom to use getDefinitionKind()
2614 2005-11-21 Nick Kledzik <kledzik@apple.com>
2616 * src/MachOWriterExecutable.hpp: don't generate section for commons in -r mode
2618 2005-11-18 Nick Kledzik <kledzik@apple.com>
2622 2005-11-18 Nick Kledzik <kledzik@apple.com>
2624 * src/ObjectDump.cpp: make work with command line arguments
2626 2005-11-18 Nick Kledzik <kledzik@apple.com>
2628 * Massive rework to remove preprocessor conditionals and use templates
2630 2005-11-14 Nick Kledzik <kledzik@apple.com>
2632 * Created new Subversion repository for ld64 from cvs tag ld64-27.2