X-Git-Url: https://git.saurik.com/apple/ld64.git/blobdiff_plain/d696c285d331ab577dcabd00419d8c30336673da..c211e7c9adba556a05f8bddeafa72fa9fa87fe1b:/ChangeLog diff --git a/ChangeLog b/ChangeLog index d028e47..ffe4190 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4349 @@ +----- Tagged ld64-97.2 + +2009-09-25 Nick Kledzik + + 'unknown DWARF EH encoding' message logged to console with clang-50 + + +----- Tagged ld64-97.1 + +2009-07-28 Nick Kledzik + + make better no-PIC branch island to thumb1 + * Add kBranchIslandNoPicToThumb1 as 8-byte no-PIC island + + +2009-07-20 Nick Kledzik + + section$start$__DATA$__bss can fail + * In SectionBoundaryAtom constructor make __bss and __common be zero-fill + * In AtomSorter, make sure end kSectionEnd sort after kTentativeDefinition + * unit-tests/test-cases/section-labels-zero-fill: add test cases + + +----- Tagged ld64-97 + +2009-07-13 Nick Kledzik + + empty dylib should have subtype from command line + In Linker::writeOutput() for ARM, set initial fCurrentCpuConstraint to be command line subtype + + +2009-07-09 Nick Kledzik + + crash when using -dead_strip and LTO with unresolved intrinsic + * In Linker::optimize() after final deadStripResolve() call checkUndefines() one last time + + +2009-07-09 Nick Kledzik + + ld64 can not find a -e entry point from an archive + * src/ld/ld.cpp: add searchArchives parameter to entryPoint() for use by deadStripResolve() + * unit-tests/test-cases/dead_strip-entry-archive: added test case + + +2009-07-08 Nick Kledzik + + __objc_classrefs section could be coalesced + * In machoReader, chop up __objc_classrefs section into pointer size atoms + and make each weak and hidden with a name based on its target name. + + +2009-06-26 Nick Kledzik + + "ld: symbol dyld_stub_binding_helper not defined" for xnu built with clang for x86_64 + * Fix relocationNeededInFinalLinkedImage() to say weak-defs don't require indirection in static executables + * Added unit-tests/test-cases/static-executable-weak-defines + + +2009-06-26 Nick Kledzik + + Error msg for missing -init symbol is misleading/unclear + * In Linker::checkUndefines() check all ways that the command line could add an undefined + and then search for close matches/typos. + + +2009-06-25 Nick Kledzik + + We need ld-symbol-moving-symbols for ARM/Embedded + * In mach_o::dylib::Reader::addSymbol() parse iPhoneOS version strings + * Update IPhoneVersionMin + + +2009-06-25 Nick Kledzik + + Linker makes subtype-zero file from empty subtype-nonzero file. + * In Linker::writeOutput() set inittal fCurrentCpuConstraint to be command line subtype + * Fix fArchitectureName to have arm sub-types + + +2009-06-24 Nick Kledzik + + ld should do a better job of reporting attempts to link directories + * In Options::buildSearchPaths() sanity check -L and -F options + + +2009-06-24 Nick Kledzik + + better error message when libLTO.dylib not loadable + * in Linker::createReader() provide detail error messages + + +----- Tagged ld64-96.10 + +2009-08-31 Nick Kledzik + + empty dylib has been __mh_dylib_header n_sect + * rework patch to use MinimalTextAtom to ensure there is always a __text section + + +----- Tagged ld64-96.9 + +2009-08-31 Nick Kledzik + + empty dylib has been __mh_dylib_header n_sect + * suppress __mh_dylib_header from symbol table if there is no __text section + + Implicitly add dyld_stub_binder to libSystem.dylib so iPhone clients can build + against SnowLeopard libSystem.dylib. + + +----- Tagged ld64-96.8 + +2009-08-30 Nick Kledzik + + SWB: gcc-5577.1 fails to build vecLib + + +----- Tagged ld64-96.7 + +2009-08-29 Nick Kledzik + + Linker makes subtype-zero file from empty subtype-nonzero file. + + +----- Tagged ld64-96.6 + +2009-07-30 Nick Kledzik + + ld: ldr 12-bit displacement out of range on SnowLeopard with gcc-5648 + * in Section::Section() set fIndex to ensure __symbolstub1 sorts to end of __TEXT segment + + +----- Tagged ld64-96.5 + +2009-07-28 Nick Kledzik + + Thumb mode compilation isn't working on 3.1 beta 2 + * Fix instructions used in kBranchIslandToThumb1 case + + +----- Tagged ld64-96.4 + +2009-06-22 Nick Kledzik + + platform linker should use platform ld_classic + * Fix Options::gotoClassicLinker() to use realpath()s + + +2009-06-22 Nick Kledzik + + * Fix Options::setIPhoneVersionMin() to handle 2.x through 9.x + + +----- Tagged ld64-96.3 + +2009-06-17 Nick Kledzik + + * Change section sorting so that arm and ppc stub section is immediately after __text section + + +2009-06-17 Nick Kledzik + + don't use no-PIC stubs in any dylibs - it might conflict with codesigning + * In StubAtom::StubAtom() don't use kStubNoPIC for OS dylibs + + +----- Tagged ld64-96.2 + +2009-06-09 Nick Kledzik + + * Back out page-cross branch work around + + +----- Tagged ld64-96.1 + +2009-06-05 Nick Kledzik + + * Fix "duplicate symbol cache-line-crossing-stub" error by giving placeholders unique names + * Fix -pie by allowing relocs in x86 stubs and stub helpers + + +----- Tagged ld64-96 + +2009-06-04 Nick Kledzik + + * Darwin x86_64 static codegen is really dynamic code gen, so use LTO_CODEGEN_PIC_MODEL_DYNAMIC + + +2009-06-03 Nick Kledzik + + use lto_codegen_set_assembler_path() + + +2009-06-03 Nick Kledzik + + * In src/ld/LTOReader.hpp, move where -save-temps .bc file is saved to be after code model set + + +2009-06-01 Nick Kledzik + + Link Time Optimization error with 'dead code strip' + hidden symbol + * scan newAtoms returned from optimize() looking for ones already in the symbol table + * add test case unit-tests/test-cases/lto-dead_strip-all-hidden + + +2009-05-19 Nick Kledzik + + make dyld stubs smaller/faster + * Add new addSynthesizedAtoms() method to Writer, called before atoms are sorted + * Fix throwf() and warning() to check printf types + * Add arm::kPointerDiff12 to support fast arm stubs + * Add new ContentType values for stubs and (non)lazy pointers + * Add new variant of arm stub this is one instruction + + +2009-05-13 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: add warnings to dyldinfo target + * src/other/dyldinfo.cpp: support classic LINKEDIT format + + +2009-05-12 Nick Kledzik + + * src/ld/MachOWriterExecutable.hpp: fix optimization to skip branch islands with ARM bl instructions + + +2009-05-12 Nick Kledzik + + creation of __unwind_info section can fail if hundreds of functions cannot be compact encoded + * src/ld/MachOWriterExecutable.hpp: fix when to make regular vs compressed pages + + +2009-05-08 Nick Kledzik + + * src/ld/ld.cpp: enhance -save-temps to also write out optimized bitcode file + + +2009-05-08 Nick Kledzik + + * src/ld/ld.cpp: fix -order_file_statistics to print each symbol not found and correct total + + +2009-05-08 Nick Kledzik + + linker should be able to coalesce UTF16 strings + * src/ld/MachOReaderRelocatable.hpp: parse __ustring section by labels but synthesize an + atom name based on the content. Leverage for __cfstring section + * unit-tests/test-cases/cfstring-utf16: update test case + + +2009-05-07 Nick Kledzik + + * src/ld/MachOWriterExecutable.hpp: put branch islands further apart if there is no thumb code + + +2009-05-07 Nick Kledzik + + LINKEDIT optimizations for iPhone + * src/ld/ObjectFile.h: Recognize iPhoneOS 3.1 + * src/ld/Options.cpp: iPhoneOS 3.1 => use compressed LINKEDIT + * src/ld/MachOWriterExecutable.hpp: support generating compressed LINKEDIT for arm + + +2009-05-04 Nick Kledzik + + Add linker support for ARM branch islands + Add labels to linker synthesized jump islands + * src/ld/MachOWriterExecutable.hpp: reworked BranchIslandAtom and createBranchIslands to support arm/thumb + * src/ld/ObjectFile.h: added kBranchIsland + * unit-tests/test-cases/branch-islands: updated test case to check arm/thumb + + +2009-04-30 Nick Kledzik + + * src/ld/Options.cpp: fix custom stack base address for arm + + +2009-04-30 Nick Kledzik + + likely incorrect warning about common symbols + * src/ld/Options.cpp: ignore LD_WARN_COMMONS in -r mode + + +----- Tagged ld64-95.8.3 + +2009-03-31 Nick Kledzik + + ld might set MH_WEAK_DEFINES when it should not + * src/ld/MachOWriterExecutable.hpp: rescan fRegularDefAtomsThatOverrideADylibsWeakDef and only consider global ones + + +----- Tagged ld64-95.8.2 + +2009-03-18 Nick Kledzik + + * src/ld/MachOReaderRelocatable.hpp: back out -force_cpusubtype_ALL changes + + +----- Tagged ld64-95.8.1 + +2009-03-17 Nick Kledzik + + -dead_strip inhibits weak coalescing in no_dead_strip section + * src/ld/ld.cpp: in markDead() remove from fLiveRootAtoms + + +2009-03-17 Nick Kledzik + + libgcc fails to build in with ld64-95.8 + * src/ld/MachOReaderRelocatable.hpp: interpret CPU_SUBTYPE_ARM_ALL as CPU_SUBTYPE_ARM_V4T + * src/ld/Options.cpp: interept -force_cpusubtype_ALL as -arch armv4t + + +----- Tagged ld64-95.8 + +2009-02-09 Nick Kledzik + + ld64-95.7 crashes building Foundation-678.39 in side build + * src/ld/MachOReaderRelocatable.hpp: handle a zero length section with a label before __cstring section + + +----- Tagged ld64-95.7 + +2009-02-06 Nick Kledzik + + * src/ld/ObjectFile.h: make fAddCompactUnwindEncoding false by default + + +2009-02-06 Nick Kledzik + + ER: add linker option to zero fill empty DATA sections on disk + * src/ld/Options.cpp: add support for -no_zero_fill_sections + * src/ld/MachOReaderRelocatable.hpp: isZeroFill() is only true if fOptimizeZeroFill + * doc/man/man1/ld.1: document -no_zero_fill_sections + * unit-tests/test-cases/no_zero_fill_sections: add test case + + +2009-02-05 Nick Kledzik + + label getting resolved to the wrong address. + * src/ld/MachOWriterExecutable.hpp: add findAtomAndOffsetForSection() and use it to disambiguate + * unit-tests/test-cases/label-on-end-of-section: added test case + + +2009-01-27 Nick Kledzik + + Warn -force_cpusubtype_ALL is not supported + * src/ld/Options.cpp: warn if fForceSubtypeAll and fArchitecture is CPU_TYPE_ARM + + +----- Tagged ld64-95.6 + +2009-01-25 Nick Kledzik + + Add support for section start/end labels + * src/ld/ObjectFile.h: add kSectionStart and kSectionEnd + * src/ld/MachOReaderRelocatable.hpp: create SectionBoundaryAtoms as needed + * src/ld/ld.cpp: sort SectionBoundaryAtoms correctly + * src/ld/MachOWriterExecutable.hpp: allow all relocations in preload images + + +----- Tagged ld64-95.5 + +2009-01-15 Nick Kledzik + + * src/ld/MachOWriterExecutable.hpp: in hasPageCrossingBranches() ignore branches preceeded by a branch + + +----- Tagged ld64-95.4 + +2009-01-15 Nick Kledzik + + * src/ld/Options.cpp: handle -kext and -r the same for fPreventPageCrossingBranches + + +----- Tagged ld64-95.3 + +2009-01-14 Nick Kledzik + + linker should alter layout to prevent armv7 page crossing branches + * src/ld/Options.cpp: set fPreventPageCrossingBranches + * src/ld/MachOWriterExecutable.hpp: adjust layout of __text so there are not page crossing branches + * src/ld/MachOReaderRelocatable.hpp: support new ARM_THUMB_32BIT_BRANCH reloce + + +----- Tagged ld64-95.2.10 + +2009-04-02 Nick Kledzik + + corrupt metaclass entry in dynamic library + * src/ld/ld.cpp: change Section constructor to copy segment and section names + + +----- Tagged ld64-95.2.9 + +2009-04-02 Nick Kledzik + + Update ld64 for new triples introduced in 6654669 to support ARM LLVM + * src/ld/LTOReader.hpp: change "arm-" to "arm" so matching works for new triples + + +----- Tagged ld64-95.2.8 + +2009-03-24 Nick Kledzik + + anonymous functions have the compact unwind info computed wrong + * ld/MachOReaderRelocatable.hpp: use new compact unwind function in AnonymousAtom + + +----- Tagged ld64-95.2.7 + +2009-03-11 Nick Kledzik + + AddressBook incorrectly gets _objc_msgSend from WebKit + * src/ld/MachOReaderDylib.hpp: fix processIndirectLibraries() to not force a private re-export of a dylib + that is already explictly or implicitly linked. + * unit-tests/test-cases/re-export-optimizations-indirect: add test case + + +2009-03-10 Nick Kledzik + + dyld weak linking optimization leaves some symbols unbound + * src/ld/MachOWriterExecutable.hpp: be sure to create bind entry for a reference + to a symbol in a dylib that is a weak definition + * unit-tests/test-cases/coalesce_weak_def_in_dylib: add test case + + +2009-03-10 Nick Kledzik + + many OS i386 OS dylibs still have __IMPORT segment + * ld/MachOReaderRelocatable.hpp: moved where __IMPORT/__pointer is changed to __DATA/__nl_symbol_ptr + * unit-tests/test-cases/stripped-indirect-symbol-table: updated to test for this problem + + +----- Tagged ld64-95.2.6 + +2009-02-27 Nick Kledzik + + ld might set MH_WEAK_DEFINES when it should not + * src/ld/MachOWriterExecutable.hpp: only consider atoms in fRegularDefAtomsThatOverrideADylibsWeakDef + that will be exported when computing MH_WEAK_DEFINES + * unit-tests/test-cases/operator-new: updated to reproduce issue + + +----- Tagged ld64-95.2.5 + +2009-02-24 Nick Kledzik + + x86_64 obj-c runtime confused when static lib is stripped + * src/ld/MachOWriterExecutable.hpp: in setLocalNlist() don't use 'l' labels for x86_64 strings + * unit-tests/test-cases/objc-literal-pointers-strip: added test case + + +----- Tagged ld64-95.2.4 + +2009-02-23 Nick Kledzik + + * src/ld/MachOReaderRelocatable.hpp: ignore ARM_THUMB_32BIT_BRANCH relocs + + +2009-02-18 Nick Kledzik + + Writer::symbolIndex() uses a linear search and does not scale + * src/ld/MachOWriterExecutable.hpp: build a std::map so symbolIndex() scales better + + +2009-02-18 Nick Kledzik + + Use new compact encodings that handle all register permutations + * src/ld/Architectures.hpp: add kSectionOffset24 + * src/ld/ObjectFile.h: add getFDE() + * src/ld/MachOReaderRelocatable.hpp: use new libunwind functions to get new compact encoding + * src/ld/MachOWriterExecutable.hpp: use new compact encoding which includes offset in dwarf if needed + * src/other/unwinddump.cpp: update unwinddump output to display register save set + + +2009-02-16 Nick Kledzik + + runtime error with bundle for 10.5 that has weak external symols + * src/ld/ld.cpp: fix hybrid (10.5) compressed linkedit info for data pointing to weak definitions + + +2009-02-15 Nick Kledzik + + i386 relocation error with negative offsets from local labels + * src/ld/MachOReaderRelocatable.hpp: handle when base addr of scattered relocation does not point to a label + * unit-tests/test-cases/relocs-neg-from-local: add test case + + +2009-02-12 Nick Kledzik + + -dead_strip inhibits weak coalescing in no_dead_strip section + * src/ld/ld.cpp: remove atoms coalesced away from fLiveRootAtoms + * unit-tests/test-cases/dead_strip-weak-coalesce: added test case + + +2009-02-12 Nick Kledzik + + x86_64 weak_import broken for initialized data + * src/ld/MachOReaderRelocatable.hpp: use isWeakImportSymbol() in Reader::addRelocReference() + * src/other/dyldinfo.cpp: update to display weak_import attribute + * unit-tests/test-cases/weak_import: updated test case + + +2009-02-06 Nick Kledzik + + ld parsing of __eh_frame unwind information is slow + * src/ld/MachOReaderRelocatable.hpp: build a std::map of all __eh_frame relocations for x86_64 + + +----- Tagged ld64-95.2.3 + +2009-02-04 Nick Kledzik + + ld: warning: can't add line info to anonymous symbol + * src/ld/MachOReaderRelocatable.hpp: don't warn about line info in dyld stubs + + +----- Tagged ld64-95.2.2 + +2009-02-02 Nick Kledzik + + ld -r does not preserve the N_NO_DEAD_STRIP bit + * src/ld/MachOWriterExecutable.hpp: set N_NO_DEAD_STRIP based on dontDeadStrip() + * unit-tests/test-cases/dead_strip-r_symbol_desc: added test case + + +----- Tagged ld64-95.2.1 + +----- Tagged ld64-95.2.10 + +2009-04-02 Nick Kledzik + + corrupt metaclass entry in dynamic library + * src/ld/ld.cpp: change Section constructor to copy segment and section names + + +----- Tagged ld64-95.2.9 + +2009-04-02 Nick Kledzik + + Update ld64 for new triples introduced in 6654669 to support ARM LLVM + * src/ld/LTOReader.hpp: change "arm-" to "arm" so matching works for new triples + + +----- Tagged ld64-95.2.8 + +2009-03-24 Nick Kledzik + + anonymous functions have the compact unwind info computed wrong + * ld/MachOReaderRelocatable.hpp: use new compact unwind function in AnonymousAtom + + +----- Tagged ld64-95.2.7 + +2009-03-11 Nick Kledzik + + AddressBook incorrectly gets _objc_msgSend from WebKit + * src/ld/MachOReaderDylib.hpp: fix processIndirectLibraries() to not force a private re-export of a dylib + that is already explictly or implicitly linked. + * unit-tests/test-cases/re-export-optimizations-indirect: add test case + + +2009-03-10 Nick Kledzik + + dyld weak linking optimization leaves some symbols unbound + * src/ld/MachOWriterExecutable.hpp: be sure to create bind entry for a reference + to a symbol in a dylib that is a weak definition + * unit-tests/test-cases/coalesce_weak_def_in_dylib: add test case + + +2009-03-10 Nick Kledzik + + many OS i386 OS dylibs still have __IMPORT segment + * ld/MachOReaderRelocatable.hpp: moved where __IMPORT/__pointer is changed to __DATA/__nl_symbol_ptr + * unit-tests/test-cases/stripped-indirect-symbol-table: updated to test for this problem + + +----- Tagged ld64-95.2.6 + +2009-02-27 Nick Kledzik + + ld might set MH_WEAK_DEFINES when it should not + * src/ld/MachOWriterExecutable.hpp: only consider atoms in fRegularDefAtomsThatOverrideADylibsWeakDef + that will be exported when computing MH_WEAK_DEFINES + * unit-tests/test-cases/operator-new: updated to reproduce issue + + +----- Tagged ld64-95.2.5 + +2009-02-24 Nick Kledzik + + x86_64 obj-c runtime confused when static lib is stripped + * src/ld/MachOWriterExecutable.hpp: in setLocalNlist() don't use 'l' labels for x86_64 strings + * unit-tests/test-cases/objc-literal-pointers-strip: added test case + + +----- Tagged ld64-95.2.4 + +2009-02-23 Nick Kledzik + + * src/ld/MachOReaderRelocatable.hpp: ignore ARM_THUMB_32BIT_BRANCH relocs + + +2009-02-18 Nick Kledzik + + Writer::symbolIndex() uses a linear search and does not scale + * src/ld/MachOWriterExecutable.hpp: build a std::map so symbolIndex() scales better + + +2009-02-18 Nick Kledzik + + Use new compact encodings that handle all register permutations + * src/ld/Architectures.hpp: add kSectionOffset24 + * src/ld/ObjectFile.h: add getFDE() + * src/ld/MachOReaderRelocatable.hpp: use new libunwind functions to get new compact encoding + * src/ld/MachOWriterExecutable.hpp: use new compact encoding which includes offset in dwarf if needed + * src/other/unwinddump.cpp: update unwinddump output to display register save set + + +2009-02-16 Nick Kledzik + + runtime error with bundle for 10.5 that has weak external symols + * src/ld/ld.cpp: fix hybrid (10.5) compressed linkedit info for data pointing to weak definitions + + +2009-02-15 Nick Kledzik + + i386 relocation error with negative offsets from local labels + * src/ld/MachOReaderRelocatable.hpp: handle when base addr of scattered relocation does not point to a label + * unit-tests/test-cases/relocs-neg-from-local: add test case + + +2009-02-12 Nick Kledzik + + -dead_strip inhibits weak coalescing in no_dead_strip section + * src/ld/ld.cpp: remove atoms coalesced away from fLiveRootAtoms + * unit-tests/test-cases/dead_strip-weak-coalesce: added test case + + +2009-02-12 Nick Kledzik + + x86_64 weak_import broken for initialized data + * src/ld/MachOReaderRelocatable.hpp: use isWeakImportSymbol() in Reader::addRelocReference() + * src/other/dyldinfo.cpp: update to display weak_import attribute + * unit-tests/test-cases/weak_import: updated test case + + +2009-02-06 Nick Kledzik + + ld parsing of __eh_frame unwind information is slow + * src/ld/MachOReaderRelocatable.hpp: build a std::map of all __eh_frame relocations for x86_64 + + +----- Tagged ld64-95.2.3 + +2009-02-04 Nick Kledzik + + ld: warning: can't add line info to anonymous symbol + * src/ld/MachOReaderRelocatable.hpp: don't warn about line info in dyld stubs + + +----- Tagged ld64-95.2.2 + +2009-02-02 Nick Kledzik + + ld -r does not preserve the N_NO_DEAD_STRIP bit + * src/ld/MachOWriterExecutable.hpp: set N_NO_DEAD_STRIP based on dontDeadStrip() + * unit-tests/test-cases/dead_strip-r_symbol_desc: added test case + + +----- Tagged ld64-95.2.1 + +2009-01-29 Nick Kledzik + + gcc DejaGnu failure: building longcall/dylib library + * src/ld/MachOWriterExecutable.hpp: if no __DATA sections insert non-lazy pointers at end of __TEXT segment + * unit-tests/test-cases/no-data-bundle: added test case + + +----- Tagged ld64-95.2 + +2009-01-06 Nick Kledzik + + strip -S fails with "new trie is larger than original" + * src/other/PruneTrie.cpp: don't align trie more than original trie was aligned + + +----- Tagged ld64-95.1 + +2008-12-21 Nick Kledzik + + * src/ld/MachOWriterExecutable.hpp: in new linkedit format, make sure only exported symbols + make it into weak binding info + + +----- Tagged ld64-95 + +2008-12-18 Nick Kledzik + + * src/ld/Options.cpp: move check for fSharedRegionEligible until fPrebind has stabilized + + +2008-12-18 Nick Kledzik + + Generate new compressed LINKEDIT when targeting 10.6 + * src/ld/Options.cpp: turn on compressed LINKEDIT by default + + +----- Tagged ld64-94.1 + +2008-12-16 Nick Kledzik + + * src/ld/Options.cpp: Fix -F handling in buildSearchPaths() + + +----- Tagged ld64-94 + +2008-12-15 Nick Kledzik + + * doc/man/man1/ld.1: document new options + + +2008-12-15 Nick Kledzik + + linker should enforce all .o files have same sub-type, and ignore sub-type of dylibs + * doc/man/man1/ld.1: update man page about -allow_sub_type_mismatches + * src/ld/ld.cpp: call validFile() with new arguments + * src/ld/MachOReaderRelocatable.hpp: add new arguments to validFile() + * src/ld/Options.cpp: Support LD_ALLOW_CPU_SUBTYPE_MISMATCHES and -allow_sub_type_mismatches + + +2008-12-15 Nick Kledzik + + -syslibroot should skip standard search paths not in the SDK + * src/ld/Options.cpp: in buildSearchPaths() if an SDK is specified don't add + standard search paths not in the SDK. + + +2008-12-15 Nick Kledzik + + ld: remove "can't make compact unwind encoding" warning + * src/ld/ObjectFile.h: add fWarnCompactUnwind + * src/ld/Options.cpp: -warn_compact_unwind --> fWarnCompactUnwind + * src/ld/MachOReaderRelocatable.hpp: test fWarnCompactUnwind before warning + + +2008-12-15 Nick Kledzik + + Add dtrace usdt support for arm to ld64 + * src/ld/MachOWriterExecutable.hpp: handle arm::kDtraceIsEnabledSite + * unit-tests/test-cases/dtrace-static-probes: use is-enabled in test case + + +----- Tagged ld64-93 + +2008-12-11 Nick Kledzik + + * src/ld/ObjectFile.h: add fIPhoneVersionMin to track min iPhoneOS version + * src/ld/Options.cpp: use fIPhoneVersionMin + + +2008-12-11 Nick Kledzik + + non-lazy pointer to non-global tentative definition encoded wrong + * src/ld/MachOWriterExecutable.hpp: don't use INDIRECT_SYMBOL_LOCAL for tentative definitions + * unit-tests/test-cases/non-lazy-r: updated test case + + +2008-12-11 Nick Kledzik + + kernel fails to boot when ld64 used for intermediate ld -r step + * src/ld/MachOWriterExecutable.hpp: in -r mode when generating a scattered sect-diff reloc for + i386/arm, special case when from target is not the atom + the relocation is in. + * unit-tests/test-cases/relocs-asm: update test case + + +2008-12-11 Nick Kledzik + + * src/ld/ld.cpp: handle new __program_vars section + * src/ld/MachOWriterExecutable.hpp: handle inserting synthesized sections when there is no __dyld section + + +2008-12-11 Nick Kledzik + + * src/ld/MachOReaderRelocatable.hpp: Fix getDescription() to work when direct reference is to anonymous atom + + +2008-12-10 Nick Kledzik + + * src/ld/Options.cpp: enable LD_FORCE_NO_PREBIND to be used with arm + + +2008-12-10 Nick Kledzik + + Developer tool to print the new compressed LINKEDIT information + * src/other/dyldinfo.cpp: fix typo in usage() + + +2008-12-05 Nick Kledzik + + SnowLeopard kernel should compile warning free + * src/ld/MachOReaderRelocatable.hpp: correct parse two global labels at end of section and make one an alias + * unit-tests/test-cases/end-label: update test case + + +2008-12-04 Nick Kledzik + + Better warning than "PPC_RELOC_JBSR should not be using an external relocation" + * src/ld/MachOReaderRelocatable.hpp: issue warning with .o path if it was compiled with -mlong-branch + + +2008-12-04 Nick Kledzik + + linker should not map __pointers -> __nl_symbol_ptr unless actually making new LINKEDIT + * src/ld/ObjectFile.h: add fMakeCompressedDyldInfo for readers to see + * src/ld/Options.cpp: set fMakeCompressedDyldInfo for readers to see + * src/ld/MachOReaderRelocatable.hpp: check fMakeCompressedDyldInfo + + +2008-12-02 Nick Kledzik + + * src/ld/debugline.c: fix error handling in line_open() + + +2008-11-26 Nick Kledzik + + vtable with thumb entries broke after ld -r + * src/ld/MachOReaderRelocatable.hpp: if target of reloc is thumb, mask thumb bit off addend + * unit-tests/test-cases/thumb-pointer: added test case + + +2008-11-26 Nick Kledzik + + * src/ld/Option.cpp: Fix how crashreporterBuffer is created to not miss some arguments + + +2008-11-24 Nick Kledzik + + Security.framework has some duplicate FDEs for some functions + * src/ld/ld.cpp: remove fDeadAtoms from fLiveAtoms when there are weak atoms overriden by late loads + * unit-tests/test-cases/dead_strip-archive-eh: added test case + + +----- Tagged ld64-92 + +2008-11-21 Nick Kledzik + + * src/ld/MachOReaderDylib.hpp: if export_size is zero, no need to parse trie + * src/abstraction/MachOTrie.hpp: gracefully handle empty trie + + +2008-11-21 Nick Kledzik + + strip(1) support for new compressed LINKEDIT information + * ld64.xcodeproj/project.pbxproj: build and install new libprunetrie.a + * src/other/prune_trie.h: added + * src/other/PruneTrie.cpp: implements prune_trie() + + +2008-11-21 Nick Kledzik + + * src/ld/ld.cpp: if an export file is used and all weak symbols are masked, don't set WEAK_DEFINES + * unit-tests/test-cases/weak-def-flag: added test case + + +2008-11-20 Nick Kledzik + + Generate new compressed LINKEDIT when targeting 10.6 + * src/ld/MachOWriterExecutable.hpp: support generating new compressed format + * src/ld/MachOReaderRelocatable.hpp: new compress format implies non-lazy pointers in __DATA for i386 + * src/ld/MachOReaderDylib.hpp: support linking aginst new format + * src/ld/Options.cpp: suppport -exported_symbols_order and -no_compact_linkedit + * src/ld/ld.cpp: track which atoms have weak counter parts in dylibs + * src/other/dyldinfo.cpp: added tool to display new LINKEDIT format + * ld64.xcodeproj/project.pbxproj: add dyldinfo tool + * unit-tests/*: lots of fixes to work with new format + + +2008-11-20 Nick Kledzik + + ld64 should preserve N_WEAK_REF when linking MH_KEXT_BUNDLEs + * src/ld/MachOWriterExecutable.hpp: set up fWeakImportMap in synthesizeKextGOT() + + +2008-11-19 Nick Kledzik + + VideoToolbox.framework has bad __TEXT.__eh_frame info + * src/ld/Options.cpp: add -no_eh_labels option for use with -r + * src/ld/MachOWriterExecutable.hpp: generate correct x86_64 labeless relocs in -r mode + * src/ld/MachOReaderRelocatable.hpp: now ignore all labels and relocations in + __TEXT/__eh_frame section and rely on getCFIs() from libunwind + * unit-tests/test-cases/eh-coalescing-no-labels: add test case + + +2008-11-19 Nick Kledzik + + LTO doesn't like dtrace symbols + * src/ld/LTOReader.hpp: ignore __dtrace_probe undefines in bitcode files + + +2008-11-14 Nick Kledzik + + * src/abstraction/MachOFileAbstraction.hpp: fix to work with 10.5 headers + + +----- Tagged ld64-91 + +2008-11-07 Nick Kledzik + + Remove COMPACT_UNWIND_SUPPORT conditionalizing + + +2008-11-06 Nick Kledzik + + Reorganize source layout. ld sources are now in "ld", + and other tools are in "other". + + +2008-11-05 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: start installing unwinddump tool + * src/UnwindDump.cpp: support -arch option + * doc/man/man1/unwinddump.1: create man page + + +2008-11-05 Nick Kledzik + + linker should put cpusubtype in n_sect field of nlist entry for N_OSO debug note entries + * src/ld.cpp: in synthesizeDebugNotes() set other field of OSO to be subtype + + +2008-11-05 Nick Kledzik + + Need a linker option to load all objects from one library + * src/Options.cpp: support -force_load option + * src/ArchiveReader.hpp: Add fForceLoad ivar + * doc/man/man1/ld.1: update man page with -force_load option + * unit-tests/test-cases/archive-force-load: add test case + + +2008-11-05 Nick Kledzik + + Dtrace Probe Warnings: SnowLeopard kernel should compile warning free + * src/ld.cpp: don't generate GSYM stabs for old style __dtrace_probe + * src/MachOReaderRelocatable.hpp: fix test for deciding if a symbol is an alias + + +2008-11-04 Nick Kledzik + + ADOBE: XCODE: ld: duplicate typeinfo in executable + * src/ld.cpp: in dead-strip mode, record overriden symbols and later rebind all uses + * unit-tests/test-cases/dead_strip-archive-weak: add test case + + +2008-11-03 Nick Kledzik + + support increased branch range in Thumb-2 + * src/MachOReaderRelocatable.hpp: handle full branch range in addRelocReference() + * unit-tests/test-cases/branch-distance: added test case + +2008-10-31 Devang Patel + + Sqlite 3.5.4 built with lvm-gcc-4.2 -O4 fails regression test + * src/LTOReader.hpp: Use real atom scope when real atom is available. + Preserve globals while optimizing an executable. + +2008-10-30 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: support all encodings in getEncodedP() + + +----- Tagged ld64-90 + +2008-10-30 Nick Kledzik + + icc has dwarf unwind info that is different than gcc + * src/MachOReaderRelocatable.hpp: support more encodings in getEncodedP() + + +2008-10-23 Nick Kledzik + + build ld64 for x86_64 + * ld64.xcodeproj/project.pbxproj: add X86_64 to valid archs + + +2008-10-23 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: use generated @$(DERIVED_FILE_DIR)/linker_opts for extra + linker options. This allows linker to be built if LTO headers and libs are missing. + + +2008-10-23 Nick Kledzik + + Linker warning not shown in the Xcode build log + * src/Options.cpp: add colon to format string in warning() + + +----- Tagged ld64-89.3 + +2008-10-24 Nick Kledzik + + ld64-89 broke TOT OpenGL libProgrammability x86_64 build + * src/MachOReaderRelocatable.hpp: add cast in getEncodedP() + + +----- Tagged ld64-89.2 + +2008-10-23 Nick Kledzik + + SnowLeopard: Libsystem built with ld64-89.1 causes crashes + * src/MachOReaderRelocatable.hpp: when FDE information causes __text atom to be split, make the + atoms follow-on pairs. + + +----- Tagged ld64-89.1 + +2008-10-22 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: for x86_64 __eh_frame force direct references + + +2008-10-21 Nick Kledzik + + * src/ObjectDump.cpp: Use getContentType() to see if content type is a cstring + + +----- Tagged ld64-89 + +2008-10-21 Nick Kledzik + + 10A180 with QT-1119 roots: iTunes and QuickTime cannot play back purchased videos + linker should not need .eh labels + * src/MachOWriterExecutable.hpp: use kCFIType to set section attributes + * src/MachOReaderRelocatable.hpp: use libunwind's CFITuple to parse __eh_frame content + * src/ld.cpp: Add adjustScope() phase instead of demoting scope within symboltable.add() + * unit-tests/test-cases/eh-stripped-symbols: added test case + + +----- Tagged ld64-88.1 + +2008-10-16 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: Fix uses of COMPACT_UNWIND_SUPPORT + * src/MachOWriterExecutable.hpp: Fix uses of COMPACT_UNWIND_SUPPORT + + +2008-09-30 Nick Kledzik + + OBJC2: Reorder __DATA,__objc_* sections by writedness + * src/ld.cpp: change sorting order of Sections + + +2008-09-29 Nick Kledzik + + Executable produced by XCode 3.2 on 10.6 crashes on 10.3.9 + * src/MachOWriterExecutable.hpp: set objc_module_info_addr field of module table + + +----- Tagged ld64-88 + +2008-09-25 Nick Kledzik + + kexts need to be built as MH_BUNDLE mach-o files + * src/ld.cpp: use getUndefinedProxyAtom() with kKextBundle + * src/MachOFileAbstraction.hpp: add MH_KEXT_BUNDLE + * src/Options.cpp: support -kext for all architectures + * src/MachOWriterExecutable.hpp: support kKextBundle to make a bundle like kext + * unit-tests/test-cases/kext-basic: added test case + + +2008-09-25 Nick Kledzik + + ld invoking wrong ld_classic + * src/Options.cpp: first look for ld_classic relative to ld itself + + +2008-09-25 Nick Kledzik + + ld fails to link references from 32 bit code into 64 bit code + Desired 32-bit absolute relocation + * src/Architectures.hpp: add x86_64::kPointer32 + * src/MachOReaderRelocatable.hpp: support X86_64_RELOC_UNSIGNED with length=2 + * src/MachOWriterExecutable.hpp: support x86_64::kPointer32 + * unit-tests/test-cases/relocs-asm/relocs-asm.s: added 32-bit pointer tests + + +2008-09-25 Nick Kledzik + + Should be able to mark dylibs as auto-dead-dylib-strip + * src/Options.h: add fMarkDeadStrippableDylib + * src/MachOReaderDylib.hpp: check MH_DEAD_STRIPPABLE_DYLIB + * src/ObjectFile.h: add deadStrippable() + * src/MachOFileAbstraction.hpp: add MH_DEAD_STRIPPABLE_DYLIB + * src/Options.cpp: support -mark_dead_strippable_dylib + * src/MachOWriterExecutable.hpp: test reader->deadStrippable(), set MH_DEAD_STRIPPABLE_DYLIB + * doc/man/man1/ld.1: update man page + * unit-tests/test-cases/dead_strippable_dylib: added test case + + +2008-09-25 Nick Kledzik + + ER: Add -seg_page_size option + * src/Options.cpp: add -seg_page_size option + * src/MachOWriterExecutable.hpp: use new page size info when laying out segments + * doc/man/man1/ld.1: update man page + + +2008-09-24 Nick Kledzik + + -arch_errors_fatal not working + * src/ld.cpp: check fOptions.errorOnOtherArchFiles() + * src/Options.cpp: turn -arch_errors_fatal into fOptions.errorOnOtherArchFiles() + + +2008-09-24 Nick Kledzik + + CrashTracer: [USER] 1 crash in ld at ld: 0x5ce02 + * src/ld.cpp: abort if resolve() finds an unresolved reference, rather than allow a future crash + + +2008-09-24 Nick Kledzik + + linker crashes linking X86-64 with -fwritable-strings + * src/MachOReaderRelocatable.hpp: handle unbound cfstring references + * unit-tests/test-cases/cfstring-coalesce: update test case + + +2008-09-24 Nick Kledzik + + ld64: bl out of range (-17147704 max is +/-16M) on ppc + * src/MachOWriterExecutable.hpp: tweak branch island regions to be every 14MB instead of 15MB + + +2008-09-24 Nick Kledzik + + -filelist fails with comma in path + * src/Options.cpp: in loadFileList() first try without special comma meaning + * unit-tests/test-cases/filelist/Makefile: update test case + + +2008-09-23 Nick Kledzik + + nop not used when aligning functions in -r mode + * src/MachOWriterExecutable.hpp: change check for when to pad with nops to not test segment's name + + +2008-09-23 Nick Kledzik + + "-pie can only be used when linking a main executable" should be a warning, not an error + * src/Options.cpp: make -pie on a dylib or bundle be a warning instead of an error + + +2008-09-23 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: add warning if dwarf cannot be encoded as compact unwind + + +2008-09-18 Nick Kledzik + + * src/LTOReader.hpp: re-enable use of lto_codegen_debug_options() + + +2008-09-16 Nick Kledzik + + ld does not always set S_CSTRING_LITERALS on __TEXT,__cstring + * src/MachOReaderRelocatable.hpp: add getContentType() to SymbolAtom + * src/MachOWriterExecutable.hpp: for x86_64 don't override named cstrings with LC* name + + +2008-09-10 Nick Kledzik + + * Options.cpp: add __crashreporter_info__ to communicate command line to crash reporter + * ld64.xcodeproj/project.pbxproj: leave local symbols in ld to provide better crash reports + + +2008-09-08 Nick Kledzik + + 161569 GCC 4.2 - breakpoints no longer work for a large number of functions + * src/MachOReaderRelocatable.hpp: support DW_FORM_strp out-of-line strings when parsing line table + + +2008-09-02 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: fix compact unwind personality for dyld and -slow_stubs + + +2008-08-29 Nick Kledzik + + -weak_library no longer forces uses to be weak_import + * src/MachOWriterExecutable.hpp: use fWeakImport on dylib to force proxy atoms into fWeakImportMap + * unit-tests/test-cases/weak_import-force: added test case + + +2008-08-29 Nick Kledzik + + linker should order __DATA segment to reduce dyld dirtied pages + * src/Options.cpp: add fOrderData and support -no_data_order + * src/ld.cpp: modify tweakLayout() to sort atoms with relocations to start of __data section + + +2008-08-27 Nick Kledzik + + * src/Options.cpp: back out + + +----- Tagged ld64-87.5 + +2008-08-26 Nick Kledzik + + some projects show _Unwind_Resume coming from libSystem.B.dylib + * src/Options.cpp: swap any early symlinks to libSystem with libgcc_s + + +----- Tagged ld64-87.4 + +2008-08-25 Nick Kledzik + + some projects show _Unwind_Resume coming from libSystem.B.dylib + * src/Options.cpp: swap any early libSystem with libgcc_s + + +2008-08-15 Nick Kledzik + + Unable to build ppc debug builds (linker out of range error) + * src/MachOWriterExecutable.hpp: in addPPCBranchIslands() look ahead so large atoms don't push out branch islands + + +----- Tagged ld64-87.3.1 + +2008-09-08 Nick Kledzik + + i386 dylibs have incorrect personality pointers when put in dyld shared cache + * src/MachOWriterExecutable.hpp: in addCrossSegmentRef() handle kImageOffset32 to __IMPORT segment + + +----- Tagged ld64-87.3 + +2008-08-09 Nick Kledzik + + work around compiler gcc_except_table alignment + * src/ObjectFile.h: change getLSDA() to return a reference instead of an atom + * src/MachOReaderRelocatable.hpp: special case __eh_frame 64-bit pointer diff relocations + * src/MachOWriterExecutable.hpp: track lsda offset when creating __unwind_info section + * src/UnwindDump.cpp: log when LDSA content does not start with 0xFF + +----- Tagged ld64-87.2 + +2008-08-07 Nick Kledzik + + 10A141: libuwind falls back to dwarf and makes whole system super slow + * src/MachOWriterExecutable.hpp: Fix sign extension bug with x86_64::kPointerDiff24 + * src/UnwindDump.cpp: warn about mangled LSDA entries when dumping unwind section + + +----- Tagged ld64-87.1 + +2008-08-03 Nick Kledzik + + * src/LTOReader.hpp: Don't use lto_codegen_debug_options until newer libLTO.dylib is available + + +----- Tagged ld64-87 + +2008-07-21 Nick Kledzik + + * src/Options.cpp: Always set fAutoOrderInitializers=false for dyld + + +2008-07-21 Nick Kledzik + + * src/MachOWriterExecutable.hpp: fix when regular vs compressed __unwind_info pages are generated + * src/UnwindDump.cpp: fix function name decoding in regular pages + + +2008-07-21 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: don't allow ld to build for x86_64 until libdtrace.dylib is available + + +2008-07-18 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: don't crash if debug_line section has no line table + + +2008-07-18 Nick Kledzik + + Duplicate probe firings in Security.framework + * src/LTOReader.hpp: optimize() now returns atoms optimized away + * src/ObjectFile.h: optimize() should return if it did anything + * src/ArchiveReader.hpp: pass through optimize() result + * src/ld.cpp: rework dtrace probe processing as a new pass to prevent double counting + + +2008-07-15 Nick Kledzik + + automatically order initializers to start of __TEXT + * src/Options.cpp: add -no_order_inits option + * src/MachOReaderRelocatable.hpp: merge __StaticInit into __text + * src/ObjectFile.h: add fAutoOrderInitializers + * src/ld.cpp: sort initializer to start of __text and terminators to end + * doc/man/man1/ld.1: add doc about -no_order_inits + * unit-tests/test-cases/init-order: add test case + +2008-07-15 Nick Kledzik + + Only add LC_SEGMENT_SPLIT_INFO to dylibs that might be in the shared cache + * src/MachOWriterExecutable.hpp: re-layout load commands after split-seg data computed + * src/Options.cpp: non-public install name will disable split-seg load command + + +2008-07-14 Nick Kledzik + + ld -r for x86_64 is changing visibility of cstring constants + * src/MachOWriterExecutable.hpp: force x86_64 cstring labels to be local in -r mode + * unit-tests/test-cases/cstring-label: added test case + + +2008-07-11 Nick Kledzik + + ld not adding updating LC_SEGMENT_SPLIT_INFO with __unwind_info section + * src/MachOWriterExecutable.hpp: run createSplitSegContent() after __unwind_info section is created + +2008-07-10 Nick Kledzik + + * src/LTOReader.hpp: improve missing symbol error message + + +2008-07-09 Nick Kledzik + + linker should order __DATA segment to reduce dyld dirtied pages + * src/ld.cpp: first phase, order sections + + +2008-07-08 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: remove "coal" sections when creating a final linked image + + +2008-07-08 Nick Kledzik + + ld: add support for mllvm LTO options + * src/Options.cpp: support -mllvm option + * src/LTOReader.hpp: call lto_codegen_debug_options() with -mllvm options + * src/ld.cpp: pass llvmOptions to optimize() + * src/Options.h: add fLLVMOptions + * src/ArchiveReader.hpp: add llvmOptions parameter to optimize() + * src/ObjectFile.h: add llvmOptions parameter to optimize() + * unit-tests/test-cases/lto-llvm-options: add test case + + +2008-07-07 Nick Kledzik + + Linker fails with: 24-bit pointer diff out of range in unwind info in unwind info from... + * src/MachOWriterExecutable.hpp: fix when to fallback to uncompressed unwind info + + +2008-07-03 Nick Kledzik + + ld crash with gcc-4.0 code that uses a zero sized array + * src/MachOReaderRelocatable.hpp: handle zero size atom in a zero sized section + + +2008-07-03 Nick Kledzik + + ld crashes when bad ppc relocs are found + * src/MachOReaderRelocatable.hpp: change all missing PAIR warnings to errors + + +2008-07-02 Nick Kledzik + + when linking a kext the static linker should leave a pad in the headers to allow code signing + * src/MachOWriterExecutable.hpp: add padding for load commands in object files + * unit-tests/test-cases/code-signed-object-file: added test case + + +2008-07-02 Nick Kledzik + + LC_SEGMENT_64 filesize incorrect for MH_OBJECT filetype + * src/MachOWriterExecutable.hpp: correctly set segment size info in object files + * unit-tests/test-cases/no-object-symbols: add test case + + +2008-06-26 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: enable ld and rebase targets to build for x86_64 + * src/rebase.cpp: remove unused fRelocBase field that was not 64-bit clean + * src/MachOReaderRelocatable.hpp: fix getEncodedP() to be 64-bit clean + + +----- Tagged ld64-86.3 + +2008-06-17 Nick Kledzik + + * src/ld.cpp: fix loadUndefines() to double check undefine symbol was not already loaded + + +----- Tagged ld64-86.2 + +2008-06-14 Nick Kledzik + + * srd/ld.cpp: Add NULL check in getTentativesNames() + + +----- Tagged ld64-86.1 + +2008-06-06 Nick Kledzik + + * src/MachOWriterExecutable.hpp: fix header padding calculation for dyld + + +----- Tagged ld64-86 + +2008-06-04 Nick Kledzik + + * src/LTOReader.hpp: if lto_codegen_add_module() fails, add explanation to error message + + +2008-06-04 Nick Kledzik + + * src/ObjectFile.h: add deadAtoms parameter to optimize() + * src/ld.cpp: ditto + * src/ArchiveReader.hpp: ditto + * src/MachOReaderRelocatable.hpp: handle llvm use of 0x1B pointer encodings in CIEs + * src/LTOReader.hpp: make sure libLTO.dylib knows about any llvm symbol coalesced away + * unit-tests/test-cases/lto-weak-native-override: add test case + + +2008-06-04 Nick Kledzik + + LTO : 176.gcc and 177.mesa build failure at -O4 + * src/LTOReader.hpp: make sure internal is returned by getAtoms() + * unit-tests/test-cases/lto-archive-dylib: update test case + + +2008-06-03 Nick Kledzik + + fix for 5613343 need to search for definitions for common symbols is broken + * src/ld.cpp: modify loadUndefines() to check for undefines in all files and tentative definitions but only in archives + * src/machochecker.cpp: check for undefine symbols and external symbols with same name + * unit-tests/test-cases/tentative-and-archive: update test case + + +2008-06-03 Nick Kledzik + + linker produces wrong result for 16-bit call relocations + * src/MachOReaderRelocatable.hpp: properly parse i386 scattered relocs for word sized pc-rel vanilla + * src/MachOWriterExecutable.hpp: propery compute displacement for x86::kPCRel16 + * unit-tests/test-cases/relocs-asm: update test case with callw instructions + + +2008-06-03 Nick Kledzik + + Building kext x86_64 with unexported symbols file causes linking problems + * src/MachOWriterExecutable.hpp: better check when creating undefined proxy atoms + * unit-tests/test-cases/unexported_symbols_list-r: added test case + + +2008-06-02 Nick Kledzik + + S_CSTRING_LITERALS section type not preserved in executable + * src/ObjectFile.h: added ContentType + * src/MachOReaderRelocatable.hpp: set ContentType for anonymous string literals + * src/MachOWriterExecutable.hpp: set S_CSTRING_LITERALS if ContentType is kCStringType + * unit-tests/test-cases/cstring-custom-section: added test case + + +2008-06-02 Nick Kledzik + + linker should produce __unwind_info section in final linked images + * src/ld.cpp: sort __unwind_info then __eh_frame section to end of __TEXT + * src/Architectures.hpp: add kImageOffset32 and kPointerDiff24 + * src/ObjectFile.h: add compact unwind info support + * src/MachOReaderRelocatable.hpp: add compact unwind info support + * src/MachOFileAbstraction.hpp: add C++ wrappers for unwind section layout + * src/UnwindDump.cpp: new tool for dumping __unwind_info section + * src/MachOWriterExecutable.hpp: create __unwind_info section when needed + * src/ObjectDump.cpp: print unwind info + + +2008-06-02 Nick Kledzik + + * unit-tests/test-cases/llvm-integration: split out some test cases + * unit-tests/test-cases/lto-preload-pie: added + * unit-tests/test-cases/lto-archive-dylib: added + + +2008-05-30 Nick Kledzik + + * unit-tests: fixes to build all tests with with gcc-4.2 on SnowLeopard + + +2008-05-30 Nick Kledzik + + support -preload option to generate MH_PRELOAD binaries compatible with mtoc(1) and EFI + * src/ld.cpp: add entryPoint parameter to optimize() + * src/ArchiveReader.hpp: ditto + * src/ObjectFile.h: ditto + * src/LTOReader.hpp: use entryPoint parameter to optimize() + * src/Options.h: add kPreload and segment alignment + * src/Options.cpp: support -preload and -segalign + * src/MachOWriterExecutable.hpp: support kPreload and non-page aligned segments + + +2008-05-30 Nick Kledzik + + ld should warn if passed -r and also dylibs + * src/ld.cpp: check for spurious dylibs in Linker::addDylib() + + +----- Tagged ld64-85.6 + +2008-11-01 Nick Kledzik + + support increased branch range in Thumb-2 + * src/MachOWriterExecutable.hpp: in fixUpReferenceFinal() support new longer branch range + + +2008-11-01 Nick Kledzik + + ld warning: unknown option to -iphoneos_version_min, not 1.x or 2.x + * src/Options.cpp: In setIPhoneVersionMin() support 3.x + + +----- Tagged ld64-85.5 + +2008-09-17 Nick Kledzik + + vtable pointers can be missing thumb bit + * src/MachOWriterExecutable.hpp: Writer::fixUpReferenceFinal() OR in the 1 bit if the target + of a arm::kReadOnlyPointer is thumb. + + +----- Tagged ld64-85.4 + +2008-08-11 Nick Kledzik + + ld should ignore LD_PREBIND when processing a static archive + * src/MachOWriterExecutable.hpp: in setImportNlist() never use N_PBUD for object files + +----- Tagged ld64-85.3 + +2008-07-14 Nick Kledzik + + Prebinding busted in DTSB + * src/Options.cpp: check for libstdc++.6.0.[49] in seg_addr_table + + +----- Tagged ld64-85.2 + +2008-05-06 Nick Kledzik + + ARM ld should take W bit off of maxprot for __TEXT segment + * src/MachOWriterExecutable.hpp: for iPhone always set maxprot to be initprot in all segments + + +2008-05-06 Nick Kledzik + + encryptable images may not be signable + * src/MachOWriterExecutable.hpp: use minimum header padding when aligning __text section + + +----- Tagged ld64-85 (Xcode 3.1) + +2008-04-29 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: is moving from /usr/local/include to /Developer/usr/local/include + + +2008-04-29 Nick Kledzik + + ld doesn't honor "rightmost" -syslibroot argument + * src/Options.cpp: if last -syslibroot is /, then ignore all syslibroots + + +2008-04-29 Nick Kledzik + + GLRendererFloat has bad __eh_frame section caused by mixing llvm-gcc and gcc object files + * src/MachOReaderRelocatable.hpp: make all atoms in __eh_frame section have 1-byte alignment + * src/MachOWriterExecutable.hpp: make __eh_frame section have pointer sized alignment + + +2008-04-17 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: better cpu subtype support + + +2008-04-14 Nick Kledzik + + ld64 has bad ARM branch island check + * src/MachOWriterExecutable.hpp: in addBranchIslands() don't force large arm programs to fail + + +2008-04-10 Nick Kledzik + + * src/MachOWriterExecutable.hpp: fix stubs used with lazy dylibs + + +----- Tagged ld64-84.4 + +2008-04-10 Nick Kledzik + + SPEC2000/eon built with -mdynamic-no-pic won't run + * src/Architectures.hpp: added arm::kReadOnlyPointer + * src/MachOReaderRelocatable.hpp: generate arm::kReadOnlyPointer + * src/MachOWriterExecutable.hpp: use arm::kReadOnlyPointer + * src/machochecker.cpp: allow MH_PIE bit + * unit-tests/test-cases/switch-jump-table: added test cases + + +----- Tagged ld64-84.3 + +2008-04-09 Nick Kledzik + + -undefined dynamic_lookup busted + * src/ld.cpp: don't create proxy atom when scanning for dylib duplicates + * unit-tests/test-cases/tentative-and-archive: use -undefined dynamic_lookup + + +----- Tagged ld64-84.2 + +2008-04-04 Nick Kledzik + + * src/ld.cpp: don't add .eh symbols to symbol table in -r mode + * unit-tests/test-cases/eh-coalescing-r: update to test out of order coalescing + + +----- Tagged ld64-84.1 + +2008-03-28 Nick Kledzik + + ld should prefer architecture-specific variant over generic in fat object file + * src/Options.cpp: fully process -arch arguments into fArchitecture and fSubArchitecture + * src/ld.cpp: when -arch with a subtype is used, try to find the exact subtype from fat files + * unit-tests/test-cases/cpu-sub-types-preference: added test cases for arm and ppc + + +----- Tagged ld64-84 + +2008-03-28 Nick Kledzik + + * src/LTOReader.hpp: don't print lto version, if lto is unavailable + + +2008-03-26 Nick Kledzik + + Add LD_WARN_COMMONS to BigBear builds + * src/Options.cpp: Add support for LD_WARN_FILE which copies all warnings to a side file + + +2008-03-26 Nick Kledzik + + Need encryption tag in mach-o file + linker should adjust arm final linked images so __text is never on the same page as the load commands + * src/MachOFileAbstraction.hpp: add support for encryption_info_command + * src/Options.cpp: add support for LD_NO_ENCRYPT and -no_encryption + * src/MachOWriterExecutable.hpp: add EncryptionLoadCommandsAtom + * src/machochecker.cpp: validate LC_ENCRYPTION_INFO + + +2008-03-25 Nick Kledzik + + ld64 does not recognize LLVM bitcode archive files + * src/MachOReaderArchive.hpp: renamed to src/ArchiveReader.hpp + * src/ArchiveReader.hpp: sniff each member and instantiate correct reader + * src/ld.cpp: rename mach_o::archive::Reader to archive::Reader + * ld64.xcodeproj/project.pbxproj: rename MachOReaderArchive.hpp to ArchiveReader.hpp + * unit-tests/test-cases/llvm-integration: added test case + + +2008-03-25 Nick Kledzik + + ld64 should switch to new libLTO.dylib interface + Produce llvm bc file in 'ld -r' mode if all .o files are llvm bc + * src/LTOReader.hpp: rewrite from LLVMReader.hpp to use new lto_* C interface + * unit-tests/test-cases/llvm-integration: update and comment + * ld64.xcodeproj/project.pbxproj: update to lazy load libLTO.dylib + * src/ld.cpp: rework and simplify Linker::optimize() + * src/ObjectDump.cpp: Add -nm option + + +2008-03-25 Nick Kledzik + + * src/MachOReaderRelocatable.cpp: Fix some .objc_class_name_ off by one problem + * src/MachOWriterExecutable.cpp: Fix some .objc_class_name_ off by one problem + + +2008-03-24 Nick Kledzik + + Xcode 3.1 breaks linkage of libgcj.9.dylib from gcc 4.3.0 + * src/MachOWriterExecutable.cpp: Make sure all ivars in Writer are initialized. + + +2008-03-21 Nick Kledzik + + * src/Options.cpp: warn if -seg1addr value is not page aligned + + +2008-03-21 Nick Kledzik + + Move ARM support outside of __OPEN_SOURCE__ + * src/ld.cpp: remove __OPEN_SOURCE__ around arm support + * src/LLVMReader.hpp: remove __OPEN_SOURCE__ around arm support + * src/MachOReaderDylib.hpp: remove __OPEN_SOURCE__ around arm support + * src/ObjectFile.h: remove __OPEN_SOURCE__ around arm support + * src/MachOReaderRelocatable.hpp: remove __OPEN_SOURCE__ around arm support + * src/OpaqueSection.hpp: Cover arm support inside __OPEN_SOURCE__ macro check + * src/MachOWriterExecutable.hpp: remove __OPEN_SOURCE__ around arm support + * src/ObjectDump.cpp: remove __OPEN_SOURCE__ around arm support + * ld64.xcodeproj/project.pbxproj: remove ARM_SUPPORT from config.h + + +----- Tagged ld64-83.2 + +2008-03-15 Nick Kledzik + + ld64-83 removes OBJC_CLASS_$ symbols from projects, causes catastrophic results + * src/Options.cpp: restore "case CPU_TYPE_ARM" in switch statement for .objc_class symbols in .exp files + * unit-tests/test-cases/objc-exported_symbols_list: added test case + + +----- Tagged ld64-83.1 + +2008-03-14 Nick Kledzik + + -iphone_version_min ==> -iphoneos_version_min + * src/Options.cpp: support -iphoneos_version_min as well + + +----- Tagged ld64-83 + +2008-03-10 Nick Kledzik + + ld needs to strip iphone_version_min option if invoking ld_classic + * src/Options.cpp: suppress -iphone_version_min from being passed to ld_classic + + +2008-03-04 Nick Kledzik + + ADOBE XCODE: Linker option to lazy load frameworks (cause dyld is too slow) + * src/MachOWriterExecutable.hpp: create lazy stubs and LC_LAZY_LOAD_DYLIB for lazy load dylibs + * src/Options.cpp: support -lazy-l, -lazy_library, and -lazy_framework + * src/MachOFileAbstraction.hpp: add LC_LAZY_LOAD_DYLIB and S_LAZY_DYLIB_SYMBOL_POINTERS until in cctools + * src/MachOReaderDylib.hpp: add isLazyLoadedDylib() + * src/ld.cpp: pass lazy helper atom to writer + * doc/man/man1/ld.1: document new options + * unit-tests/test-cases/lazy-dylib-objc: add test case + * unit-tests/test-cases/lazy-dylib: add test case + + +----- Tagged ld64-82.7 + +2008-03-07 Nick Kledzik + + duplicate symbol literal-pointer@__OBJC@__message_refs@... + * src/MachOReaderRelocatable.hpp: AnonymousAtom from S_LITERAL_POINTERS section should be weak + * unit-tests/test-cases/objc-selector-coalescing: added test case + + +----- Tagged ld64-82.6 + +2008-03-04 Nick Kledzik + + ld crashes building XsanFS for Snow Leopard Builds + * src/ld.cpp: add bool dylibsOnly parameter to addJustInTimeAtoms() + * unit-tests/test-cases/tentative-and-archive: added test case + +2008-03-04 Nick Kledzik + + ld64 should not force building with gcc 4.0 + * ld64.xcodeproj/project.pbxproj: change rules to use "system" compiler instead of 4.0 + + +2008-02-29 Nick Kledzik + + Simulator frameworks are being build split-seg and not prebound + * src/Options.cpp: only splitseg if prebound + + +2008-02-29 Nick Kledzik + + Linker should not make GSYM debug note for .objc_category_* symbols + * src/ld.cpp: suppress GSYM debug notes for absolute symbols + * unit-tests/test-cases/objc-category-debug-notes: added test case + + +2008-02-29 Nick Kledzik + + non-ASCII CFString support is broken + * src/MachOReaderRelocatable.hpp: only name and coalesce cfstring constants if they use a __cstring + * unit-tests/test-cases/cfstring-utf16: add test case + + +2008-02-25 Nick Kledzik + + ld -r -x + * doc/man/man1/ld.1: update man page to explain -r -x produces auto-stripped labels + + +----- Tagged ld64-82.5 + +2008-02-12 Nick Kledzik + + x86_64: -stack_size failure when large __bss is used + * src/ld.cpp: only move section already in __DATA segment to new __huge section + * unit-tests/test-cases/stack_size_no_addr: updated test case to add large bss section + + +----- Tagged ld64-82.4 + +2008-02-06 Nick Kledzik + + comdat warnings with ld -r of C++ .o files + * unit-tests/test-cases/eh-coalescing-r: added test case + * src/ld.cpp: in ld -r mode don't warn about if .eh symbols are not static + + +2008-02-06 Devang Patel + + LTO of Bom framework with -dead_strip causes ld(1) crash + * src/LLVMReader.hpp: Check fAtom while determining LLVMReference target binding. + * unit-tests/test-cases/llvm-integration/Makefile: Add new test case. + * unit-tests/test-cases/llvm-integration/a15.c: New. + * unit-tests/test-cases/llvm-integration/b15.c: New. + * unit-tests/test-cases/llvm-integration/c15.c: New. + +2008-02-05 Nick Kledzik + + * src/ld.cpp: fix for -arch ppc -mdynamic-no-pic -pie so PPC_RELOC_HA16 reloc is used + +----- Tagged ld64-82.3 + +2008-02-04 Nick Kledzik + + ld doesn't seem to understand $ld$add$os... and $ld$hide$os... for 10.6 moves + * src/ObjectFile.h: add 10.6 + * src/Options.cpp: add 10.6 support + * src/MachOReaderDylib.hpp: recognize $os10.6$ + + +----- Tagged ld64-82.2 + +2008-01-30 Devang Patel + + Can't build 64-bit Intel binaries with LTO + ld64 fails to build with llvm-gcc-4.2 + * src/LLVMReader.hpp: Fix character count typo in strncmp call. + Use const char * to initialize temp. string. + * ld64.xcodeproj/project.pbxproj: use $(DEVELOPER_DIR) in header search construction + instead of hard coding /Developer. + +----- Tagged ld64-82.1 + +2008-01-23 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: don't bus error if S_LITERAL_POINTERS is missing relocs + + +2008-01-22 Nick Kledzik + + ld uses 32-bits in some places to hold addresses when parsing 64-bit mach-o files + * src/MachOReaderRelocatable.hpp: use AddrToAtomMap type that switch address to 64-bits for 64-bit archs + * src/MachOWriterExecutable.hpp: verify BR14 does not overflow for external relocs + * unit-tests/test-cases/relocs-c: update test case to slide addresses to verify x86_64 .o files + + +----- Tagged ld64-82 + +2008-01-18 Nick Kledzik + + Bad grammar used in ld warning: cannot exported hidden symbol + * src/ld.cpp: fix typo in warning string + + +2008-01-16 Nick Kledzik + + Bundle Loader does not work anymore when loader is a bundle + ld warns of incorrect architecture when linking a bundle to a bundle + * src/MachOReaderDylib.hpp: support linking against bundles via -bundle_loader. Clean up error messages + * unit-tests/test-cases/bundle_loader: update test case + + +2008-01-16 Nick Kledzik + + ld -r -x creates debug notes (stabs) when it should not with -x (keep only global symbols) + * src/Options.cpp: in reconfigureDefaults() if -r and -x then -S + + +2008-01-16 Nick Kledzik + + if ld crashes while writing output file, it should delete the half written file + * src/MachOWriterExecutable.hpp: wrap open/write/close in try block and add signal handlers all to delete + output file on failure. + + +2008-01-16 Devang Patel + + * src/LLVMReader.hpp: Use __gnu_cxx::hash_map instead of hash supported by LLVM. + + +2008-01-16 Nick Kledzik + + GC-supported library can't be linked into GC-required executable + * src/ld.cpp: loosen constraint that all objc code must be compiled with same GC settings and + allow gc-compatible code to be linked into anything. + * unit-tests/test-cases/objc-gc-checks: update test case + + +2008-01-15 Nick Kledzik + + no debug notes for custom named data + * src/ld.cpp: in synthesizeDebugNotes() check getSymbolTableInclusion() instead of for leading underscore + * unit-tests/test-cases/dwarf-debug-notes: update test case + +----- Tagged ld64-81.5 + +2008-01-14 Devang Patel + + llvm-gcc-4.2 fails to build Sqlite 3.5.4 with -O4 + * src/LLVMReader.hpp: Resolve proxy references. Collect new unbounded references + after optimization. + * src/ld.cpp: Resolve additional unbounded references after optimization. + + +2008-01-14 Nick Kledzik + + PPC Leopard (Xcode 3.0) linker ld gets "Bus error" sometimes + * src/MachOReaderRelocatable.hpp: use same code as x86 to parse ppc and arm sect-diff relocs + * src/MachOWriterExecutable.hpp: use same code as x86 to write ppc and arm sect-diff relocs + + +2008-01-11 Nick Kledzik + + PPC Leopard (Xcode 3.0) linker ld reports "unknown scattered relocation type 4" + * src/MachOReaderRelocatable.hpp: add PPC_RELOC_HI16 to scattered reloc parsing + * unit-tests/test-cases/relocs-asm/relocs-asm.s: added tests for scattered hi/lo instructions + + +2008-01-11 Nick Kledzik + + * doc/man/man1/ld.1: add doc for -no_implicit_dylibs, -read_only_stubs, -slow_stubs, -interposable_list + + +2008-01-11 Nick Kledzik + + ld64(1) man page uses ambiguous term "suffix" + * doc/man/man1/ld.1: make meaning of "suffix" more explicit + + +2008-01-11 Nick Kledzik + + Obj-C Symbols in Leopard Can't Be Weak Linked + * src/MachOWriterExecutable.hpp: set weak and lazy attributes on dummy .objc_class_name undefines + to dylibs to support Mac OS X 10.3.x dyld + + +2008-01-11 Nick Kledzik + + Unknown error with linker (dyld: unknown external relocation type) + * src/ld.cpp: fix crash when SO stabs are not balanced + + +2008-01-11 Devang Patel + + LTO does not work if expected output is a dynamic library + * src/LLVMReader.hpp: Supply arguments describing output kind to optimizer. Communicate + visibility info. + +2000-01-10 Nick Kledzik + + __cls_refs section is losing S_LITERAL_POINTERS section type + * src/MachOWriterExecutable.hpp: special case __cls_refs section + * unit-tests/test-cases/objc-literal-pointers: add test case + + +2008-01-03 Nick Kledzik + + wrong EH information might be used + Created new kGroupSubordinate reference kind to model group comdat. The "signature" atom + has kGroupSubordinate references to the other atoms in the group. If the signature atom + is coalesced away, the linker follows kGroupSubordinate references and throws away the + other members of the group. + * unit-tests/test-cases/eh-coalescing: added test case + * src/ld.cpp: added markDead() and use propagate to subordinates + * src/Architectures.hpp: added kGroupSubordinate + * src/MachOReaderRelocatable.hpp: add kGroupSubordinate reference from a function to its .eh atom + and if used, from .eh atom to its LSDA atom. + * src/MachOWriterExecutable.hpp: handle kGroupSubordinate like kNoFixUp + +----- Tagged ld64-81.4.1 + +2007-12-19 Devang Patel + + * src/LLVMReader.hpp: Add LLVM_LTO_VERSION #ifdef check. + +2007-12-19 Devang Patel + + * src/LLVMReader.hpp: Add fOptimizer NULL check before calling printVersion(). + +2007-12-19 Devang Patel + + print LLVM LTO version number in verbose mode + * src/LLVMReader.hpp: Add printLLVMVersion() to print llvm version string in verbose mode. + * src/Options.cpp: Use printLLVMVersion() in verbose mode. + +2007-12-19 Devang Patel + + print LLVM LTO version number in verbose mode + * src/Options.h: Add verbose() method to check fVerbose flag. + * src/LLVMReader.hpp: Print LLVM version string in verbose mode. + +----- Tagged ld64-81.4 + +2007-12-18 Devang Patel + + * src/LLVMReader.hpp: Invalidate input architecture when optimizer is not available. + +----- Tagged ld64-81.3 + +2007-12-17 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: remove extraneous header search paths + + +2007-12-17 Devang Patel + + * src/LLVMReader.hpp: Do not throw exception if LLVMReader is not able to + dlopen LTO library. Instead just flag input file as an invalid LLVM bitcode file. + + +2007-12-14 Nick Kledzik + + gcc DejaGnu failure: gcc.dg/20020312-2.c (test for excess errors) (-fstack-protector-all) + * src/MachOWriterExecutable.hpp: fix Writer::generatesExternalTextReloc() to allow text relocs + * unit-tests/test-cases/read-only-relocs: updated test case to link a dynamic main executable compiled with -static + + +2007-12-14 Devang Patel + + Enable Link Time Optimization in Opal + * src/LLVMReader.hpp: Locate LLVMlto.dylib relative to ld location in Developer folder. + * ld64.xcodeproj/project.pbxproj: Add {DEVELOPER_DIR}/usr/include in header search path. + * unit-tests/run-all-unit-tests: Set DYLD_FALLBACK_LIBRARY_PATH to find LLVMlto.dylib during unit testing. + * unit-tests/testcases/llvm-integration/Makefile: Point LLVMGCC and LLVMGXX to llvm-gcc-4.2 in Developer folder during unit testing. + + +2007-12-13 Nick Kledzik + + SWB: failures due to ld: pointer in read-only segment not allowed in slidable image, used in ... + * src/MachOReaderRelocatable.hpp: in Reader::addRelocReference() handle weak pc-rel 32-bit vanilla relocs properly + +----- Tagged ld64-81.2 + + + +2007-12-07 Nick Kledzik + + support 8-bit relocations for i386 + * src/Architectures.hpp: add kPCRel8 + * src/MachOReaderRelocatable.hpp: support 8-bit pc-rel relocations for intel + * src/MachOWriterExecutable.hpp: support 8-bit pc-rel relocations for intel + * unit-tests/test-cases/relocs-asm: add test cases + + +----- Tagged ld64-81.1 + +2007-12-06 Nick Kledzik + + * src/MachOReaderDylib.hpp: rework cycle detection to remove some false positives + + +2007-12-05 Nick Kledzik + + Duplicate probe firings in Security.framework + * src/ld.cpp: check dtrace probe sites are not in fDeadAtoms before using + * unit-tests/test-cases/dtrace-static-probes-coalescing: add test case + + +2007-12-05 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: fix CFString coalescing to work with -fwritable-strings + * unit-tests/test-cases/cfstring-coalesce: add -fwritable-strings to test case + + +----- Tagged ld64-81 + +2007-11-15 Nick Kledzik + + ld64 should support runtime text relocations + * src/MachOWriterExecutable.hpp: add generatesLocalTextReloc() and generatesExternalTextReloc() + * src/Options.cpp: process -read_only_relocs option + * src/Options.h: add allowTextRelocs() and warnAboutTextRelocs() + * src/MachOReaderRelocatable.hpp: add hasLongBranchStubs() + * src/machochecker.cpp: allow relocs in read only segments, if section flags are set + * unit-tests/test-cases/read-only-relocs: update test case + + +2007-11-08 Devang Patel + + * ld64.xcodeproj/project.pbxproj: add new build phase "build configure.h" for + ld target. + * src/ld.cpp: Include "configure.h" + + +----- Tagged ld64-80.11 + +2008-02-12 Nick Kledzik + + Wrong section name for objc info for ARM when OBJC2 is used + * src/MachOWriterExecutable.hpp: switch segment/section name for ARM objc2 image info + +----- Tagged ld64-80.10 + +2008-02-11 Nick Kledzik + + ld64 does not support -aspen_version_min 2.0 + * src/Options.cpp: allow 2.x for -aspen_version_min + + +2008-02-11 Nick Kledzik + + ld_classic: unknown flag: -aspen_version_min + * src/Options.cpp: change -aspen_version_min x.x to -macosx_version_min 10.5 when invoking ld_classic + + +----- Tagged ld64-80.9 + +2008-01-29 Nick Kledzik + + -iphone_version_min ==> -aspen_version_min + * src/Options.cpp: support -aspen_version_min + + +----- Tagged ld64-80.8 + +2008-01-10 Nick Kledzik + + * src/Options.cpp: support transition to new objc ABI for ARM by allowing old .objc_class_name_* + style names in export files and map them to new _OBJC_CLASS_$_ style names. + + +----- Tagged ld64-80.7 + +2008-01-02 Nick Kledzik + + BigBear5A18 isn't fully prebound + * src/Options.cpp: make fNeedsModuleTable true for arm + +----- Tagged ld64-80.6 + +2007-11-30 Nick Kledzik + + -iphone_version_min + * src/Options.cpp: handle -iphone_version_min option + + +----- Tagged ld64-80.5 + +2007-11-26 Nick Kledzik + + need to special case some dylibs in seg_addr_table + * src/Options.cpp: retry seg_add_table lookup for a couple of unusual dylibs + + +----- Tagged ld64-80.4 + +2007-11-06 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: fix parsing of external and scattered thumb branch22 relocs + * unit-tests/test-cases/thumb-blx: add test case to keep blx issues from coming back + +----- Tagged ld64-80.3 + +2007-11-03 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: remove recalc of dstAddr which could cause thumb branches to be +2 + * src/MachOWriterExecutable.hpp: remove incorrect test for relocateableExternal + +----- Tagged ld64-80.2 + +2007-11-01 Nick Kledzik + + * src/ld.cpp: hack my own prototype for log2() until math.h is cleaned up + + +----- Tagged ld64-80.1 + +2007-11-01 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: add HEADER_SEARCH_PATHS for cross builds + * src/ld.cpp: temporarily disable LLVM_SUPPORT + * src/MachOWriterExecutable.hpp: Don't use CC_MD5() directly + + +2007-10-26 Nick Kledzik + + Cannot build with libm_static.a statically linked + * src/MachOWriterExecutable.hpp: Fix makesExternalRelocatableReference() for -r -d case + * unit-tests/test-cases/tentative-to-real-hidden: add test case + + +----- Tagged ld64-80 + +2007-10-24 Nick Kledzik + + linker should probably warn about trying to export a hidden symbol + * src/ld.cpp: if using -exported_symbols_list check each hidden atom as it is added to symbol table + * src/Options.h,.cpp: add hasExportMaskList() + * unit-tests/test-cases/exported_symbols_list-hidden: added test case + + +2007-10-24 Nick Kledzik + + * src/MachOWriterExecutable.hpp: keep old style dtrace probes externel for kernel builds + + +2007-10-23 Nick Kledzik + + unify error and warning messages + -w should suppress warnings + * src/ld.cpp: use warning() function + * src/Options.h: remove emitWarnings() + * src/MachOReaderDylib.hpp: use warning() function + * src/MachOReaderRelocatable.hpp: use warning() function + * src/Options.cpp: use and implement warning() + * src/MachOWriterExecutable.hpp: use warning() function + * unit-tests/test-cases/visibility-warning: verify -w suppresses warnings + + +2007-10-23 Devang Patel + + * src/ld.cpp: Cover arm support inside __OPEN_SOURCE__ macro check. + * src/LLVMReader.hpp: Cover arm support inside __OPEN_SOURCE__ macro check. + * src/MachOReaderDylib.hpp: Cover arm support inside __OPEN_SOURCE__ macro check. + * src/ObjectFile.h: Cover arm support inside __OPEN_SOURCE__ macro check. + * src/MachOReaderRelocatable.hpp: Cover arm support inside __OPEN_SOURCE__ macro check. + * src/OpaqueSection.hpp: Cover arm support inside __OPEN_SOURCE__ macro check + * src/MachOWriterExecutable.hpp: Cover arm support inside __OPEN_SOURCE__ macro check. + * src/ObjectDump.cpp: Cover arm support inside __OPEN_SOURCE__ macro check. + + +2007-10-22 Nick Kledzik + + * src/Options.cpp: add support for LD_DEAD_STRIP and LD_WARN_COMMONS + * src/MachOReaderRelocatable.hpp: fix problem with -dead_strip of ObjC literal pointers + + +2007-10-22 Nick Kledzik + + * src/Options.cpp: have -static arm code link with ld_classic (for now) + + +2007-10-22 Nick Kledzik + + Recognize all arm architectures + * src/MachOReaderRelocatable.hpp: add support for all ARM sub-types + * unit-tests/test-cases/cpu-sub-types: add test cases for all combinations of ARM sub-types + + +2007-10-19 Nick Kledzik + + * src/*: merge in arm support + * unit-tests/test-cases/*: fix to work for arm and thumb + +----- Tagged ld64-79 + +2007-10-16 Nick Kledzik + + * src/MachOWriterExecutable.hpp: if -r mode, always set custom alignment (SET_COMM_ALIGN) on common symbols + * unit-tests/test-cases/visibility-warning-dylib-v-archive/Makefile: fix warning + * unit-tests/test-cases/static-executable/Makefile: fix spurious failure + + +2007-10-16 Nick Kledzik + + * src/MachOWriterExecutable.hpp: fix edge case in branch island generation + + +2007-10-12 Nick Kledzik + + Add option to create old, slow stubs for i386 + * src/ObjectFile.h/.cpp: support -read_only_stubs + * src/MachOWriterExecutable.hpp: enhance StubAtom to support old style __symbol_stub/__la_symbol_ptr stubs + * unit-tests/test-cases/slow-x86-stubs: add test case + + +2007-10-12 Nick Kledzik + + ld64's re-export cycle detection logic prevents use of X11 libGL on Leopard + * src/Options.cpp: in findFileUsingPaths() don't search for embedded dylibs + * unit-tests/test-cases/indirect-path-search/Makefile: added case for a dylib embedded in a framework + + +2007-10-11 Nick Kledzik + + add option to disable implicit load commands for indirectly used public dylibs + * src/Options.cpp: add support for -no_implicit_dylibs + * src/ObjectFile.h: add fImplicitlyLinkPublicDylibs + * src/MachOReaderDylib.hpp: test fImplicitlyLinkPublicDylibs before hoisting an implicitly linked dylib + * unit-tests/test-cases/implicit_dylib: add test case + + +2007-10-11 Nick Kledzik + + -interposable_list + * src/Options.h/cpp: Add fInterposeList and fInterposeMode to support -interposable_list + * src/MachOWriterExecutable.hpp: pass symbol name to fOptions.interposable() + * unit-tests/test-cases/interposable_list: add test case + + +2007-10-10 Nick Kledzik + + If only weak_import symbols are used, linker should use LD_LOAD_WEAK_DYLIB + * src/MachOWriterExecutable.hpp: automatically use LC_LOAD_WEAK_DYLIB if all symbols used from a dylib are weak_import + * unit-tests/test-cases/weak_dylib: added test case + + +2007-10-10 Nick Kledzik + + linker does not error when dylib ordinal exceeds 250 + * src/MachOWriterExecutable.hpp: error out if ordinals exceed max allowed + + +2007-10-10 Nick Kledzik + + overriding 'operator new' or 'operator delete' fails if no weak symbols are present + * src/ld.cpp: at end of checkUndefines() search dylibs for weak versions of any global external symbols + * src/ObjectFile.h: add hasWeakExternals() method to Reader + * src/MachOReaderDylib.hpp: implement hasWeakExternals() method in Reader + * src/ExecutableFile.h: add overridesDylibWeakDefines parameter to write() + * src/MachOWriterExecutable.hpp: use overridesDylibWeakDefines parameter to write() + * unit-tests/test-cases/operator-new: add test case + + +2007-10-05 Nick Kledzik + + No warning about tentative definition conflicting with dylib definition + .comm variables in shared library, worked with XCode 2.4.1, broken with XCode 3? + * src/ld.cpp: at end of checkUndefines() verify if any remaining commons conflict with dylibs + * doc/man/man1/ld.1: document -commons and -warn_commons options + * unit-tests/test-cases/tentative-and-dylib: added test case + + +2007-10-05 Nick Kledzik + + NS/CFString constants are not dead strippable + * src/MachOReaderRelocatable.hpp: break up __cfstring section into one atom per cfstring, make them coalesable + * unit-tests/test-cases/cfstring-coalesce: added test case + + +2007-10-05 Nick Kledzik + + Dead stripping + exported symbols list using wildcards doesn't seem to do the right thing + * src/Options.cpp/h: add hasWildCardExportRestrictList() + * src/ld.cpp: if dead stripping code and have wildcard exports, add all global atoms matching wildcards as roots + * unit-tests/test-cases/exported-symbols-wildcards-dead_strip: added test case + + +2007-10-04 Nick Kledzik + + ld shouldn't search /Network/Library/Frameworks by default + * src/Options.cpp: remove /Network/Library/Frameworks/ from default search path + * doc/man/man1/ld.1: document the change + + +2007-10-04 Nick Kledzik + + all binaries should get LD_UUID load commands, not just those with DWARF symbols + * src/ld.cpp: default fCreateUUID to be true for non object file output types + * unit-tests/test-cases/no-uuid/Makefile: update test case to match new rules + + +----- Tagged ld64-78 + +2007-09-27 Nick Kledzik + + range check load commands + * src/MachOReaderDylib.hpp: check that load commands all fit in load command size from header + * src/MachOReaderRelocatable.hpp: check that load commands all fit in load command size from header + + +2007-09-27 Nick Kledzik + + Xc8M2540a: ld64 crashes when linking Pascal program + * src/ld.cpp: fix findAtomAndOffset() to handle where there are no function atoms + + +2007-09-27 Nick Kledzik + + ADOBE Xcode 3: ld -dead_strip does not work with -init from an archive + * src/ld.cpp: add bool parameter to entryPoint() so -init atom not looked for too soon + * unit-tests/test-cases/dead_strip-init-archive: added test case + + +2007-09-26 Nick Kledzik + + Spurious link warnings for inline members of C++ template classes + * src/ld.cpp: check definition kinds before warning about visibility mismatches + * unit-tests/test-cases/visibility-warning: added test case + + +2007-09-26 Nick Kledzik + + an empty .o file with zero load commands will crash linker + * src/MachOReaderRelocatable.hpp: have Reader constructor return early of no load commands + * unit-tests/test-cases/empty-object: added test case + + +2007-09-26 Nick Kledzik + + 9a527: ppc64 branch islands fail with 4GB pagezeo + * src/MachOWriterExecutable.hpp: start range calculations at start of __text not at zero. + + +----- Tagged ld64-77 (Xcode 3.0) + +2007-07-23 Nick Kledzik + + Kernel is linked with some global symbols unsorted + * src/MachOWriterExecutable.hpp: Add NListNameSorter to allow global atoms and extra labels to be sorted + + +2007-07-20 Nick Kledzik + + Can't do objc_msgSendSuper dispatches after loading a Fix&Continue bundle + * src/MachOWriterExecutable.hpp: when calculating what kind of reloc to use, never use an + external reloc to reference 32-bit ObjC symbols. + + +2007-07-20 Nick Kledzik + + Runtime crash with ICC math library on Leopard + * src/MachOReaderRelocatable.hpp: detect if section starts with a symbol that is not + aligned to section and correct it. + + +----- Tagged ld64-76 + +2007-06-29 Nick Kledzik + + export hiding does not work for frameworks + * src/MachOReaderDylib.hpp: fix checks in isPublicLocation() + * unit-tests/test-cases/symbol-moving: update to test frameworks as well as dylibs + + +2007-06-27 Nick Kledzik + + linker should use undefines from flat dylibs when linking a main flat + * src/ObjectFile.h: added fLinkingMainExecutable + * src/Options.cpp: set up fLinkingMainExecutable + * src/MachOReaderDylib.hpp: when linking a main executable for flat namespace, the reader for + any loaded flat namespace dylib will have a new atoms that has references to all undefined + symbols in the dylib + * unit-tests/test-cases/flat-indirect-undefines: added test case + * doc/man/man1/ld.1: update man page to describe when dylib undefines are used + + +2007-06-27 Nick Kledzik + + OpenGL.framework and X11 both have a libGL.dylib which can cause ld to segfault if both are found + * src/MachOReaderDylib.hpp: add assertNoReExportCycles() method + * unit-tests/test-cases/dylib-re-export-cycle: added test case + + +2007-06-27 Nick Kledzik + + ld64 has slightly different warning message formats than the old ld + * src/ld.cpp: standardize all warning messages to start with "ld: warning" + * src/MachOWriterExecutable.hpp: ditto + * src/MachOReaderRelocatable.hpp: ditto + * src/MachOReaderDylib.hpp:ditto + + +2007-06-26 Nick Kledzik + + -dead_strip can cause duplicate external commons + * src/ld.cpp: don't use discarded coalesced global atoms as dead strip roots + * src/machochecker.cpp: error if duplicate external symbols + * unit-tests/test-cases/commons-coalesced-dead_strip: added test case + + +2007-06-26 Nick Kledzik + + update man page that linker does not search indirect libraries with two-level namespace + * doc/man/man1/ld.1: add new "Indirect dynamic libraries" section to man page + + +2007-06-26 Nick Kledzik + + Xc9A466: Exports file cannot use Mac line ends + * src/Options.cpp: check for \r or \n when parsing .exp files + * unit-tests/test-cases/exported_symbols_list-eol: added test case + + +----- Tagged ld64-75 + +2007-05-31 Nick Kledzik + + Simplier, generalized way to re-export dylibs: LC_REEXPORT_DYLIB + * src/MachOWriterExecutable.hpp: Use LC_REEXPORT_DYLIB when targetting 10.5 + + +----- Tagged ld64-74.5 + +2007-05-31 Nick Kledzik + + set OSO timestamp to zero for when building in buildit + * src/ld.cpp: check for RC_RELEASE and if exists set all OSO timestamps to zero + + +2007-05-30 Nick Kledzik + + BUILD_STABS now causes ld of xnu to bus error + * src/ld.cpp: Change || to && in collectStabs() + + +----- Tagged ld64-74.4 + +2007-05-18 Nick Kledzik + + static probes don't work with libraries in dyld shared cache + * src/OpaqueSection.hpp: the __TEXT segment is executable + + +----- Tagged ld64-74.3 + +2007-05-16 Nick Kledzik + + ppc: linker adds stubs to cstring references + * src/MachOWriterExecutable.hpp: update ppc stubableReference() to only allow high/low references + to be stubed if they reference a symbol in some other dylib. + * unit-tests/test-cases/stub-generation: added test case + + +2007-05-16 Nick Kledzik + + ppc64: need to make LOCAL indirect symbol table entry for now local symbol + * src/MachOWriterExecutable.hpp: factored local tests into indirectSymbolIsLocal() + * unit-tests/test-cases/non-lazy-r: added test case + + +2007-05-15 Nick Kledzik + + ld64 drops fix&continue bit in __OBJC, __image_info. + * src/MachOReaderRelocatable.hpp: implement objcReplacementClasses() + + +2007-05-15 Nick Kledzik + + support __image_info in __DATA segment for 64-bits + * src/MachOReaderRelocatable.hpp: use strncmp() for __objc_imageinfo since it is 16 bytes long + * src/MachOWriterExecutable.hpp: specialize segment/section names for synthesized objc image info section + + +2007-05-15 Nick Kledzik + + * unit-tests/include/common.makefile: set COMPILER_PATH so harness works with latest compiler + + +----- Tagged ld64-74.2 + +2007-05-11 Nick Kledzik + + ld64-74.1 breaks libstdc++ DejaGnu test (G5 only) + * src/MachOWriterExecutable.hpp: don't stub a reference if the target offset is non-zero + + +----- Tagged ld64-74.1 + +2007-05-09 Nick Kledzik + + * src/Options.h: add emitWarnings() + * src/Options.cpp: wire up -w to emitWarnings() + + +2007-05-09 Nick Kledzik + + ld64 won't link wine (regression from Tiger) + * src/Architectures.hpp: add x86::kPointerDiff16 and x86::kPCRel16 + * src/MachOReaderRelocatable.hpp: add support to parse new relocs + * src/MachOWriterExecutable.hpp: add support fo new relocs + + +2007-05-08 Nick Kledzik + + need way for ld and dyld to see different exported symbols in a dylib + * src/MachOReaderDylib.hpp: update parse and use $ld$ symbols + * src/Options.h: move VersionMin to ReaderOptions + * src/ObjectFile.h: move VersionMin to ReaderOptions + * src/Options.cpp: move VersionMin to ReaderOptions + * src/MachOWriterExecutable.hpp: move VersionMin to ReaderOptions + * unit-tests/test-cases/symbol-moving: added test case + + +2007-05-03 Nick Kledzik + + typo in error message for linking -pie + * src/MachOWriterExecutable.hpp: fix typo in error messages + + +----- Tagged ld64-74 + +2007-05-03 Nick Kledzik + + ld64 can't find @executable _path relative dylibs from our umbrella frameworks + ld64 should handle linking against dylibs that have @loader_path based dylib load commands + * src/ObjectFile.h: add from parameter to findDylib() + * src/MachOReaderDylib.hpp: supply from parameter to findDylib() + * src/ld.cpp: use from parameter for @loader_path substitution in findDylib() + * unit-tests/test-cases/re-export-relative-paths: added test case + + +2007-05-02 Nick Kledzik + + * src/ObjectFile.h: add fLogObjectFiles and fLogAllFiles + * src/Options.cpp: hook up -t to fLogAllFiles and -whatsloaded to fLogObjectFiles + * src/MachOReaderDylib.hpp: log if fLogAllFiles + * src/MachOReaderRelocatable.hpp: log if fLogObjectFiles or fLogAllFiles + * src/MachOReaderArchive.hpp: log if fLogAllFiles + * doc/man/man1/ld.1: update man page + + +2007-05-02 Nick Kledzik + + typo in message, frameowrk + * src/Options.cpp: fix typo + + +2007-05-01 Nick Kledzik + + "ld" man page is missing the description for many options + * doc/man/man1/ld.1: add documentation on all obsolete options + + +2007-05-01 Nick Kledzik + + ld doesn't handle -mlong-branch .o files that have had local symbols stripped + warning about dwarf line info with -mlong-branch + * src/MachOReaderRelocatable.hpp: don't lop -mlong-branch stubs off end of functions + * src/MachOWriterExecutable.hpp: allow code references besides BR24 to be stubable + + +2007-04-30 Nick Kledzik + + unable to link VTK because __textcoal_nt too large + * src/MachOReaderRelocatable.hpp: when doing a final link map __textcoal_nt to __text + + +2007-04-30 Nick Kledzik + + ld does not report error when -r is used and exported symbols are not defined. + ld leaves global common symbols not in exported symbols list. + * src/ld.cpp: stop special casing -r mode in checkUndefines() + * src/MachOWriterExecutable.hpp: don't create proxy atom in -r mode if it is supposed to be exported. + mark tentative definitions are private extern in -r mode even without -keep_private_externs + * unit-tests/test-cases/exported_symbols_list-r: added test case + + +2007-04-27 Nick Kledzik + + ld should keep looking when it finds a weak definition in a dylib + * src/ld.cpp: modified addJustInTimeAtoms() to keep looking when a weak defintion is found + * unit-tests/test-cases/weak-def-ordinal: added test case + + +2007-04-27 Nick Kledzik + + better error message for indirect dylibs missing required architecture + * src/ld.cpp: when loading indirect dylib add path to error messages + + +2007-04-25 Nick Kledzik + + the i386 slice of dyld does not need __IMPORT segment + * src/ObjectFile.h: add fForDyld + * src/Options.cpp: set up fForDyld + * src/MachOReaderRelocatable.hpp: if fForDyld, change __IMPORT segment to __DATA + * src/MachOWriterExecutable.hpp: recognize __DATA/__pointers in dyld as a non-lazy section + + +2007-04-24 Nick Kledzik + + ppc64: need to make LOCAL indirect symbol table entry for now local symbol + * src/MachOWriterExecutable.hpp: use INDIRECT_SYMBOL_LOCAL for any non-global symbol + * unit-tests/test-cases/strip_local: update test case + + +2007-04-24 Nick Kledzik + + ld64 -sectorder and -order_file files don't accept white space following the : + * src/Options.cpp: prune white space after colon and before symbol name + * unit-tests/test-cases/order_file: update test case to have a space after the colon + + +2007-04-24 Nick Kledzik + + ld64 corrupts debug symbol table entries, nm doesn't print them + * src/MachOWriterExecutable.hpp: properly set ilocalsym in module table + + +2007-04-24 Nick Kledzik + + support __image_info in __DATA segment for 64-bits + * src/MachOReaderRelocatable.hpp: look for new objc info section name too + + +2007-04-24 Nick Kledzik + + * src/MachOWriterExecutable.hpp: fix -non_global_symbols_strip_list to work with -r + * unit-tests/test-cases/local-symbol-partial-stripping: update test case + + + +----- Tagged ld64-73.7 + +2007-05-10 Nick Kledzik + + can't use dtrace static probes in x86_64 dylib + * src/MachOWriterExecutable.hpp: x86_64:kPointerDiff32 is ok in shared region + * unit-tests/test-cases/dtrace-static-probes: update to build dylib too + + +2007-05-09 Nick Kledzik + + 9A430: using -dead_strip with static dtrace probes causes ld to crash + * src/ld.cpp: fix markLive() to look at right name in dtrace probe refernce + * unit-tests/test-cases/dtrace-static-probes: added -dead_strip case + + +----- Tagged ld64-73.6 + +2007-04-17 Nick Kledzik + + Add options to do partial stripping of local symbols + * src/MachOWriterExecutable.hpp: use fOptions.keepLocalSymbol() + * src/Options.cpp: implement -non_global_symbols_no_strip_list and -non_global_symbols_strip_list + * src/Options.h: replace stripLocalSymbols() with localSymbolHandling() and keepLocalSymbol() + * doc/man/man1/ld.1: document -non_global_symbols_no_strip_list and -non_global_symbols_strip_list + * unit-tests/test-cases/local-symbol-partial-stripping: added test case + + +----- Tagged ld64-73.5 + +2007-04-17 Nick Kledzik + + ld64-73.3 XBS logging incorrectly reporting "direct" dynamic libraries + * src/ld.cpp: restore direct vs indirect library for LD_TRACE_DYLIBS logging + + +2007-04-16 Nick Kledzik + + data initialized to a weak imported symbol is missing relocation + * src/MachOWriterExecutable.hpp: check for A::kPointerWeakImport in buildExecutableFixups() + * unit-tests/test-cases/weak_import: updated test case to catch this problem + + +2007-04-13 Nick Kledzik + + Support -U + * src/MachOWriterExecutable.hpp: create proxies for -U symbols + * src/Options.cpp: process -U + * src/Options.h: add allowedUndefined() and someAllowedUndefines() + * src/ld.cpp: create proxies for -U symbols + * doc/man/man1/ld.1: document -U and -undefined options + * unit-tests/test-cases/undefined-dynamic-lookup: added test case + + +----- Tagged ld64-73.4 + +2007-04-12 Nick Kledzik + + ld changes needed to support read-only DOF + * src/Options.cpp: remove -read_only_dof + * src/Options.h: remove fReadOnlyDOFs + * src/ld.cpp: only generate read-only DOF sections + + +----- Tagged ld64-73.3.1 + +2007-04-13 Nick Kledzik + + -framework vecLib -framework Accelerate causes bad ordinals + * src/MachOWriterExecutable.hpp: fix bug optimizeDylibReferences() when there are two readers with same install name + + +----- Tagged ld64-73.3 + +2007-04-03 Nick Kledzik + + * src/ld.cpp: read-only-dofs should use 32-bit offsets for x86_64 + * src/MachOReaderDylib.hpp: if "public" re-export is not marked implict, still mark it as re-exported + + +2007-04-02 Nick Kledzik + + if replacement file for -dylib_file is missing, warn instead of error + * src/ld.cpp: a try/catch to turn -dylib_file error into a warning. + * unit-tests/test-cases/dylib_file-missing: add test case + * doc/man/man1/ld.1: update man page about -dead_strip_dylibs + + +----- Tagged ld64-73.2 + +2007-03-31 Nick Kledzik + + ld64-73: atom sorting error with duplicate zero sized bss symbols + * src/MachOReaderRelocatable.hpp: suppress warning on sorting zero size zero fill atoms + +2007-03-31 Nick Kledzik + + ld64-73 fails anything linking with -lm + * src/ld.cpp: when processing dylbs that are sylinks ensure that fDylibMap contains all paths + * src/MachOWriterExecutable.hpp: when dead stripping dylibs and renumbering ordinals make sure + aliases dylib get renumbered too + * unit-tests/test-cases/dylib-aliases: added + + +----- Tagged ld64-73.1 + +2007-03-30 Nick Kledzik + + * src/MachOWriterExecutable.hpp: back out use of LC_REEXPORT_DYLIB until rdar://problem/5009909 is in build fleet + + +----- Tagged ld64-73 + +2007-03-30 Nick Kledzik + + ER: -dead_strip_dylibs + linker should add implicit load commands for indirectly used public dylibs + * src/ObjectFile.h: change dylib reader interface to implictly/explicitlyLinked + * src/ld.cpp: use new dylib reader interface + * src/Options.h: add deadStripDylibs() + * src/Options.cpp: support -dead_strip_dylibs + * src/MachOReaderDylib.hpp: use new dylib reader interface + * src/MachOWriterExecutable.hpp: remove dylib load commands for unused dylibs and alter ordinals + * unit-tests/test-cases/re-export-optimizations: added + * unit-tests/test-cases/dead_strip_dylibs: added + + +2007-03-30 Nick Kledzik + + * src/Options.cpp: enable -lfoo to search for libfoo.so as well as libfoo.dylib, + remove seg addr table hack for transitioning to new linker + +2007-03-30 Nick Kledzik + + ADOBE XCODE3: Linker is slow with large C++ .o files + * src/MachOReaderRelocatable.hpp: the compiler generates stubs to weak functions in the + same translation unit. Don't treat those like the spurios stubs to static functions. + + +2007-03-29 Nick Kledzik + + ld64 should link mach_kernel during xnu builds to support dtrace + * src/MachOReaderRelocatable.hpp: To handle duplicate labels properly, rework how atoms sizes are set + by iterating through sorted fAtoms rather than fAddrToAtom, . Change default alignment of commons + to be the natural alignment of the size rounded up to the closest power of two and max it at 12. + Build atoms in reverse symbol table order so that global atoms are constructed before locals. + This assures that if there is a global and local label at the same location, the global label + will become the atom's name and the local will be an alias. Properly handle a label + at the end of a section. Handle R_ABS in relocations. Handle sect-diff relocs with addends. + Don't auto-strip 'l' symbols in static executables (mach_kernel). + * src/OpaqueSection.hpp: opaque_section now has an ordinal + * src/ld.cpp: opaque_section now requires an ordinal + * src/ObjectFile.h: add ReaderOptions.fForStatic + * src/Options.cpp: set fForStatic when building a static executable + * src/MachOWriterExecutable.hpp: add from atom to StubAtom. Properly write out i386 + sect-diff relocs with addends. properly write out ppc PICbase relocs where pic base + is not in the atom. + + +2007-03-27 Nick Kledzik + + Typo in ld man page (-exported_symbols_list) + * doc/man/man1/ld.1: fix typo + + +2007-03-26 Nick Kledzik + + consider generating LC_UUID from a checksum of the file + * src/Options.h: change emitUUID() to getUUIDMode() + * src/Options.cpp: support -random_uuid + * src/MachOWriterExecutable.hpp: set uuid to be md5 hash of entire output file + + +2007-03-24 Nick Kledzik + + * src/MachOWriterExecutable.hpp: restructure writeAtoms() to copy all atoms in memory if possible + + +2007-03-24 Nick Kledzik + + ld -r of stripped .o file can incorrectly merge non-lazy pointers + * src/MachOWriterExecutable.hpp: when generating a .o file, non-lazy pointer with target offsets should be + encoded as LOCAL in the indirect symbol table + * unit-tests/test-cases/stripped-indirect-symbol-table: added test case + + +2007-03-23 Nick Kledzik + + SWB: ld64-72 errors building with gcc-4.2 + * src/MachOReaderDylib.hpp: add curly brackets in switch cases + * src/MachOWriterExecutable.hpp: rearrange classes so there are no template specialization forward references + + +2007-03-23 Nick Kledzik + + * src/ld.cpp: fix -print_statistics when using -dead_strip + + +2007-03-23 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: generate better names for non-lazy pointers to the interior of atoms + + +2007-03-16 Nick Kledzik + + * src/MachOWriterExecutable.hpp: speed up ld -r a little by reversing relocs en mas + + +2007-03-16 Nick Kledzik + + ld Bus Error on missing command line arguments + * src/Options.cpp: check next argv[] is not NULL + + +2007-03-16 Nick Kledzik + + need to be able to order symbols in anonymous namespaces + * src/ld.cpp: add logic to do fuzzy matching of symbols with anonymous namespace usage + * unit-tests/test-cases/order_file-ans: added test case + + +2007-03-16 Nick Kledzik + + headerpad_max_install_names deprecated for 64-bit + * src/ld.cpp: make sure dylib load command order matches command line order + * src/Options.h: add maxMminimumHeaderPad() + * src/Options.cpp: add maxMminimumHeaderPad() set by -headerpad_max_install_names + * src/src/MachOWriterExecutable.hpp: check maxMminimumHeaderPad() + * doc/man/man1/ld.1: update man page about -headerpad_max_install_names + + +2007-03-16 Nick Kledzik + + Linker returns success although exported symbols are undefined. + * src/ld.cpp: turn missing symbols back into an error + + +2007-03-16 Nick Kledzik + + ld64 should handle linking against dylibs that have @loader_path based dylib load commands + * unit-tests/test-cases/loader_path: added test case + + +2007-03-16 Nick Kledzik + + linker should add implicit load commands for indirectly used public dylibs + Indirect libraries should be found using -F and -L options + Simplier, generalized way to re-export dylibs: LC_REEXPORT_DYLIB + * src/ld.cpp: reworked all dylib processing. Readers can now add the dylib list. + * src/Options.h: add findFileUsingPaths() + * src/MachOReaderDylib.hpp: look in re-exported children instead of requring linker to do that + * src/ObjectFile.h: add processIndirectLibraries(), remove getDependentLibraryPaths() + * src/machochecker.cpp: support LC_REEXPORT_DYLIB + * src/ExecutableFile.h: simplify DyLibUsed + * src/Options.cpp: add findFileUsingPaths(). add new re-export options + * src/MachOWriterExecutable.hpp: Use LC_REEXPORT_DYLIB when targetting 10.5 + * doc/man/man1/ld.1: updated with new re-export options + * unit-tests/test-cases/indirect-path-search: added tests that -F and -L work with indirect dylibs + * unit-tests/test-cases/re-export-cases: added tests for all combinations of re-exporting + + +2007-03-14 Nick Kledzik + + sort external relocations to optimize dyld performance + * src/MachOWriterExecutable.hpp: added ExternalRelocSorter + * src/machochecker.cpp: verify external relocations are grouped by symbol number + * unit-tests/test-cases/external-reloc-sorting: added test case + + +----- Tagged ld64-72 + +2007-03-06 Nick Kledzik + + * src/Options.cpp: ignore .objc_category_name_* symbols in .exp files + + +2007-03-06 Nick Kledzik + + * src/Options.cpp: stop special casing mach_kernel and instead requre kernel to be built with -new_linker + + +2007-03-06 Nick Kledzik + + ld64-72 (experimental) is causing DejaGnu test failures + * src/MachOWriterExecutable.hpp: add optimizableGOTReferenceKind() to track GOT uses that cannot be optimized + + +2007-03-06 Nick Kledzik + + minimum header padding should be 32 to allow code signing + * src/Options.cpp: initialize fMinimumHeaderPad to 32 + * src/MachOWriterExecutable.hpp: better calculation of header padding + + +2007-03-06 Nick Kledzik + + Linker crashes with -flat_namespace against two-level dylibs that might have re-exports + * src/ld.cpp: flat namespace should not allow NULL indirect readers + + +2007-03-06 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: don't error on S_COALESCED sections with anonymous atoms + * src/MachOWriterExecutable.hpp: set MH_PIE bit when linking -pie + * ld64.xcodeproj/project.pbxproj: don't echo environment when running unit test + + +2007-03-01 Nick Kledzik + + * doc/man/man1/ld.1: Add descriptions to all "rarely used options" + + +2007-03-01 Nick Kledzik + + Remove support for Essential Symbols: Warn about use of -Sp option; remove man page entry + * src/Options.cpp: make -Sp obsolete + * doc/man/man1/ld.1: make -Sp obsolete + + +2007-03-01 Nick Kledzik + + Support -pie + * src/Options.h: Add positionIndependentExecutable() + * src/Options.cpp: Support -pie option to set positionIndependentExecutable() + * src/MachOWriterExecutable: if -pie is used, add extra local relocations and error if any + absolute addressing is used + + +2007-03-01 Nick Kledzik + + ld64 should link mach_kernel during xnu builds to support dtrace + * src/ld.cpp: Ensure segments are laid out in discovery order. Add support for kAbsoluteSymbol. + Warn when merging symbols of different visiblity. Warn when a tentative definition + is replaced by one a real definition with a smaller size. Lay out __common section + so that ones built with -fno-commons come before regular commons. + * src/ObjectFile.h: remove SegmentOffset ivar and getter/setters + * src/machochecker.cpp: allow images with no r/w segments + * src/MachOReaderRelocatable: Add AbsoluteAtom. Sort tentative definitions by name instead of by size + Add support for custom commons alignment. + * src/Options.cpp: Fix spurious -sectalign warnings. Don't use ld_classic when linking mach_kernel + * src/MachOWriterExecutable.hpp: Support kAbsoluteSymbol atoms. In -r mode, set custom alignment + for commons if alignment is not its size. Support global __dtrace_probe labels. + * src/ObjectDump.cpp: add support for kAbsoluteSymbol atoms. + * unit-tests/test-cases/commons-alignment: Added test case for custom commons alignment + * unit-tests/test-cases/absolute-symbol: Added test case for basic absolute symbols + * unit-tests/test-cases/segment-order: Added test case that segments lay out in discovery order + * unit-tests/test-cases/commons-order: Added test case that commons lay out correctly + * unit-tests/test-cases/end-label: Added test case that a label used to mark the end of a section does not + get associcated with the next section. + + +2007-02-23 Nick Kledzik + + gcc-5005: DejaGnu failures due to -frepo + * src/ld.cpp: Add quotes to referenced from name to make collect2 and -frepo happy + + +2007-02-22 Nick Kledzik + + * src/MachOWriterExecutable.hpp: rework how padding after load commands is calculated + + +2007-02-21 Nick Kledzik + + * src/MachOWriterExecutable.hpp: extend special case of __mh_execute_header to static executables too + + +2007-02-21 Nick Kledzik + + gcc link map option ( "-M" ) should be redirectable to file + * doc/man/man1/ld.1: added -map option description + * src/Options.h: added generatedMapPath() + * src/Options.cpp: set up generatedMapPath() if -map option is used + * src/MachOWriterExecutable.hpp: add writeMap() method to generate map file + + +2007-02-19 Nick Kledzik + + Implement GOT Load elimination optimization + * src/ld.cpp: track size of all atoms and if > 2GB sort large zero-fill atoms to end + * src/MachOWriterExecutable.hpp: If image size < 2GB, only generate GOT entries if value must be + updatable by dyld. If > 2GB, only eliminate GOT entries to non-zero-fill atoms. Any use + of an eliminated GOT entry has its code changed from MOVQ _foo@GOT(%rip) to LEAQ _foo(%rip). + * unit-tests/test-cases/large-data: added + * unit-tests/test-cases/got-elimination: added + + +----- Tagged ld64-71.2 + +2007-02-13 Nick Kledzik + + new ld ignores -segprot option + * src/Options.h: expose customSegmentProtections() + * src/Options.cpp: parse -segprot option and populate customSegmentProtections() + * src/MachOWriterExecutable.hpp: use customSegmentProtections() + + +2007-02-13 Nick Kledzik + + i386 -stack_addr doesn't work + * src/MachOWriterExecutable.hpp: use correct offset into thread state record + + +----- Tagged ld64-71.1 + +2007-02-07 Nick Kledzik + + * src/ld.cpp: sort __OBJC2 segment to be next to __OBJC segment + + +2007-02-07 Nick Kledzik + + * src/Options.cpp: change missing -seg_addr_table from an error to a warning + + +2007-02-06 Nick Kledzik + + Leopard 9A357: -dylib_file broken? + * src/MachOWriterExecutable.hpp: remove use of fInstallPathOverride + * src/Options.cpp: wire up -dylib_file option + * src/Options.h: remove fInstallPathOverride. add fDylibOverrides + * src/ld.cpp: check dylibOverrides() for indirect libraries + * unit-tests/test-cases/dylib_file: add test case + + +2007-02-05 Nick Kledzik + + * src/MachOReaderDylib.hpp: don't warn about zero size __image_info sections + + +2007-02-04 Rick Balocca + Enable the failing cases for missing command line arguments + +2007-02-04 Rick Balocca + Make sure that all .o's are checked by ObjectDump + and all macho are checked by machochecker + +2007-02-04 Rick Balocca + Fix an endian problem with machochecker + Fix blank-stubs Makefile + +----- Tagged ld64-71 + +2007-02-02 Rick Balocca + blank-stubs test case: handle the case of a native ppc compile--this + sets the subtype, which must be passed to lipo + +2007-02-01 Rick Balocca + make cpu-sub-types test more robust + +2007-02-01 Rick Balocca + auto-arch tests were resulting in a false FAILs + +2007-02-01 Rick Balocca + test cpu-sub-types was resulting in a false FAIL + +2007-02-01 Nick Kledzik + + STD:VSC: c99 -o writes to file that does not have write permission + * src/MachOWriterExecutable.hpp: check file is writable before using it + +2007-02-01 Nick Kledzik + + debug map (N_OSO) timestamps for object files in ranlib archive are incorrect + * src/MachOReaderArchive.hpp: parse modTime for .o files out of archive header + +2007-01-31 Nick Kledzik + + 9A354: ld -all_load does *NOT* produce the same dSYM as *.o or -u + * src/ld.cpp: when using -all_load don't assume that all atoms have same reader + * unit-tests/test-cases/dwarf-archive-all_load: added + +----- Tagged ld64-70.1 + +2007-01-31 Nick Kledzik + + * src/MachOWriterExecutable.hpp: in addObjectRelocs_powerpc() mask scattered r_address to 16-bits + +----- Tagged ld64-70 + + +2007-01-30 Nick Kledzik + + linker should verify GC consistency of modules being linked into library + Support cpu-sub-types for ppc + * src/ObjectFile.h: Add getObjCConstraint() and getCpuConstraint() + * src/MachOReaderRelocatable.hpp: don't make atom for __image_info section, instead parse constaints + * src/MachOReaderDylib.hpp: look at __image_info content to get constaints + * src/ld.cpp: add updateContraints() and checkObjc() + * src/MachOWriterExecutable.hpp: add ObjCInfoAtom to sythesize __image_info content + + +2007-01-28 Nick Kledzik + + src/*: remove ObjectFile::requiresFollowOnAtom() method + + +2007-01-28 Nick Kledzik + + src/ld.cpp: enable LLVM_SUPPORT by default + src/LLVMReader.hpp: don't use absolute paths for llvm headers and libraries + + +2007-01-26 Rick Balocca + * src/ObjectDump.cpp: The usage() message was incorrect. + + +2007-01-25 Rick Balocca + * unit-tests/test-cases/zero-fill3: It was reporting FAIL on ld64 error return. + It should have been checking for non-error return. + + +2007-01-24 Nick Kledzik + + x86 fast stubs should not cross 64-byte boundries + * src/MachOWriterExecutable.hpp: for x86, 64-byte align __jump_table section + and make 64-btye crossing stubs be empty entries with indirect symbol table + entry of INDIRECT_SYMBOL_ABS + + +2007-01-19 Nick Kledzik + + * src/Options.h: add readOnlyx86Stubs() + * src/Options.cpp: support -read_only_stubs + * src/MachOWriterExecutable.hpp: make __IMPORT segment not writable if -read_only_stubs is used + + +2007-01-16 Eric Christopher + + ld64 --help isn't recognized + * src/Options.cpp (Options::parse): Support --help and -help. + + +2007-01-15 Nick Kledzik + + * src/MachOFileAbstraction.hpp: add range checking on macho_scattered_relocation_info::set_r_address() + + +2007-01-14 Nick Kledzik + + Support wildcards in contents of -exported_symbols_list + * src/Options.h: add SetWithWildcards class + * src/Options.cpp: add -exported_symbol and -unexported_symbol and use SetWithWildcards + * doc/man/man1/ld.1: add -exported_symbol and wildcard explanation + * unit-tests/test-cases/exported-symbols-wildcards: added test case + + +2007-01-10 Nick Kledzik + + [U]SDT probes should use C calling convention + * src/Options.cpp: Add -read_only_dof + * src/ld.cpp: create __dof section(s) based on probe and isenabled sites + * src/MachOReaderRelocatable.hpp: parse new sdt 2.0 probes encoded in .o files + * src/MachOWriterExecutable.hpp: handle regenerating dtrace probes into .o files + * unit-tests/test-cases/dtrace-static-probes: added test case + + +----- Tagged ld64-69.8 + +2007-01-30 Nick Kledzik + + Support LD_FORCE_NO_SEG_ADDR_TABLE + * src/Options.cpp: Support LD_FORCE_NO_SEG_ADDR_TABLE + + +----- Tagged ld64-69.7 + +2007-01-25 Nick Kledzik + + Leopard9A351: CFM Apps Are Broken because CFM glue is missing + * src/MachOReaderRelocatable.hpp: check S_ATTR_NO_DEAD_STRIP in dontDeadStrip() + + +----- Tagged ld64-69.6 + +2007-01-24 Nick Kledzik + + LD_TRACE_ARCHIVES should only print out when a .o is actually used from an archive + * src/ld.cpp: create and use logArchive() + + +----- Tagged ld64-69.5 + +2007-01-22 Nick Kledzik + + 9A350: can't link ppc programs with ld_classic + * src/Options.cpp: Remove support for LD_NO_CLASSIC_LINKER. Add support for -classic_linker + + +----- Tagged ld64-69.4 + +2007-01-17 Nick Kledzik + + QTComponents does not link with ld64 + * src/MachOReaderRelocatable.hpp: handle N_RSYM and N_PSYM stabs + + +----- Tagged ld64-69.3 + +2007-01-03 Nick Kledzik + + * src/Options.cpp: If the same dylib is specified twice and the second is specified weak, make it weak + + +----- Tagged ld64-69.2 + +2006-12-18 Nick Kledzik + + -dead_strip without -exported_symbols_list should not strip global functions from archives + * src/ld.cpp: when adding a .o file from an archive, add all its global symbols to live roots + * unit-tests/test-cases/dead_strip-archive: added + + +2006-12-18 Nick Kledzik + + flat_namespace main executables do not need to indirect interior references + * src/MachOWriterExecutable.hpp: don't indirect references to global symbols in main executables + * unit-tests/test-cases/flat-main: updated to test for indirection + * unit-tests/test-cases/flat-dylib: added + + +----- Tagged ld64-69.1 + +2006-12-15 Nick Kledzik + + -flat_namespace does not work with -mdynamic-no-pic + * src/MachOWriterExecutable.hpp: rework checking for use of ppc absolute addressing to allow them as long as + the target is within the same linkage unit. + + +2006-12-15 Nick Kledzik + + -ObjC should only load .o with .objc_ symbols + * src/Options.cpp: remove warning from -ObjC and have it instead set fLoadAllObjcObjectsFromArchives + * src/MachOReaderArchive.hpp: when -ObjC is used, preload all .o files from archives that contain .objc_ symbols + + +----- Tagged ld64-69 + +2006-12-13 Nick Kledzik + + prebound interior pointers must be non-zero + * src/MachOWriterExecutable.hpp: in fixUpReference_powerpc() set lazy pointers bound to with the dylib to + their target value. Properly set REFERENCE_FLAG_UNDEFINED_* flags in reference table and n_desc + + +2006-12-09 Nick Kledzik + + ld64 fails to detect error that ld_classic does + * src/MachOWriterExecutable.hpp: check for absolute reloc to an external symbol + * src/MachOReaderRelocatable.hpp: ignore -mlong-branch stubs in .o files + + +2006-12-09 Nick Kledzik + + symbols with REFERENCED_DYNAMICALLY should never be stripped + * src/MachOWriterExecutable.hpp: update Writer::shouldExport() to check for kSymbolTableInAndNeverStrip + * unit-tests/test-cases/main-stripped: add test that dynamically referenced symbol cannot be stripped + + +2006-12-08 Nick Kledzik + + * unit-tests/test-cases/allowable-client: add variant test cases (e.g. CoreServices_profile) + * src/ld.cpp: allow frameworks with variant install names (e.g. CoreServices_profile) to be private clients + + +2006-12-08 Nick Kledzik + + * doc/man/man1/ld.1: rewrite man page + * src/Options.h: add warnObsolete() + * src/Options.cpp: use warnObsolete() on many options. Make nonWeak the weak-mis-match default. + Make -ObjC mean -all_load. + +----- Tagged ld64-68.3 + +2006-12-05 Nick Kledzik + + * src/ld.cpp: allow umbrella frameworks to have variant install names (e.g. CoreServices_profile) and still link + + +----- Tagged ld64-68.2 + +2006-12-05 Nick Kledzik + + * src/MachOWriterExecutable.cpp: Use N_PBUD in the symbol table for undefined symbols in prebound dylibs + + +----- Tagged ld64-68.1 + +2006-12-01 Nick Kledzik + + * src/Options.cpp: always generate module tables for 32-bit architectures so that ld_classic + can link against them + + +----- Tagged ld64-68 + +2006-12-01 Nick Kledzik + + seg_addr_table needs matching fuzziness + * src/Options.cpp: special case a how a dozen dylib are looked up in the seg_addr_table + + +2006-12-01 Nick Kledzik + + * src/Options.cpp: have all -static links for 32-bit archs roll over to ld_classic unless + LD_NO_CLASSIC_LINKER_STATIC is set. + * unit-tests/bin/make-recursive.pl: set LD_NO_CLASSIC_LINKER_STATIC for unit tests + + +2006-11-29 Nick Kledzik + + ld64-67: QTComponents fails to build + * src/MachOReaderRelocatable.hpp: don't error out when a local non-lazy pointer does not point to a symbol + * unit-tests/test-cases/strip_local: added test case + + +2006-11-28 Nick Kledzik + + Need a way to mark libraries usable by dynamic linker but unusable by static linker + * src/Options.cpp: allow -client_name to be used with main executables + * src/ld.cpp: generalize -allowable_client. Any dylib can now restrict who can link against it. As a convention + linking with -allowable_client '!' will mean no one can statically link with the dylib. It can still be loaded + dynamically, or by any existing clients, but no new clients can link with it. + * unit-tests/test-cases/allowable-client/Makefile: enable previously commented out test cases. Add test cases + of a dylib that allows no clients and just one client + +2006-11-27 Nick Kledzik + + -final_output should be used if -install_name not used + * src/Options.cpp: fall back to using -final_output for install name + + +----- Tagged ld64-67 + +2006-11-17 Nick Kledzik + + * src/MachOWriterExecutable.hpp: support __IMPORT segment being slide independently of __DATA segment in shared cache + + +2006-11-16 Nick Kledzik + + 9a303: ld -filelist Bus Error + * src/Options.cpp: add check that -filelist is followed by an argument + + +2006-11-16 Nick Kledzik + + * src/MachOWriterExecutable.hpp: when building split-seg dylibs, LINKEDIT goes in read-only side + + +2006-11-15 Nick Kledzik + + * src/MachOWriterExecutable.hpp: set proper attributes for __eh_frame in ld -r mode + * unit-tests/test-cases/eh_frame: added test case + + +2006-11-10 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: redirect references to static weak stubs to the real target + + +2006-11-09 Nick Kledzik + + * src/MachOWriterExecutable.hpp: r_address is offset from first LC_SEGMENT vmaddr - not from segment with lowest address + + +----- Tagged ld64-66.1 + +2006-11-09 Nick Kledzik + + * src/MachOWriterExecutable.hpp: initialize fModuleInfoAtom to zero + + +2006-11-08 Nick Kledzik + + FSF GCC's libjava doesn't link with Ochre ld64 + * src/MachOReaderRelocatable.hpp: ignore debug_line section if debug_info section is missing or empty + +----- Tagged ld64-66 + +2006-11-07 Nick Kledzik + + SWB: d64-65 does not built usage split-seg dylibs + * src/MachOWriterExecutable.hpp: when prebinding split-seg correctly set r_address fields and on + disk values for external relocations + * unit-tests/test-cases/prebound-split-seg: added test case + + +2006-11-03 Nick Kledzik + + * src/MachOReaderDylib.hpp: don't report dependent libraries if MH_NO_REEXPORTED_DYLIBS bit is set + * src/MachOWriterExecutable.hpp: set MH_NO_REEXPORTED_DYLIBS bit if dylib does not logically re-export any other dylibs + * unit-tests/test-cases/re-export-flag: added test case + * src/machochecker.cpp: validate use of MH_NO_REEXPORTED_DYLIBS + + +2006-11-02 Nick Kledzik + + Mysterious messages from ld64 with MACOSX_DEPLOYMENT_TARGET = 10.5 + * src/MachOWriterExecutable.hpp: kPointerWeakImport is a valid reference type to cross segments + + +2006-11-02 Nick Kledzik + + * src/Options.cpp,h: Add support for -rpath + * src/MachOFileAbstraction.hpp: add macho_rpath_command + * src/MachOWriterExecutable.hpp: add RPathLoadCommandsAtom to create LC_RPATH for each -rpath + + +----- Tagged ld64-65 + +2006-10-30 Nick Kledzik + + x86_64 default stack_addr is wrong + * src/Options.cpp: change default 64-bit stack location when using -stack_size + + +2006-10-30 Nick Kledzik + + dylibs need modules for 10.3 and for ld_classic in Salt + * src/MachOWriterExecutable.hpp: add ModuleInfoLinkEditAtom to create module table stuff + * src/Options.cpp,h: Add needsModuleTable() + * src/MachOFileAbstraction.hpp: Add macho_dylib_module, macho_dylib_reference, and macho_dylib_table_of_contents + + +2006-10-27 Nick Kledzik + + * unit-tests/test-cases/no-uuid/Makefile: add -gstabs+ to be compatible with latest compiler + * unit-tests/test-cases/stabs-coalesce/Makefile: add -gstabs+ to be compatible with latest compiler + + +2006-10-26 Nick Kledzik + + i386 -mdynamic-no-pic switch statement jump table is out of line + * src/MachOWriterExecutable.hpp: for i386 don't check for direct references to weak symbols + + +2006-10-26 Devang Patel + + * src/LLVMReader.hpp: Supply final output file path to optimizer. + +2006-10-26 Devang Patel + + * src/ObjectFile.h: Make setSection* methods virtual. + * src/LLVMReader.hpp: Override setSection* methods. + +2006-10-26 Devang Patel + + * unit-tests/test-case/llvm-integration/a13.h: New. + * unit-tests/test-case/llvm-integration/a13.cc: New. + * unit-tests/test-case/llvm-integration/main13.cc: New. + +2006-10-26 Devang Patel + + * src/options.h, src/options.cpp: Add -save-temps command line option. + * src/LLVMReader.hpp: Use saveTemps option. + + +2006-10-26 Devang Patel + + * src/LLVMReader.hpp: Remove invalid module from memory. + +2006-10-26 Devang Patel + + * src/LLVMReader.hpp: Collect symbol alignment info from LLVM optimizer. + +2006-10-21 Eric Christopher + + * src/ld.cpp (Linker::Linker): Check for LD_NO_CLASSIC_LINKER before + invoking ld_classic. + * unit-tests/test-cases/relocs-literals/Makefile: Run for -mdynamic-no-pic + and pic. + * unit-tests/test-cases/static-executable/Makefile: Skip for 64-bit. Add + -dead_strip to command line. + +----- Tagged ld64-64.2 + +2006-10-19 Nick Kledzik + + * ld64.xcodeproj/project.pbxproj: stop copying LLVMReader.hpp into man1 directory + +----- Tagged ld64-64.1 + +2006-10-19 Nick Kledzik + + ld64-63.1 erroneously coalesces an empty string with a non-empty string + * src/MachOReaderRelocatable.hpp: rework cstring parsing to not assume all strings are start + at section alignment boundaries, and when coalescing empty strings always use one with greatest + alignment requirement + * src/MachOWriterExecutable.hpp: in -r mode, don't pad end of cstring section + * src/ObjectFile.h: correctly name leadingZeros() as trailingZeros() + * src/ld.cpp: leadingZeros() --> trailingZeros() + + +2006-10-18 Eric Christopher + + * unit-tests/test-cases/read-only-relocs/Makefile: Skip for x86_64. + * unit-tests/test-cases/llvm-integration/Makefile: Skip if llvm isn't + present. + +2006-10-18 Nick Kledzik + + ld64 change required to go with assembler cstring change + ld64 should error when a local relocation references an address outside its section + * src/MachOReaderRelocatable.hpp: for x86_64 in order to work with local or external relocations to cstrings + change parser to allow atoms with a pending name that is resolved after references are instantiated. + Make direct references to kRegularDefinition atoms. + * src/MachOWriterExecutable.hpp: in -r mode for x86_64 generate L* labels for cstrings and use external relocations + * unit-tests/test-cases/relocs-literals/test.c: add two cases of cstring literal plus addend + + +2006-10-06 Nick Kledzik + + check MACOSX_DEPLOYMENT_TARGET if -macosx_version_min is not used + * src/Options.cpp: if -macosx_version_min is not used, check MACOSX_DEPLOYMENT_TARGET, if + that is unused, default to 10.5 + +----- Tagged ld64-64 + +2006-10-06 Nick Kledzik + + crash in ppc64 program - bl to saveFP, but saveFP is too far away? + * src/MachOWriterExecutable.hpp: in addPPCBranchIslands(), properly account for growth of __text + + +2006-10-06 Nick Kledzik + + Linker-defined alias converts reference into definition and generates error. + * src/MachOReaderRelocatable.hpp: only alias symbols actually in the symbol table + + +2006-10-06 Nick Kledzik + + * unit-tests/test-cases/dwarf-debug-notes/Makefile: crt1.o no longer has stabs, so don't need to strip it + * unit-tests/test-cases/dwarf-debug-notes-r/Makefile: crt1.o no longer has stabs, so don't need to strip it + + +2006-10-06 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: rework dwarf line parsing to fix warnings that starting + showing up with gcc-5421 + + +2006-10-05 Eric Christopher + + ld64 needs to support libtool options + * src/Options.cpp (Options::parse): Add -noall_load, -install_name, + -current_version and -compatibility_version. + +2006-10-03 Eric Christopher + + * src/Options.cpp (Options::gotoClassicLinker): Use execvp + to call ld_classic. + +2006-10-03 Eric Christopher + + * unit-tests/test-cases/tentative-to-real/Makefile: Clean up after tests. + +2006-10-03 Eric Christopher + + * unit-tests/include/common.makefile (VALID_ARCHS): Add x86_64. + (OTOOL): Remove munging based on ARCH. + +2006-09-29 Nick Kledzik + + problem merging .o files built with and without -fno-common + src/Options.*: make MakeTentativeDefinitionsReal a reader option + src/ObjectFile.h: make MakeTentativeDefinitionsReal a reader option + src/MachOWriterExecutable.hpp: make MakeTentativeDefinitionsReal a reader option + src/MachOReaderRelocatable.hpp: only assign a section name of __common to + tentative defintions when making a final linked image + + +2006-09-28 Nick Kledzik + + src/Options.h/.cpp: add support for -segaddr option + src/MachOWriterExecutable.hpp: In Writer::assignFileOffsets(), use -segaddr info + + +2006-09-28 Nick Kledzik + + Emit new CPU subtypes for ppc64 and x86-64 when targeting 10.5 or later + src/MachOWriterExecutable.hpp: set high bit of cpusubtype of 64-bit main executables when targeting 10.5 or later + + +2006-09-28 Devang Patel + + Add LLVM LTO support + src/LLVMReader.hpp: New file. + src/ld.cpp: Add optimization phase. Use LLVM LTO. + unit-tests/test-cases/llvm-integration: New tests. + +2006-09-27 Nick Kledzik + + ld64.xcodeproj/project.pbxproj: remove accidental install of source file into man1 + + +2006-09-25 Nick Kledzik + + src/Architectures.hpp: add kPointerDiff16 for ppc and ppc64 + src/MachOReaderRelocatable.hpp: support kPointerDiff16 + src/MachOWriterExecutable.hpp: support kPointerDiff16 + +----- Tagged ld64-63.1 + +2006-09-22 Nick Kledzik + + src/MachOWriterExecutable.hpp: include stubs in LC_SEGMENT_SPLIT_INFO + + +2006-09-21 Nick Kledzik + + src/Options.cpp: disable split-seg dylibs for 64-bit architectures + + +2006-09-19 Nick Kledzik + + src/MachOReaderRelocatable.hpp: rework __cstring parsing to better handle mixed alignment cstrings + src/MachOWriterExecutable.hpp: in -r mode, make all __cstrings aligned to section alignment + + +2006-09-19 Nick Kledzik + + src/MachOWriterExecutable.hpp: rework encoding of LC_SEGMENT_SPLIT_INFO + + +2006-09-19 Nick Kledzik + + src/Options.cpp: check for -search_paths_first in first pass + + +----- Tagged ld64-63 + +2006-09-15 Nick Kledzik + + src/Options.cpp: since the ld64 will repeatedly search an archive, and some project list archives + multiple times on command line to work with traditional linkers, automatically ignore duplicate libraries + unit-tests/test-cases/archive-duplicate: added test case + + +2006-09-15 Nick Kledzik + + src/Options.cpp: support -r -static + src/MachOWriterExecutable.hpp: support -r -static an don't generate LC_DYSYMTAB + + +2006-09-14 Nick Kledzik + + src/MachOWriterExecutable.hpp: in -r mode references to weak symbols should not create external relocations + as that can cause nmedit to errror later. + + +2006-09-13 Nick Kledzik + + ld64: Handle .objc_class_name exports specially + src/Options.cpp: add hack so that .objc_class_name_XXX in -exported_symbols_list imples _OBJC_CLASS_$_XXX + src/ld.cpp: add hack to supporess errors about .objc_class_name_XXX or _OBJC_CLASS_$_XXX being undefined + + +2006-09-12 Nick Kledzik + + Support -prebind when targeting ppc and OS < 10.4 + src/Options.h: add splitSeg() and baseWritableAddress() + src/Options.cpp: Add support for -seg_addr_table and LD_SEG_ADDR_TABLE, and -prebind and LD_PREBIND. + src/src/MachOWriterExecutable.hpp: support split-seg and canonical prebound files to be generated + + +2006-09-11 Nick Kledzik + + Linking a dylib or binary from identical binaries should produce the same output + src/MachOWriterExecutable.hpp: set the timestamps to be constant + + +2006-09-11 Nick Kledzik + + Linker support for ordering all sections and symbols + src/Options.cpp: Add -order_file_statistics. Allow architecture prefixes in order files + src/ld.cpp: Use fOptions.printOrderFileStatistics() + + +2006-09-11 Nick Kledzik + + Support -sectorder + unit-tests/test-cases/order_file: added test case + src/ld.cpp: Implement order file support in Linker::sortAtoms() + src/Options.h: add Options.orderedSymbols() + src/Options.cpp: add parseOrderFile(), implement -order_file + + +2006-09-07 Nick Kledzik + + need -i for 64-bit (or equivalent) + Support -i for aliasing exported symbols + unit-tests/test-cases/alias-objects: added + unit-tests/test-cases/alias-command-line: added + src/ObjectFile.h: Added Atom::getOrdinal() as new way to sort atoms. Added ReaderOptions.fAliases + src/MachOReaderRelocatable.hpp: Added SymbolAliasAtom to handle multiple symbols to same address + src/MachOReaderArchive.hpp: implement Atom::getOrdinal() to space out atom ordinals across member objects + src/Options.cpp: support -i, -alias, -alias_list. Move search of /Network/Library/Frameworks to after /System/Library/Frameworks + src/MachOWriterExecutable.hpp: pad out seg_info data. Implement getOrdinal(). + src/ObjectDump.cpp: call constructors directly instead of using make() wrapper + + +2006-09-01 Nick Kledzik + + Need the ability to tag libraries/plug-ins with security attributes + src/MachOReaderDylib.hpp: add warning if using -root_safe or -setuid_safe and link against dylib that is not + src/ObjectFile.h: add ReaderOption fRootSafe and fSetuidSafe + src/Options.cpp: handle -root_safe or -setuid_safe command line options + src/MachOWriterExecutable.hpp: set MH_ROOT_SAFE and MH_SETUID_SAFE flags + + +2006-08-31 Nick Kledzik + + src/ld.cpp: Add Linker::processDTrace() for processing dtrace static probes + src/OpaqueSection.hpp: renamed, add symbol name, add ability to add references + ld64.xcodeproj/project.pbxproj: remove SectCreate.cpp, add OpaqueSection.hpp + + +2006-08-28 Nick Kledzik + + Add convention for removing symbols at link time + Assembler -L option causes ld64 to split stubs + unit-tests/test-cases/special-labels: added test case + src/MachOReaderRelocatable.hpp: ignore L* labels, make l* labels as kSymbolTableNotIn + + +2006-08-28 Nick Kledzik + + src/lObjectFile.h: refactor isTargetUnbound() into getTargetBinding() + src/ld.cpp: create __dof section in final linked images from dtrace static probes + src/Architectures.hpp: add kDtraceProbe + src/Options.h/cpp: Add support for -dtrace + src/machochecker.cpp: support LC_SEGMENT_SPLIT_INFO + src/MachOWriterExecutable.hpp: support kDtraceProbe + src/MachOReaderRelocatable.hpp: suppport kDtraceProbe + + +2006-08-25 Nick Kledzik + + generate LC_SEGMENT_SPLIT_INFO for 10.5 or later dylibs + src/Options.h&.cpp: implement sharedRegionEligible() to control when LC_SEGMENT_SPLIT_INFO is added + src/MachOFileAbstraction.hpp: add macho_linkedit_data_command + src/MachOWriterExecutable.hpp: generate LC_SEGMENT_SPLIT_INFO load command and linkedit content + +----- Tagged ld64-62 + +2006-08-15 Nick Kledzik + + wrong error message when symbol is found in unused indirect library + src/ld.cpp: remove indirect libraries if they are not re-exported + unit-tests/test-cases/indirect-dylib: added test case + + +2006-08-15 Nick Kledzik + + alignment needs to be richer + src/ObjectFile.h: define ObjectFile::Alignment class for tracking rich alignment info + src/ld.cpp: modify SymbolTable::add() to work with new Alignment type + src/MachOReaderRelocatable.hpp: use new Alignment type. Remove alignAtLeast() and handleAnonymousNonLazyPointers() + src/MachOWriterExecutable.hpp: update for new Alignment type, use modulus when calculating layout address + src/ObjectDump.cpp: print richer Alignment info + unit-tests/test-cases/align-modulus: added test case + + +2006-08-11 Nick Kledzik + + remove OPEN_SOURCE conditionals around x86_64 support + + +2006-07-31 Nick Kledzik + + ld64 while linking cc1 [ when dead_strip is ON] + src/ld.cpp: Add ivar fAtomsWithUnresolvedReferences to track atoms not initially resolvable + unit-tests/test-cases/dead_strip-archive: added test case + + +2006-07-31 Nick Kledzik + + x86_64: instructions with immediate and rip-relative operands need to use new relocation types + src/MachOWriterExecutable.hpp: generate new reloc types in -r mode + src/MachOReaderRelocatable.hpp: parse new reloc types + unit-tests/test-cases/relocs-asm/relocs-asm.s: add test cases for new reloc type + + +2006-07-18 Nick Kledzik + + src/MachOReaderRelocatable.hpp: suppress warning about dwarf info parsing for one benign no-op case + the compiler emits when there are not functions in the __text section + + +2006-07-17 Nick Kledzik + + faster debug note generation + src/ld.cpp: rework collectDebugInfo() to produce all debug notes in one pass, intead of a + pass per .o file. Added timing info for collectDebugInfo() to -print_statistics + unit-tests/test-cases/dwarf-debug-notes-r/Makefile: add expliced -arch to ld -r + unit-tests/test-cases/dwarf-debug-notes-r/expected-stabs: alter for new debug notes order + + +2006-07-17 Nick Kledzik + + ld64 VSIZE is 1.18GB when building Finder ppc64 + src/ld.cpp: fixed typo in createReader() that prevented dylibs from being unmapped + +----- Tagged ld64-61.1 + +2006-07-11 Nick Kledzik + + ld64-61: gcc DejaGnu tests failing due to -arch followed by unknown architecture name + src/Options.cpp: map ppc750, ppc7400, ppc7450, and ppc970 to ppc. Improve error message + +2006-07-11 Nick Kledzik + + If -arch is missing, rollover to ld_classic does not happen + src/Options.h: make gotoClassicLinker() public + src/ld.cpp: call gotoClassicLinker() if the inferred architecture is ppc or i386 + +----- Tagged ld64-61 + +2006-06-29 Nick Kledzik + + ld64 should be renamed to ld + src/Options.cpp: exec() ld_classic if -arch ppc or -arch i386 is seen + src/ld.cpp: alter version string + ld64.xcodeproj/project.pbxproj: change install location to /usr/bin/ld, add symlink from /usr/bin/ld64 + doc/man/man1/ld.1: added + +----- Tagged ld64-60 + +2006-06-28 Nick Kledzik + + Can't link large ppc64 program: ld64 says "bl out of range" + MachOWriterExecutable.hpp: fix branch island generation to work for weak_import functions + and properly chain together branch islands + MachOReaderRelocatable.hpp: improve performance of huge .o file reading by sorted references + only when done + +2006-06-28 Nick Kledzik + + MySQL-36 fails to build with ld64-59 + src/MachOReaderRelocatable.hpp: back out fix for 4585335 + src/MachOWriterExecutable.hpp: back out fix for 4585335 + +2006-06-27 Nick Kledzik + + src/MachOReaderRelocatable.hpp: handle N_GSYM without ending :G() since that is how + dwarf debug notes are formed. + +2006-06-23 Nick Kledzik + + + + ld64 doesn't support variant linking -framework fw,_debug + src/Options.cpp: enhance findFramework() to support suffixes + +----- Tagged ld64-59 + +2006-06-22 Nick Kledzik + + ld64 lost DWARF debug notes + src/MachOReaderRelocatable.hpp: add fHasUUID so kDebugInfoStabsUUID can be set later + unit-tests/test-cases/dwarf-debug-notes-r: added test case + +2006-06-21 Nick Kledzik + + python 64-bit address miscalculation + src/MachOReaderRelocatable.hpp: change getTargetOffset() to sign extend the 32-bit value to 64-bits + +2006-06-21 Nick Kledzik + + ld64 seems to offset things incorrectly when using -r + src/MachOWriterExecutable.hpp: in -r mode, virtual sections should not increment address + + +----- Tagged ld64-58 + +2006-06-16 Nick Kledzik + + src/rebase.cpp: fix page alignment problem + src/rebase.cpp: fix endianess problem with local non-lazy pointers + +2006-06-15 Nick Kledzik + + src/rebase.cpp: fix to build in CurryWeed + ld64.xcodeproj/project.pbxproj: fix to build properly in CurryWeed + +2006-06-15 Nick Kledzik + + Support .objc_class_name_* symbols + src/ObjectFile.h: Add kSymbolTableInAsAbsolute + src/MachOReaderRelocatable.hpp: synthesize references to required objc classes + src/MachOWriterExecutable.hpp: write objc_class_name as absolute symbol + unit-tests/test-cases/objc-references: added + +2006-06-15 Nick Kledzik + + SECTION_ATTRIBUTES unset in ppc64 mach-o header + src/MachOWriterExecutable.hpp: add section attribute for sections with code + +2006-06-15 Nick Kledzik + + ld64 bogus duplicate symbol name linking GNU libobjc + src/MachOReaderRelocatable.hpp: only special case Apple objc runtime objc classes + +2006-06-15 Nick Kledzik + + x86_64: ".align" directive not honored + src/MachOReaderRelocatable.hpp: change code alignment to not depend on atom size + +2006-06-14 Nick Kledzik + + jump table into middle of weak symbol causes error + src/MachOReaderRelocatable.hpp: create direct references to the interior of weak symbols + src/MachOWriterExecutable.hpp: do not error on absolute references to interior of weak symbols + +2006-06-13 Nick Kledzik + + src/Options.cpp: allow -image_base as an alias for -seg1addr + +2006-06-13 Nick Kledzik + + implement -d + src/Options.h: add fMakeTentativeDefinitionsReal + src/Options.cpp: set fMakeTentativeDefinitionsReal if -d option is found + src/MachOWriterExecutable.hpp: turn tentative into real definition if makeTentativeDefinitionsReal + unit-tests/test-cases/btentative-to-real: added test case + +2006-06-13 Nick Kledzik + + implement -bundle_loader + src/Options.h: add fBundleLoader bit to DynamicLibraryOptions + src/Options.cpp: handle -bundle_loader + src/ld.cpp: pass fBundleLoader bit to MachOReaderDylib + src/MachOReaderDylib.hpp: support reading MH_EXECUTE files if fBundleLoader is set + src/MachOWriterExecutable.hpp: set bundle loader ordinal as EXECUTABLE_ORDINAL + unit-tests/test-cases/bundle_loader: added test case + +2006-06-12 Nick Kledzik + + -syslibroot can cause "can't find ordinal for imported" error + src/MachOReaderDylib.hpp: in Reader::reExports() compare install path in addition to load path + + +2006-06-10 Nick Kledzik + + Need rebasing tool + src/rebase.cpp: added + unit-tests/test-cases/rebase-basic: added + doc/man/man1/rebase.1: added + ld64.xcodeproj/project.pbxproj: added rebase target. changed all targets to build with dwarf + + +2006-06-10 Nick Kledzik + + src/machochecker.cpp: add some ppc reloc sanity checking + +----- Tagged ld64-57 + +2006-06-06 Nick Kledzik + + ld64 is not adding a final '/' char on the initial directory-name SO stab debug map entry + ld.cpp: Change Linker::synthesizeStabs() to assure directory SO always has a trailing slash + unit-tests/test-cases/dwarf-debug-notes/expected-stabs: update with trailing / + +2006-06-06 Nick Kledzik + + -sectcreate of a 0-byte section fails + MachOWriterExecutable.cpp: Don't error out on zero length segments + MachOWriterExecutable.cpp: For ppc64 reloc base address is the first writable segment iff + there is a writable segment >4GB from base address + +2006-06-04 Eric Christopher + + Radar 4560240 + Radar 3964999 + * src/ld.cpp (createReader): Fixed error message. + (resolve): Ditto. + (resolveFrom): Ditto. + (checkUndefines): Ditto. + +----- Tagged ld64-56 + +2006-05-23 Nick Kledzik + + No debug notes for ObjC methods when linking with ld64 + ld.cpp: don't limit debug notes to functions starting with underscore + +2006-05-22 Nick Kledzik + + ld64 spends much time in mach_o::relocatable::Reader::findAtomByName + * src/MachOReaderRelocatable.hpp: add makeReferenceToSymbol() so that x86_64 does not need to do by-name lookups + +2006-05-22 Nick Kledzik + + remove inferring warning + * ld.cpp: Remove "inferring" warning. If a link failed and now arch was specifed add which arch was + inferred to error message + +2006-05-19 Nick Kledzik + + ld64 does not honor -arch_multiple + * ld.cpp: If fOptions.printArchPrefix(), add architecture name to error message + +2006-05-19 Nick Kledzik + + Support S_16BYTE_LITERALS section types + * src/MachOReaderRelocatable.hpp: support S_16BYTE_LITERALS + * src/MachOWriterExecutable.hpp: support S_16BYTE_LITERALS + +2006-05-19 Nick Kledzik + + "warning can't parse dwarf compilation unit info" warnings building debug + * src/MachOReaderRelocatable.hpp: fix bugs in dwarf line table parsing + +----- Tagged ld64-55 + +2006-05-18 Nick Kledzik + + Default the pagezero size to 4GB for x86-64 + * src/Options.cpp: Chnage default the pagezero size to 4GB for x86-64 + +2006-05-18 Nick Kledzik + + x86_64 CarbonCore fails to link with "atom not found in symbolIndex" + * src/MachOWriterExecutable.hpp: in buildObjectFileFixups() don't call addObjectRelocs() on kNoFixUp references + +2006-05-18 Nick Kledzik + + ld64: .section defaults to read-only + * src/MachOReaderRelocatable.hpp: default unknown segments to r/w + +2006-05-18 Nick Kledzik + + -fvisibility=hidden causes crashes for x86_64 + * src/MachOWriterExecutable.hpp: properly handle RIP relative tentative definitions + +2006-05-12 Nick Kledzik + + * src/Architectures.hpp: add x86::kAbsolute32 + * src/MachOReaderRelocatable.hpp: generate x86::kAbsolute32 for mdynamic-no-pic instructions + * src/MachOWriterExecutable.hpp: process x86::kAbsolute32 reference kind + +----- Tagged ld64-54 + +2006-05-11 Nick Kledzik + + CF-393 failes to link for x86_64 + * src/MachOWriterExecutable.cpp: fix sign extension for Rel32 relocs in Writer::fixUpReferenceRelocatable + +2006-05-11 Nick Kledzik + + warning arch x86_64 not found using i386 + * src/ld.cpp: remove hack to allow x86_64 to link against i386 dylibs + + +2006-05-10 Nick Kledzik + + x86_64: .objc_class_name symbol names scrambled + * src/MachOReaderRelocatable.hpp: properly compute alignment of __OBJC __class sections + + +2006-05-08 Nick Kledzik + + Support -dead_strip + * src/Options.h/cpp: implement -why_load and -why_live. Enable -dead_strip. + * src/MachOReaderArchive.hpp: implement -why_load + * src/MachOReaderRelocatable.hpp: suppress GCC_except_table* symbols in final output + * src/ld.cpp: implement dead code stripping + * unit-tests/test-cases/dead_strip: added + +----- Tagged ld64-53 + +2006-05-05 Nick Kledzik + + * src/Options.cpp: make 10.4 be minimum OS version for newer architectures + +2006-05-05 Nick Kledzik + + N_SO symbols in 64-bit builds have a zero address for n.n_value + * src/ld.cpp: for SO stabs, associate first and last atom in the SO range + * src/MachOWriterExecutable.hpp: use atom associated with SO stab to set ins n_value + +2006-05-05 Nick Kledzik + + * MachOWriterExecutable.hpp: fix end FUN stab to have length of function + + +2006-05-02 Nick Kledzik + + 64-bit main executables should have 4GB zero page by default + * src/Opptions.cpp: change default pagezero_size to 4GB for ppc64 + 64 bit: apps with -mdynamic-no-pic seg fault when page zero > 4GB + * src/MachOWriterExecutable.cpp: rework pagezero for ppc64 so that if any mdynamic-no-pic code + is found, the code is kept in the low 2GB, and a new segment is create to map away up to 4GB. + +2006-05-02 Nick Kledzik + + * src/Opptions.cpp: remove warning about -stack_addr not specified. Add warning if 32-bit stack + overlaps shared region + +----- Tagged ld64-52.1 + +2006-05-01 Nick Kledzik + + * src/MachOReaderRelocatable.cpp: rework handleAnonymousNonLazyPointers() to handle anl's in the middle + the __data section too. + +----- Tagged ld64-52 + +2006-04-28 Nick Kledzik + + 64-bit: 9A152 TextEdit crashes in dlopen on bring-up + * src/MachOReaderRelocatable.cpp: rework anonymous non-lazy-pointer detection + +2006-04-28 Nick Kledzik + + 64 Bit: Development build of ppc64 TextEdit gets confused about static variables + * src/MachOReaderRelocatable.cpp: mark non-lazy-pointer atoms as scopeTranslationUnit if targetting a static symbol + + + +2006-04-21 Nick Kledzik + + * src/Options.cpp: fix default address for ppc64 custom stack + * src/MachOWriterExecutable.cpp: fix set up of ppc64 custom stack + + +2006-04-14 Nick Kledzik + + * src/Options.cpp: fix -sub_library processing to work it dylib is specifed with leaf name + +----- Tagged ld64-51.1 + +2006-04-13 Nick Kledzik + + 64-bit: 9A152 TextEdit crashes in dlopen on bring-up + * src/MachOReaderRelocatable.hpp: when detecting anonymous non-lazy-pointers disqualify data + that points to static or global symbols + * src/ld.cpp: print version of ld64 in error messages + + +----- Tagged ld64-51 + +2006-04-11 Nick Kledzik + + exported symbols not properly stripped + * src/MachOReaderRelocatable.hpp: enable AnonymousAtom::setScope() + +2006-03-31 Nick Kledzik + + ld64 fails when linking debug ppc64 HIToolbox + * src/MachOReaderRelocatable.hpp: handle anonymous non-lazy pointers encoded with local relocations + * src/MachOWriterExecutable.hpp: in -r mode, only generated INDIRECT_SYMBOL_LOCAL for non-lazy targets that + + +2006-03-31 Nick Kledzik + + ld64 should remove generated file if link errors out + * src/MachOWriterExecutable.hpp: catch exceptions in Writer::write(), delete output file, and rethrow + + +----- Tagged ld64-50 + + +2006-03-29 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: synthesize .objc_class_name symbols + * src/MachOFileAbstraction.hpp: use strncpy for sect/seg names to zero fill trailing space + +2006-03-28 Nick Kledzik + + * src/MachOReaderRelocatable.hpp: fix spurious warning about dwarf line info + +----- Tagged ld64-49.1 + +2006-03-25 Nick Kledzik + + * MachOWriterExecutable.hpp : don't complain about ppc64 dyld being based > 4GB + +----- Tagged ld64-49 + +2006-03-24 Nick Kledzik + + * src/MachOWriterExecutable.hpp: dyld is allowed to have synthesized non-lazy pointers + ld64 is after processing bad GSYM stabs + * src/MachOReaderRelocatable.hpp: if a GSYM is found that does not match any data symbol, suppress it + +2006-03-23 Nick Kledzik + + * src/MachOWriterExecutable.hpp: in Writer::fixUpReferenceFinal() fix when x86::kPointer is for an + external relocation + +2006-03-23 Nick Kledzik + + * src/Options.cpp: change macosx-min-version to default to a per-architecture setting + add warning if -pagezero_size is not page aligned + * src/MachOWriterExecutable.hpp: properly handle external relocations for ppc64 with 4GB pagezero + * src/machochecker.cpp: sanity check relocation records + +----- Tagged ld64-48 + +2006-03-21 Nick Kledzik + + 64bit: passing function pointer to another function passes the wrong function address + * src/MachOReaderRelocatable.hpp: when processing a non-lazy pointer to a static function, don't accidentally + match it to a STAB symbol. + +2006-03-21 Nick Kledzik + + .eh symbols make up 13% of libstdc++'s stripped binary size + * src/ObjectFile.h: add ReaderOptions.fForFinalLinkedImage + * src/Options.cpp: setup ReaderOptions.fForFinalLinkedImage + * src/MachOReaderRelocatable.hpp: mark .eh symbols kSymbolTableNotIn when building final linked image + +2006-03-21 Nick Kledzik + + ld64 does not parse optional second argument to -filelist + * unit-tests/test-cases/filelist: added + * src/Options.cpp: in Options::loadFileList() handle comma option + + +----- Tagged ld64-47.1 + + ----- Tagged ld64-47 @@ -6,11 +4351,11 @@ 2006-03-10 Nick Kledzik - ld64 should figure out architecture from .o files + ld64 should figure out architecture from .o files * unit-tests/test-cases/auto-arch: added * src/ld.cpp: added Linker::inferArchitecture() to scan .o files are infer architecture to link * src/MachOReaderArchive.hpp: enhanced validFile() to look deeper into archive and really valdate - * src/MachOWriterExecutable.hpp: stop using fOptions.architecture() + * src/MachOWriterExecutable.hpp: stop using fOptions.architecture() * src/Options.cpp: stop defaulting to ppc64 @@ -22,7 +4367,7 @@ * unit-tests/test-cases/blank-stubs: add test case * src/ld.cpp: in addDylib(), detect and ignore blank stubs * src/MachOReaderDylib.hpp: in constructor, handle blank stubs - + 2006-03-09 Nick Kledzik crash in stub with 2GB pagezero @@ -40,7 +4385,7 @@ LP64/9A122: ld64: hang when trying to link DiscRecording framework * src/Options.cpp: addSectionAlignment, warn on zero. Use log2() for alignment conversion - + ----- Tagged ld64-44 2006-03-04 Nick Kledzik @@ -54,6 +4399,7 @@ ----- Tagged ld64-43 + 2006-03-02 Nick Kledzik * src/MachOReaderRelocatable.hpp: tighten detection of anonymous non-lazy-pointer @@ -62,7 +4408,7 @@ 2006-02-28 Nick Kledzik - * src/MachOReaderRelocatable.hpp: fix x86 __IMPORT permissions for class Segment + * src/MachOReaderRelocatable.hpp: fix x86 __IMPORT permissions for class Segment 2006-02-28 Nick Kledzik @@ -81,7 +4427,7 @@ 2006-02-24 Nick Kledzik - * src/Options.cpp: Warning about -no_dead_strip_inits_and_terms and -i options. + * src/Options.cpp: Warning about -no_dead_strip_inits_and_terms and -i options. Fix -weak-l option. ----- Tagged ld64-40 @@ -111,7 +4457,7 @@ 2006-02-23 Nick Kledzik - ld64 creates corrupt executables (and has malloc errors) with -headerpad option + ld64 creates corrupt executables (and has malloc errors) with -headerpad option * src/MachOWriterExecutable.hpp: Change LoadCommandsPaddingAtom::setSize() to update fLargestAtomSize * unit-tests/test-cases/header-pad: added @@ -120,7 +4466,7 @@ ld64 creates invalid static executables * src/MachOWriterExecutable.hpp: Change MachHeaderAtom::copyRawContent() to create correct header for static executables. Change SymbolTableLoadCommandsAtom to skip LC_DYSYMTAB for static executables - * src/machochecker.cpp: Add tests that static executables are well formed + * src/machochecker.cpp: Add tests that static executables are well formed * unit-tests/test-cases/static-executable: added 2006-02-22 Nick Kledzik @@ -148,7 +4494,7 @@ 2006-02-15 Nick Kledzik - * src/MachOReaderArchive.hpp: with -all_load skip over both kinds of SYMDEFs + * src/MachOReaderArchive.hpp: with -all_load skip over both kinds of SYMDEFs * unit-tests/test-cases/archive-basic/Makefile: add -all_load test case ----- Tagged ld64-37 @@ -615,6 +4961,7 @@ * src/ELFFileAbstraction.hpp: Added * src/ELFReaderRelocatable.hpp: Added * Lot of fixes for new architecture + * Added __OPEN_SOURCE__ to "Preprocessor Macros" to disable new architecture support by default 2005-12-13 Nick Kledzik @@ -666,6 +5013,10 @@ * src/ObjectFile.h: Add design comments +2005-11-30 Nick Kledzik + + * Fix uses of __OPEN_SOURCE__ + 2005-11-28 Nick Kledzik * Refactor Atom to use getDefinitionKind()