X-Git-Url: https://git.saurik.com/apple/ld64.git/blobdiff_plain/9d2e0767a8f401be0067937f63a08b1c4f79297d..60ce07c1e7dbeedd94a57ba21c14ff07c4ada4db:/ChangeLog diff --git a/ChangeLog b/ChangeLog old mode 100755 new mode 100644 index 62ac23d..e2d1d2c --- a/ChangeLog +++ b/ChangeLog @@ -1,504 +1,1206 @@ -2008-05-06 Nick Kledzik +-------- tagged ld64-123.2.1 - 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 +2010-03-07 Nick Kledzik + enable i386 ASLR -2008-05-06 Nick Kledzik +-------- tagged ld64-123.2 - encryptable images may not be signable - * src/MachOWriterExecutable.hpp: use minimum header padding when aligning __text section +2010-12-10 Nick Kledzik + + Man page typo: "dysmutil" under object_path_lto + +2010-12-10 Nick Kledzik + ld64 crashes when warning about re-exported symbol ------ Tagged ld64-85 +-------- tagged ld64-123.1 -2008-04-29 Nick Kledzik +2010-12-07 Nick Kledzik - * ld64.xcodeproj/project.pbxproj: is moving from /usr/local/include to /Developer/usr/local/include + assertion if symbol from re-exported dylib is in -exported_symbols_list +-------- tagged ld64-123 -2008-04-29 Nick Kledzik +2010-12-06 Nick Kledzik - ld doesn't honor "rightmost" -syslibroot argument - * src/Options.cpp: if last -syslibroot is /, then ignore all syslibroots + Change default search order and add -search_dylibs_first to restore old behavior +2010-12-06 Nick Kledzik -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 + ld should consistently warn when resolvers are not exported +2010-12-02 Nick Kledzik -2008-04-17 Nick Kledzik + data segment has file offset 0 - * src/MachOReaderRelocatable.hpp: better cpu subtype support +-------- tagged ld64-122 +2010-12-01 Nick Kledzik -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 - + Add #define ARM_RELOC_HALF in case trying to build with old mach-o/arm/reloc.h header -2008-04-10 Nick Kledzik +2010-11-30 Nick Kledzik - * src/MachOWriterExecutable.hpp: fix stubs used with lazy dylibs - + Linker should synthesize interworking stubs for tail calls + added test case: unit-tests/test-cases/branch-interworking + +2010-11-30 Nick Kledzik + + Link Time Optimization error with tentative defs and -dead_strip + added test case: unit-tests/test-cases/lto-dead_strip-tentative + +-------- tagged ld64-121 + +2010-11-10 Nick Kledzik + + Add -dylibs option to dyldinfo tool + +2010-11-03 Nick Kledzik + + Need support for ARM/thumb upper/lower 16 bit relocation ------ Tagged ld64-84.4 +2010-11-03 Nick Kledzik -2008-04-10 Nick Kledzik + Spelling typo in linker warning - 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 +2010-11-02 Nick Kledzik + + Xcode 4: ld -r doesn't work on files compiled with llvm-gcc -flto + +2010-11-01 Nick Kledzik + + ld wrongly complaining about tlv relocs for i386 + +2010-11-01 Nick Kledzik + + Fix -why_live to list all references, not just first + +2010-11-01 Nick Kledzik + + + +-------- tagged ld64-120.3 + +2010-11-09 Nick Kledzik + + revert default search order +-------- tagged ld64-120.2 + +2010-11-09 Nick Kledzik + + ld -r corrupts multiple non-lazy sections ------ Tagged ld64-84.3 +-------- tagged ld64-120.1 -2008-04-09 Nick Kledzik +2010-10-25 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 + When order file used on data, turn ordered zero fill symbols into zero data +-------- tagged ld64-120 ------ Tagged ld64-84.2 +2010-10-25 Nick Kledzik -2008-04-04 Nick Kledzik + ld should use this-image ordinal for symbols from re-exported non-public dylibs + added test case: unit-tests/test-cases/re-export-and-use - * 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 +2010-10-25 Nick Kledzik + + Value of N_SO stabs should be address of first atom from translation unit + +2010-10-25 Nick Kledzik + + Always print arch name on undefined symbols error +2010-10-25 Nick Kledzik + + Add ld64 version number to crash logs + +2010-10-22 Nick Kledzik + + -objc_abi_version 1 not supported + +2010-10-22 Nick Kledzik + + Add support to ld64 for N_FUN stabs when used for symbolic constants + +2010-10-22 Nick Kledzik + + Change default search order and add -search_dylibs_first to restore old behavior + +2010-10-22 Nick Kledzik + + -L flag should support a space between it and its argument + +2010-10-22 Nick Kledzik + + Hidden resolver functions don't work with DYLD_BIND_AT_LAUNCH + +2010-10-22 Nick Kledzik + + Support resolver functions for function pointer use from same linkage unit + +2010-10-19 Nick Kledzik + + section$start$ does not always point to start of built in section types + +-------- tagged ld64-119.2 + +2010-10-18 Nick Kledzik + + make having an ObjC2 class symbol in an export list be a warning instead of an error + +2010-10-15 Nick Kledzik + + lazily produce (crt1.o missing) error + +-------- tagged ld64-119.1 + +2010-10-05 Nick Kledzik ------ Tagged ld64-84.1 + ld -r can produce output with LC_DYLD_INFO load command -2008-03-28 Nick Kledzik +2010-10-05 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 + ld doesn't pass stabs debug info through to the final executable any longer + +2010-10-05 Nick Kledzik + + __UNIXSTACK placed incorrectly when -stack_addr < 0x4000000 + +2010-10-05 Nick Kledzik + + ld mishandles -lazy-l option + Updated test case: unit-tests/test-cases/lazy-dylib +2010-10-04 Nick Kledzik + + -no_compact_unwind should suppress dwarf->CUE warnings + +-------- tagged ld64-119 + +2010-10-01 Nick Kledzik + + use ld64 to link iBoot + +2010-10-01 Nick Kledzik + + crash when entrypoint is thumb + +2010-10-01 Nick Kledzik + + If -ios_version_min is used with -arch i386, assume simulator + +2010-10-01 Nick Kledzik ------ Tagged ld64-84 + crash with multiple re-exported dylibs with same install_name -2008-03-28 Nick Kledzik +2010-09-28 Nick Kledzik - * src/LTOReader.hpp: don't print lto version, if lto is unavailable + Linker complains about resolver functions when architecture is inferred. +2010-09-28 Nick Kledzik + + ARM subtype not set on LTO programs + +2010-09-28 Nick Kledzik + + Link-Time Optimization assertion + Added test cases: + unit-tests/test-cases/lto-dead_strip-objc + unit-tests/test-cases/lto-dead_strip-some-hidden + +2010-09-24 Nick Kledzik + + Support -dyld_env NAME=value + +2010-09-23 Nick Kledzik + + Previous BranchIsland code changes to make buildable with clang++ were bad. Fix. + +2010-09-23 Nick Kledzik + + ld64 objc category merging asserts on category from old framework + +2010-09-23 Nick Kledzik + + ASLR Sidebuild: Many Projects Fail checksyms_read_only_relocs Verifier + +2010-09-22 Nick Kledzik + + Fix DOF section name bug + +2010-09-22 Nick Kledzik + + Fixes to build with clang++ + +2010-09-21 Nick Kledzik + + In Resolver::fillInHelpersInInternalState(), dyld never needs stubs + +2010-09-21 Ivan Krstic + + ld: support non-executable heap Mach-O header flag + +2010-09-21 Nick Kledzik + + Xcode 4 linker fails with "address not in any section" + +2010-09-20 Nick Kledzik + + assertion failure reading i386 yasm .o (not using scattered reloc) + +2010-09-20 Nick Kledzik + + ld crashes when parsing dwarf and all code is not in __text + +2010-09-17 Nick Kledzik + + magic segment symbol names don't work with preload executables + Update test case: unit-tests/test-cases/segment-labels + +2010-09-17 Nick Kledzik + + OSO in DebugNotes for LTO should point to generated mach-o not, bitcode .o file + +2010-09-16 Nick Kledzik + + FUN in debug map not rebased + Update test case: unit-tests/test-cases/rebase-basic + +2010-09-16 Nick Kledzik + + Relocation failure with i386 32-bit diff to stub + +2010-09-16 Nick Kledzik + + assert when targeting 10.5 and crt1.o/dylib1.o is not supplied + +-------- tagged ld64-118.1 + +2010-09-15 Nick Kledzik -2008-03-26 Nick Kledzik + Fix missing rebase commands that broke perl - Add LD_WARN_COMMONS to BigBear builds - * src/Options.cpp: Add support for LD_WARN_FILE which copies all warnings to a side file +2010-09-15 Nick Kledzik + + assert when .objc_class_name_* symbol missing + Add test case: unit-tests/test-cases/archive-ObjC-unexported + +2010-09-13 Nick Kledzik + + linker does not honor $ld$hide for umbrella libraries + Added test case: unit-tests/test-cases/symbol-hiding-umbrella + +2010-09-09 Nick Kledzik + + LC_UUID uuids should conform to RFC 4122 UUID version 4 & UUID version 5 formats + +2010-09-09 Nick Kledzik + + support -bind_at_load + +2010-09-07 Nick Kledzik + + ld mis-handling std::tr1::anonymous symbols + Remove support for ordering gcc-4.0 compiled anonymous namespace symbols + + +-------- tagged ld64-118 + +2010-09-02 Nick Kledzik + + -preload should not have LINKEDIT segment + Added test case: unit-tests/test-cases/efi-basic + +2010-09-02 Nick Kledzik + + trivial Objective-C app fails when using libLTO + Added test case: unit-tests/test-cases/lto-objc-image-info + +2010-09-02 Nick Kledzik + + Add -reexport_symbols_list option to re-export certain symbols. + Added test case: unit-tests/test-cases/reexport_symbols_list + +2010-09-01 Nick Kledzik + + LTO with 'dead code strip' can't ignore unused functions with undefined references + Add test case: unit-tests/test-cases/lto-dead_strip-unused + +2010-09-01 Nick Kledzik + + Warn if unaligned ARM code is detected + +2010-09-01 Nick Kledzik + Mach-O linked by current linker don't load in VIrtualBox any more + +2010-09-01 Nick Kledzik + + Linker should pick default visibility instead of warning about conflicts + Updated test case: unit-tests/test-cases/visibility-warning + +2010-09-01 Nick Kledzik -2008-03-26 Nick Kledzik + Enable new load commands - 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 +2010-09-01 Nick Kledzik + + Do not pass -demangle to ld_classic + +2010-09-01 Nick Kledzik + + iOS 4.3 armv7 should be PIE by default + better error message for direct access to external globals when not linking read_only_relocs + linker does not error on direct (static) data references to a dylib symbol + +-------- tagged ld64-117.11 + +2010-09-03 Nick Kledzik + + mask thumb bit off non lazy pointers content when parsing arm .o files + +-------- tagged ld64-117.10 + +2010-08-26 Nick Kledzik + + 8F64 kills installtest devices + Don't clear thumb bit on pointers inside thumb functions if addend is negative + +-------- tagged ld64-117.9 + +2010-08-25 Nick Kledzik + + no more audio because of broken thunk + Update of thumb22 b.w instruction was not clearing bits before or'ing in new ones + +-------- tagged ld64-117.8 + +2010-08-25 Nick Kledzik + + prefetch abort in kernel mode: fault_addr=0xe58024e4 + Don't set thumb bit on .long pointers in thumb functions that point to some offset in same function + +-------- tagged ld64-117.7 + +2010-08-24 Nick Kledzik + + dyld-179.4 fails to link, assert in setLoadCommandsPadding() + Fix linker to always put __text first before other code-only sections + +-------- tagged ld64-117.6 + +2010-08-23 Nick Kledzik + + ld no longer output static archive dependencies for dyld for B&I + Add test case unit-tests/test-cases/dependency-logging + +-------- tagged ld64-117.5 + +2010-08-20 Nick Kledzik + + SWB: ld64-117.1 on Durango8F54: Assertion failed: + UTF16 CFStrings were not coalesced correctly when gcc built the .o files and the + last string in the __ustring section only had a single zero byte at the end. +-------- tagged ld64-117.4 + +2010-08-19 Nick Kledzik -2008-03-25 Nick Kledzik + DTSJ1J105: SpringBoard crashes on boot + Fix order file to move aliases even when subsections_via_symbols it used + Update test case unit-tests/test-cases/order_file - 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 +2010-08-17 Nick Kledzik + Fix resolver functions to survive ld -r. + Warn if resolver functions are made non-external. -2008-03-25 Nick Kledzik +2010-08-17 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 + Make it an error for resolver functions to be used in anything but a dylib. + +-------- tagged ld64-117.3 + +2010-08-17 Nick Kledzik + + Fix thumb resolver functions + Enable updward dylibs and symbol re-exports for iOS 4.2 + +2010-08-16 Nick Kledzik + + Latest ld no longer supports EFI -preload + Rearrange LINKEDIT chunks in -preload mode + +-------- tagged ld64-117.2 + +2010-08-14 Nick Kledzik + + Latest ld no longer supports EFI -preload + Add LC_UNIXTHREAD to -preload + +2010-08-14 Nick Kledzik + + SWB: ld64-117.1 on Durango8F54: Assertion failed: (categoryAtom->size() == Category::size()) + gcc-4.0 uses 'L' labels on categories. This merges them onto previous data and disable category optimzation + +2010-08-14 Nick Kledzik + + SWB: ld64-117.1 on Durango8F54: bad category optimization + Disable category optimization for i386 and arm until further testing + +2010-08-14 Nick Kledzik + + SWB: ld64-117.1 on Durango8F54: address not in any section + Handle pointer diff to stub for weak hidden function + +2010-08-13 Nick Kledzik + + Latest ld no longer supports EFI -preload + +-------- tagged ld64-117.1 + +2010-08-11 Nick Kledzik + + Make missing exported symbols a warning to help adoption of new linker + +2010-08-11 Nick Kledzik + + Add ExternalRelocationsAtom<>::pointerReloc() to more easily support kext bundles + +2010-08-09 Nick Kledzik + + SWB: ld64-116.2 fix branch to label-4 + +2010-08-09 Nick Kledzik + + Error with empty non_lazy_symbol_pointers section + +2010-08-06 Nick Kledzik + + Add command line options to control symbol weak-def-bit on exported symbols + +-------- tagged ld64-117 + +2010-07-28 Nick Kledzik + + split seg info wrong for x86_64 stub helpers + +2010-07-26 Nick Kledzik + + __nlcatlist categories should not be optimized + +2010-07-23 Nick Kledzik + + ld64 assertion on object file + +2010-07-21 Nick Kledzik + + Reorder sections to reduce page faults in object files + +2010-06-30 Nick Kledzik + + Support resolver functions in iOS dylibs + +-------- tagged ld64-116.2 + +2010-06-30 Nick Kledzik + C programs get objc GCness from dylibs + Update: unit-tests/test-cases/objc-gc-checks + +-------- tagged ld64-116.1 + +2010-06-22 Nick Kledzik + + address range check should not apply to preload executables + +2010-06-22 Nick Kledzik + + Warn instead of error when CPU_SUBTYPE_ARM_ALL .o files used. + +2010-06-22 Nick Kledzik + + Fix assert in objc category optimzation. Metaclass also has copy of propery list to update. + +2010-06-22 Nick Kledzik + + Fix crash in -r mode with -alias. -2008-03-25 Nick Kledzik +-------- tagged ld64-116 - * src/MachOReaderRelocatable.cpp: Fix some .objc_class_name_ off by one problem - * src/MachOWriterExecutable.cpp: Fix some .objc_class_name_ off by one problem +2010-06-21 Nick Kledzik + Add support for -ios_version_min as an alias for -iphoneos_version_min -2008-03-24 Nick Kledzik +2010-06-21 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. + linker could merge method lists from class and its categories + Added test case: unit-tests/test-cases/objc-category-optimize + Added option: -no_objc_category_merging to disable +2010-06-21 Nick Kledzik -2008-03-21 Nick Kledzik + i386 TLV PIC reloc content is negated - * src/Options.cpp: warn if -seg1addr value is not page aligned +2010-06-15 Nick Kledzik + + Added better error messages and asserts for bad thread local object files + +2010-06-09 Nick Kledzik + + + +2010-06-09 Nick Kledzik + + executable has no debug symbols when compiled with LTO + Added test case: unit-tests/test-cases/lto-object_path + +2010-06-09 Nick Kledzik + + stop promoting hidden referenced dynamically symbols to global + Updated test case: unit-tests/test-cases/main-stripped + +2010-06-04 Nick Kledzik + + ER: individual symbol re-exports + Added test case: unit-tests/test-cases/re-export-symbo + +2010-06-03 Nick Kledzik + + add functions start info to LINKEDIT + * Support added but not on by default. Use -function_starts to enable. + * Added test case: unit-tests/test-cases/function-start + +2010-06-02 Nick Kledzik + + ER: add load command for min OS version + * Support added but not on by default. Use -version_load_command to enable. + +2010-06-02 Nick Kledzik + + provide better undefined symbol error message + +2010-05-28 Nick Kledzik + + * ld should also merge file attributes from lazy loaded archives + * Move attribute gathering from InputFiles to Resolver + +2010-05-28 Nick Kledzik + + * SWB: ld64-115.3: dylib on kext link line causes malformed kext + * allow -static after -kext on command line + +-------- tagged ld64-115.3 + +2010-05-26 Nick Kledzik + + * strip of .o files removes __objc_imageinfo section + * Added test case: unit-tests/test-cases/dwarf-strip-objc + +2010-05-25 Nick Kledzik + + * crash when parsing local vanilla reloc to weak def + +-------- tagged ld64-115.2 + +2010-05-21 Nick Kledzik + + * switch back to using ld_classic for -static arm code -2008-03-21 Nick Kledzik +2010-05-21 Nick Kledzik + + * warn instead of error when seg1addr is out of range for ARM + + +2010-05-21 Nick Kledzik + + * fix -undefined dynamic_lookup -nodefaults to not error about missing dyld_stub_binder + +-------- tagged ld64-115.1 + +2010-05-19 Nick Kledzik + + * Fix trie nodes for resolver functions to have second address be stub not helper + +2010-05-19 Nick Kledzik + + * work around for old checksyms tools + * Make i386 stub section named "__symbol_stub" instead of "__stubs" + +2010-05-10 Nick Kledzik + + * linking with LTO prints "/tmp/lto.o" - 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-115 + +2010-05-06 Nick Kledzik + + * linker loses x86_64 addend to 'L' symbols + * properly handle addend to 'L' symbols that are ignored + +2010-05-05 Nick Kledzik + + * rework min OS version parsing to enable the linker to handle unknown OS versions + + +2010-05-05 Nick Kledzik + + * Implement magic section$start$xxx$yyyy and section$end$xxx$yyyy symbols + * Implement magic segment$start$xxx and segment$end$xxx symbols + * Add test case: unit-tests/test-cases/segment-labels ------ Tagged ld64-83.2 +2010-05-03 Nick Kledzik + + * implement optional demangling in linker + * Add option: -demangle + * Add test case: unit-tests/test-cases/demangle -2008-03-15 Nick Kledzik + +2010-05-03 Nick Kledzik + + * ld64 doesn't grok the modern-objc-ABI-on-i386 + * Add support for -objc_abi_version command line option + * Added test case: unit-tests/test-cases/objc-abi + + +2010-05-03 Nick Kledzik + + * -alias does not work with __OBJC sections + * sort contents of sections with aliases + * Added test case: unit-tests/test-cases/objc-class-alias - 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 + +2010-04-28 Nick Kledzik + * Feature: Thread local storage + * Add test case: unit-tests/test-cases/tlv-basic + * Add test case: unit-tests/test-cases/tlv-dylib ------ Tagged ld64-83.1 -2008-03-14 Nick Kledzik +2010-04-27 Nick Kledzik - -iphone_version_min ==> -iphoneos_version_min - * src/Options.cpp: support -iphoneos_version_min as well - + * Accelerate needs way to dispatch based on instruction execution time characteristics. + * Add support for "symbol resolver" functions + * Add test case unit-tests/test-cases/symbol-resolver-basic ------ Tagged ld64-83 -2008-03-10 Nick Kledzik +2010-04-26 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 - + * range check fat archives + * check that fat file slice being used does not extend beyond end of file + * check that member being used does not extend beyond end of slice/file -2008-03-04 Nick Kledzik +2010-04-26 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 - + * The documentation for the -allowable_client option doesn't say enough about it ------ Tagged ld64-82.7 +2010-04-26 Nick Kledzik -2008-03-07 Nick Kledzik + * back out LD_NO_PIE - 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 +2010-04-22 Nick Kledzik + * More ICU make check failures with 0-terminated UTF16 strings + * Change UTF16StringSection to break into atoms just on label boundaries + * Added test case: unit-tests/test-cases/utf16-nul ------ Tagged ld64-82.6 -2008-03-04 Nick Kledzik +-------- tagged ld64-114.12 + +2010-04-14 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 + * Crash with messed up BNSYM -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 +2010-04-07 Nick Kledzik + + * Fix crash with blank dylib stubs + +-------- tagged ld64-114.11 + +2010-04-07 Nick Kledzik + + * for ppc, add split-seg info for TEXT pointers to DATA -2008-02-29 Nick Kledzik +2010-04-07 Nick Kledzik - Simulator frameworks are being build split-seg and not prebound - * src/Options.cpp: only splitseg if prebound + * Cannot build ppc64 target with ObjC code -2008-02-29 Nick Kledzik +2010-04-01 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 + * let .exp files override auto-hide so that they can be exported if needed -2008-02-29 Nick Kledzik +2010-04-01 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 + * support auto hidden weak symbols: .weak_def_can_be_hidden + * added test case: unit-tests/test-cases/weak-def-auto-hide -2008-02-25 Nick Kledzik +2010-04-01 Nick Kledzik - ld -r -x - * doc/man/man1/ld.1: update man page to explain -r -x produces auto-stripped labels + * 'l' symbols not being automatically removed ------ Tagged ld64-82.5 +2010-03-31 Nick Kledzik -2008-02-12 Nick Kledzik + * weak defs should not cause indirection in static executables + * Update test case: unit-tests/test-cases/static-executable-weak-defines - 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-114.10 + +2010-03-31 Nick Kledzik + * assert with .o file with two LSDA sections + ------ Tagged ld64-82.4 +-------- tagged ld64-114.9 -2008-02-06 Nick Kledzik +2010-03-30 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 + * L4 locks up starting a second processor, works fine with old linker + * properly get addend from content in x86_64 substractor when target is direct -2008-02-06 Devang Patel +2010-03-29 Nick Kledzik + + * ld should excludes debug notes when computing UUID + * added test case: unit-tests/test-cases/dwarf-debug-notes-uuid - 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. +-------- tagged ld64-114.8 + +2010-03-26 Nick Kledzik + + * __objc_catlist section loses don't dead strip bit in ld -r mode + * Update test case unit-tests/test-cases/static-executable + +-------- tagged ld64-114.7 -2008-02-05 Nick Kledzik +2010-03-25 Nick Kledzik + + * Support LD_NO_PIE again + +2010-03-25 Nick Kledzik + + * Rosetta crashes on launch in 11A133a + * Fix -segaddr __TEXT to cause other floating segments to be contiguous with TEXT + +2010-03-24 Nick Kledzik + + * Page Zero segment seems to be getting dead stripped + +2010-03-24 Nick Kledzik + + * kernel sdt dtrace probes not visible + +-------- tagged ld64-114.6 + +2010-03-23 Nick Kledzik - * src/ld.cpp: fix for -arch ppc -mdynamic-no-pic -pie so PPC_RELOC_HA16 reloc is used + * new linker makes dylibs with no __text section, causing codesign_allocate tool to fail + * make sure there is always a __text section in dylibs and bundles + +-------- tagged ld64-114.5 + +2010-03-22 Nick Kledzik + + * missing __objc_imageinfo section + * Real fix will be in 7780438. For now have Resolver also accumulate objc constraint info ------ Tagged ld64-82.3 + +2010-03-19 Nick Kledzik + + * ld64-114 does not error on missing exported symbols with -dead_strip + +-------- tagged ld64-114.4 -2008-02-04 Nick Kledzik +2010-03-16 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$ + * dyld missing LC_ID_DYLINKER +-------- tagged ld64-114.3 ------ Tagged ld64-82.2 +2010-03-15 Nick Kledzik -2008-01-30 Devang Patel + * force i386 kexts to be built with ld_classic + * preserve 'l' labels in static executables + * sync section offsets and addresses in segments with command line addresses - 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 +-------- tagged ld64-114.2 + +2010-03-13 Nick Kledzik + + * ld64-114 generates x86_64 kext external call sites with incorrect addend + +-------- tagged ld64-114.1 + +2010-03-12 Nick Kledzik + + * Fix dyldinfo tool to correct show ordinal info for classic linkedit + +2010-03-12 Nick Kledzik + + ld64-114 is causing read_only_reloc verification errors for ppc + * Update machochecker to check this. + +-------- tagged ld64-114 + +2010-03-11 Nick Kledzik + + * i386 dylibs built with ld64-112 cause runtime errors when incorporated into the dyld shared cache + * Add -shared_region option to dyldinfo tool + +-------- tagged ld64-113 + +2010-03-11 Nick Kledzik + + * Allow CPU_SUBTYPE_ARM_ALL .o files to be linked into any arm arch linkage + +2010-03-11 Nick Kledzik + + ld64-112 with -undefined dynamic_lookup marks all symbols as being flat + * update test case at: unit-tests/test-cases/undefined-dynamic-lookup + +2010-03-10 Nick Kledzik + + * prevent possible crash in warning about can't export hidden symbols + +2010-03-10 Nick Kledzik - * src/MachOReaderRelocatable.hpp: don't bus error if S_LITERAL_POINTERS is missing relocs + * make sure split-info data is zero terminated + +-------- tagged ld64-112 + +2010-03-09 Nick Kledzik + + * Never dead strip sections added with -sectcreate + * Added test case: unit-tests/test-cases/sectcreate-dead_strip + + +-------- tagged ld64-111 + +2010-03-03 Nick Kledzik + + * Add support for "-arch arm -force_cpusubtype_ALL" to keep gcc building + +2010-03-02 Nick Kledzik + + * Add some checking to the use of upward dylibs + +-------- tagged ld64-110 + +2010-03-01 Nick Kledzik + + * Don't coalesce cstrings across segments + +2010-03-01 Nick Kledzik + + * Emulate previous linker bug where hidden symbols with dynamically-referenced + bit were promoted to global. + * Added test case: unit-tests/test-cases/unstrippable-symbols + +-------- tagged ld64-109.1 + +2010-02-26 Nick Kledzik + + * Make sure building dyld results in a thread load command +-------- tagged ld64-109 + +2010-02-26 Nick Kledzik + + * Better sorting of zero-fill sections to preserve discovery order + * Zero out file offsets in dynamic symbol table entries that are not used -2008-01-22 Nick Kledzik +2010-02-26 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 + * Support pointer-diffs to zero sized atom in zero sized section +2010-02-25 Nick Kledzik + + * Add support for -r mode with ppc64 + +2010-02-25 Nick Kledzik + + * Handle multiple labels on the same coalesable literal by making an + atom for each label, each with the same content. + * Add test case: unit-tests/test-cases/literals-labels ------ Tagged ld64-82 + +2010-02-25 Nick Kledzik + + * Handle old ppc .o files that have stubs to static functions + +2010-02-25 Nick Kledzik + + * Add basic ppc64 support + +2010-02-24 Nick Kledzik + + * Range check TOC entries in archives + + +2010-02-23 Nick Kledzik + + * Fix spurious dylib re-export warnings that are just regular linkage cycles + + +2010-02-23 Nick Kledzik + + * re-partition bits in mach_o::relocatable::Atom ivars to allow more functions per file + + +2010-02-22 Nick Kledzik + + * re-partition bits in mach_o::relocatable::Atom ivars to allow more fixups per function -2008-01-18 Nick Kledzik - Bad grammar used in ld warning: cannot exported hidden symbol - * src/ld.cpp: fix typo in warning string +2010-02-22 Nick Kledzik + + * Handle re-exported dylibs that are re-exported again + * Added test case: unit-tests/test-cases/re-export-layers -2008-01-16 Nick Kledzik +2010-02-22 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 - + * Properly handle X86_64_RELOC_SUBTRACTOR with non-external target symbol -2008-01-16 Nick Kledzik + +-------- tagged ld64-108 + +2010-02-17 Nick Kledzik + + * ER: Support upward dylib dependencies + * Add test case: unit-tests/test-cases/dylib-upward - 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 + +2010-02-17 Nick Kledzik + + * ld(1) man page typo + * Linker (ld) man page typo: "unredable" in -pagezero_size option description + * Typo in ld(1) man page, "-x" option + * man ld: Change "if" -> "is" + * DOC: ld(1) mentions -dynamiclib when it means -dylib -2008-01-16 Nick Kledzik +2010-02-17 Nick Kledzik + + * Wordsmith ld warning about missing directories - 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. + +2010-02-17 Nick Kledzik + + * Fix -umbrella to work when umbrella is a dylib instead of a framework + * Add test case: unit-tests/test-cases/umbrella-dylib -2008-01-16 Devang Patel +-------- tagged ld64-107 + +2010-02-16 Nick Kledzik - * src/LLVMReader.hpp: Use __gnu_cxx::hash_map instead of hash supported by LLVM. + * Fix bugs with -preload -2008-01-16 Nick Kledzik +2010-02-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 + * Fix dylib re-export cylce detection -2008-01-15 Nick Kledzik +2010-02-16 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 + * -ObjC not pulling in members with categories only + * scan for non-zero __objc_catlist section in archive members when -ObjC is used + * Added test case: unit-tests/test-cases/objc-category-archive ------ Tagged ld64-81.5 + +2010-02-15 Nick Kledzik -2008-01-14 Devang Patel + * ld glibly removes /dev/null - 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. +2010-02-15 Nick Kledzik -2008-01-14 Nick Kledzik + * Linker should be able to validate GC intentions + * Add -objc_gc and -objc_gc_only. Error when used and RR based .o file is linked in + * Update test case: unit-tests/test-cases/objc-gc-checks - 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 +2010-02-15 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 + * Linker should provide a way to mark binaries that support compaction + * Added -objc_gc_compaction option + * Update test case: unit-tests/test-cases/objc-gc-checks -2008-01-11 Nick Kledzik +2010-02-15 Nick Kledzik - * doc/man/man1/ld.1: add doc for -no_implicit_dylibs, -read_only_stubs, -slow_stubs, -interposable_list - + * ER: Need a way to detect weak exports in dev tools + * implement -warn_weak_exports + +2010-02-15 Nick Kledzik + + * Add support for LD_DYLD_PATH + + +2010-02-15 Nick Kledzik + + * cfstring backing store points to global cstring + * Force all by-name references in cfstring to be direct references + * add test case: unit-tests/test-cases/cfstring-and-cstring -2008-01-11 Nick Kledzik - ld64(1) man page uses ambiguous term "suffix" - * doc/man/man1/ld.1: make meaning of "suffix" more explicit +-------- tagged ld64-106 + +2010-02-12 Nick Kledzik + + * Assertion failed: when class is translation unit scoped + * added test case unit-tests/test-cases/objc-visibility -2008-01-11 Nick Kledzik +2010-02-12 Nick Kledzik + + * crash with missing crt? - 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 +2010-02-12 Nick Kledzik - Unknown error with linker (dyld: unknown external relocation type) - * src/ld.cpp: fix crash when SO stabs are not balanced + * Suppress indirect symbol table in static executables -2008-01-11 Devang Patel +2010-02-12 Nick Kledzik - LTO does not work if expected output is a dynamic library - * src/LLVMReader.hpp: Supply arguments describing output kind to optimizer. Communicate - visibility info. + * Rework CIE parsing to work with icc generated code -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 +2010-02-11 Nick Kledzik + * Fix creation of debug notes + * Tweak unit-tests/test-cases/dwarf-debug-notes to match llvm symbol layout -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 +2010-02-11 Nick Kledzik ------ Tagged ld64-81.4.1 + * Don't assert when infering ppc subtype that is ALL. + * Fix spurious warning about mismatched subtypes, when subtype is inferred -2007-12-19 Devang Patel - * src/LLVMReader.hpp: Add LLVM_LTO_VERSION #ifdef check. - -2007-12-19 Devang Patel +-------- tagged ld64-105 + +2010-02-11 Nick Kledzik + + * Use symbolic constants for bit field sizes + - * src/LLVMReader.hpp: Add fOptimizer NULL check before calling printVersion(). +2010-02-10 Nick Kledzik + + * Handle out of order sections in .o files + + +-------- tagged ld64-104 + +2010-02-10 Nick Kledzik + + * Rename __tentative internal section name to __comm/tent to sort like __common + * Fix test case in unit-tests/test-cases/tentative-to-real-r + + +2010-02-10 Nick Kledzik + + * Better warning messages about mismatched architectures -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. +2010-02-10 Nick Kledzik + + * Gracefully ignore if there are >8000 line info per function in debug info + + +2010-02-10 Nick Kledzik + + * Properly handle when regular definition is weak_imported + * Add unit-tests/test-cases/weak_import-local -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. +2010-02-10 Nick Kledzik + + * Don't try to coalesce zero length cstrings in mach-o parser. + + +2010-02-10 Nick Kledzik + + * Add work around for llvm using L labels for backing string of CFString with -fwritable-strings ------ Tagged ld64-81.4 -2007-12-18 Devang Patel +2010-02-09 Nick Kledzik + + * Ignore labels in __gcc_except_tab section + * Properly apply local relocations to __eh_frame section so CFI parser works + * Update unit-tests/test-cases/eh-stripped-symbols to reproduce problem + + +2010-02-09 Nick Kledzik + + * Fix file offset computation with large zero-fill sections + + +2010-02-09 Nick Kledzik + + * Force global 'l' to be hidden + * Add test case with objc properties: unit-tests/test-cases/objc-properties + - * src/LLVMReader.hpp: Invalidate input architecture when optimizer is not available. +-------- tagged ld64-103 ------ Tagged ld64-81.3 +2010-02-04 Nick Kledzik -2007-12-17 Nick Kledzik + * Temporarily change assert() to call exit(1) instead of abort() - * ld64.xcodeproj/project.pbxproj: remove extraneous header search paths + +2010-02-04 Nick Kledzik + + * Fix another case in -r mode where the vmsize was less that filesize + +2010-02-04 Nick Kledzik + + * Fix assert when generating GSYM stab debug notes + + +2010-02-04 Nick Kledzik -2007-12-17 Devang Patel + * Add SRCROOT to crash logs - * 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. +2010-02-04 Nick Kledzik -2007-12-14 Nick Kledzik + * Remove architectureName() from InputFiles - 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 +-------- tagged ld64-102 -2007-12-14 Devang Patel +2010-02-03 Nick Kledzik - 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 + * Add follow-on reference from symbol text atom to non-symboled text atom - 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-101 + +2010-01-29 Nick Kledzik + + * fix -alias symbols to be global by default ------ Tagged ld64-81.2 +-------- tagged ld64-100 + +2010-01-28 Nick Kledzik + + * Merge new/refactored linker to trunk +