----- Tagged ld64-59 2006-06-22 Nick Kledzik ld64 lost DWARF debug notes 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 don't 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's 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: don't 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-27 Nick Kledzik dyld crashes ungracefully on x86_64 when there is an internal exception * src/MachOWriterExecutable.cpp: allow non-zero PCRELGOT addends (used by C++ eh frames) 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/MachOWriterExecutable.hpp: fix x86_64 addends when -multi_module forces an external relocation 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 ----- Tagged ld64-46 2006-03-10 Nick Kledzik 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/Options.cpp: stop defaulting to ppc64 2006-03-09 Nick Kledzik Need "intentionally left blank" dylib stubs * unit-tests/include/common.makefile: add VALID_ARCHS * unit-tests/run-all-unit-tests: set up VALID_ARCHS * 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 * src/MachOWriterExecutable.hpp: StubAtom can't be no-pic if a large zero-page is used 2006-03-06 Nick Kledzik * src/Options.cpp: addSectionAlignment, warn if -sectalign alignment is not a power of two ----- Tagged ld64-45 2006-03-06 Nick Kledzik ld64 failed: rel32 out of range when linking a dylib * src/MachOWriterExecutable.cpp: in Writer::fixUpReferenceFinal add (int32_t) cast 2006-03-06 Nick Kledzik LP64/9A122: ld64: hang when trying to link DiscRecording framework * src/Options.cpp: addSectionAlignment, warn on zero. Use log2() for alignment conversion 2006-03-06 Nick Kledzik x86_THREAD_STATE64_COUNT will change, ld64 must adapt * src/MachOWriterExecutable.hpp: update ThreadsLoadCommandsAtom for new thread status layout ----- Tagged ld64-44 2006-03-04 Nick Kledzik * src/MachOReaderRelocatable.hpp: fix again test for detection of anonymous non-lazy-pointer. Error out if .o file contains old __DWARFA style dwarf. 2006-03-02 Nick Kledzik * src/ld.cpp: only re-map page aligned sub-parts of a fat file. A conformat mmap() requires alignment. ----- Tagged ld64-43 2006-03-03 Nick Kledzik RIP-relative offsets aren't handled properly when the instruction has immediate operands * src/Architectures.hpp: add x86_64::kPCRel32_* * src/MachOReaderRelocatable.hpp: generate x86_64::kPCRel32_* * src/MachOWriterExecutable.hpp: process x86_64::kPCRel32_*