----- 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 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 * 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-02 Nick Kledzik * src/MachOReaderRelocatable.hpp: tighten detection of anonymous non-lazy-pointer ----- Tagged ld64-42 2006-02-28 Nick Kledzik * src/MachOReaderRelocatable.hpp: fix x86 __IMPORT permissions for class Segment 2006-02-28 Nick Kledzik SWB: ld64-37 (can't resolve symbol ___dso_handle) * src/MachOWriterExecutable.hpp: add class DsoHandleAtom 2006-02-28 Nick Kledzik * unit-tests/test-cases/literals-coalesce-alignment: added test case * src/ld.cpp: when coalescing strings pick one with greater alignment ld64: CG link failed because lo14 reference to anonymous non-lazy-pointer not aligned * unit-tests/test-cases/relocs-c/test.c: tweak to fail like 4458660 * src/MachOReaderRelocatable.hpp: detect anonymous non-lazy-pointer and transform into real non-lazy-pointers ----- Tagged ld64-41 2006-02-24 Nick Kledzik * src/Options.cpp: Warning about -no_dead_strip_inits_and_terms and -i options. Fix -weak-l option. ----- Tagged ld64-40 2006-02-24 Nick Kledzik Leopard9A113: ppc64 libstdc++.dylib initializer crashes in pthread_once * unit-tests/test-cases/multiple-entry-points: added * src/MachOReaderRelocatable.hpp: make sure that if there are multiple symbols with the same address, that we properly make zero length atoms for all but last symbol 2006-02-24 Nick Kledzik * src/Options.cpp: ld64 doesn't realpath(3) B&I tracing paths 2006-02-24 Nick Kledzik * src/Options.cpp: 9A110: ld64 can't deal with section names >16 chars 2006-02-23 Nick Kledzik * src/MachOWriterExecutable.hpp: use vector.reserve() to minimize re-allocations * src/Options.cpp: use vector.reserve() to minimize re-allocations * src/MachOReaderRelocatable.hpp: use vector.reserve() to minimize re-allocations * src/MachOReaderDylib.hpp: use vector.reserve() to minimize re-allocations * src/ld.cpp: use vector.reserve() to minimize re-allocations 2006-02-23 Nick Kledzik 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 2006-02-23 Nick Kledzik 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 * unit-tests/test-cases/static-executable: added 2006-02-22 Nick Kledzik * src/Options.cpp: chnage printf on unknown arg to a throw ----- Tagged ld64-39 2006-02-20 Nick Kledzik * unit-tests/test-cases/read-only-relocs: added new test case * src/MachOWriterExecutable.hpp: detect and error on relocs in read-only sections * src/MachOReaderRelocatable.hpp: fix parsing of i386 absolute addressing relocs 2006-02-20 Nick Kledzik * unit-tests/test-cases/stabs-coalesce: added new test case * src/ld.cpp.hpp: in collectStabs removed unused stabs ----- Tagged ld64-38 2006-02-17 Nick Kledzik * src/MachOWriterExecutable.hpp: set correct n_sect field of stabs 2006-02-15 Nick Kledzik * 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 2006-02-13 Eric Christopher * src/MachOWriterExecutable.hpp (assignFileOffsets): Simplify. Add comments. Adjust whitespace. 2006-02-13 Nick Kledzik * src/MachOWriterExecutable.hpp: in Writer::fixUpReferenceRelocatable() fix kPCRel32 for external case 2006-02-13 Nick Kledzik * unit-tests/test-cases/zero-fill: added * src/machochecker.cpp: check that S_ZEROFILL have no file offset * src/MachOWriterExecutable.hpp: rework assignFileOffsets() to fix rdar://problem/4441145 2006-02-12 Nick Kledzik * src/MachOReaderRelocatable.hpp: fix use of first zero-length c-string in .o file 2006-02-12 Nick Kledzik * src/MachOReaderRelocatable.hpp: fix uninitialized fAlignment 2006-02-12 Nick Kledzik * unit-tests/test-cases/relocs-asm/relocs-asm.s: add pointer-diff cases * src/Architectures.hpp: make size explicit in ppc/ppc64 kPointerDiff * src/MachOReaderRelocatable.hpp: don't allow kPointerDiff64 for ppc (just ppc64) * src/MachOWriterExecutable.cpp: set proper r_length for ld -r of kPointerDiff ----- Tagged ld64-36 2006-02-08 Nick Kledzik * src/MachOReaderRelocatable.cpp: rdar://problem/4438677 Handle when a .o file dwarf line info entries but no functions 2006-02-08 Nick Kledzik * src/MachOWriterExecutable.cpp: Properly set address of first TEXT section Keep S_COALESCED attribute for __eh_frame 2006-02-08 Nick Kledzik * src/ld.cpp: Temporarily turn allowable client errors into warnings * unit-tests/test-cases/allowable-clientMakefile: Temporarily let warnings be ok for above * src/MachOWriterExecutable.hpp: fix ld -r to not use external relocations for symbols make static 2006-02-08 Nick Kledzik * src/ld.cpp: A sibling in an umbrella can always link with its other siblings * unit-tests/test-cases/allowable-client: add test case for above 2006-02-08 Nick Kledzik * src/MachOReaderRelocatable.hpp: support LOCAL non-lazy pointers to hidden symbols * src/machochecker.cpp: verify indirect symbol table * unit-tests/test-cases/private-non-lazy: added test case 2006-02-07 Nick Kledzik * src/MachOWriterExecutable.hpp: fix calculation of file offsets in ld -r mode * src/machochecker.cpp: verify segment file offsets are within file ----- Tagged ld64-35 2006-02-06 Nick Kledzik * ld.cpp: allow parent of sub-framework to link * unit-tests/test-cases/allowable-client/Makefile: added cases for parent and clients of parent 2006-02-04 Nick Kledzik * unit-tests/test-cases/relocs-c/test.c: added some array cases * src/MachOReaderRelocatable.hpp: factor out makeReferenceToEH() * src/MachOWriterExecutable.hpp: add initial support for non-lazy pointer synthesis ----- Tagged ld64-34 2006-02-04 Nick Kledzik * src/ld.cpp: fix -no_arch_warnings fix -undefined warning Do BINCL/EINCL optimization for gfull stabs Implement "essential symbols" for stabs (-Sp) Fix allowable clients to only test on direct libraries * src/MachOReaderRelocatable.hpp: support BINCL/EINCL stabs 2006-02-03 Nick Kledzik * src/machochecker.cpp: add code to check load command alignment * src/MachOWriterExecutable.hpp: make load command alignment depend on architecture 2006-02-03 Nick Kledzik * unit-tests/test-cases/literals-coalesce: added * src/MachOReaderRelocatable.hpp: assure all targets of low14 ppc relocs are at least 4-byte alignmented ----- Tagged ld64-33 2006-02-02 Nick Kledzik * src/MachOReaderRelocatable.hpp: properly coalesce 8-byte literals * src/MachOWriterExecutable.hpp: support ppc64::kPointerDiff32 ----- Tagged ld64-32 2006-02-02 Nick Kledzik * src/MachOReaderRelocatable.hpp: support anonymous zero fill atoms 2006-02-02 Nick Kledzik * src/ld.cpp: A weak definition is good enough, do not search archives for a non-weak one * unit-tests/test-cases/archive-weak: add test case for above * src/MachOReaderRelocatable.hpp: an atom should never have a by-name reference to itself * src/Options.cpp: prevent .eh symbols from being exported via a -exported_symbols_list 2006-02-01 Nick Kledzik * src/MachOReaderRelocatable.hpp: Support -macosx_version_min 10.5 2006-02-01 Nick Kledzik * src/MachOReaderRelocatable.hpp: don't try to parse debug_line dwarf if no symboled atoms ----- Tagged ld64-31 2006-02-01 Eric Christopher * unit-tests/test-cases/allow-stack-execute/Makefile: Move otool handling... * unit-tests/include/common.makefile: ... here. * unit-tests/bin/fail-if-stdin.pl: New. * unit-tests/test-cases/no-uuid: Ditto. * src/ld.cpp (Linker::) Add fCreateUUID. (::Linker): Initialize. (::collectStabs): Use. Set if dwarf or we have a UUID already. (::writeOutput): Pass as argument to Writer::write along with option. * src/Options.h (Option::emitUUID): Declare. (Option::fEmitUUID): Ditto. * src/Options.cpp (Option::emitUUID): New. (parse): Handle -no_uuid. * src/MachOReaderRelocatable (Reader::Reader): Handle LC_UUID. * src/ExecutableFile.h (Writer::Write): Add createUUID boolean. * src/MachOWriterExecutable: Add UUID forward declaration. (fUUIDAtom): New. (UUIDLoadCommandAtom): Emit LC_UUID if fEmit. New function emit. Size to zero at start. (Writer::writer): Add handle for LC_UUID. If createUUID emit LC_UUID. (MachHeaderAtom::copyRawContent): Don't count a load command if its size is 0. (UUIDLoadCommandAtom::copyRawContent): Depend on fEmit. 2006-01-31 Nick Kledzik * unit-tests/test-cases/dwarf-debug-notes : Added * src/ld.cpp: don't generate debug note for .eh symbols * src/MachOReaderRelocatable.hpp: make dwarf line info to atom matching faster and better 2006-01-31 Nick Kledzik * ld64.xcodeproj/project.pbxproj : Make buildable on Leopard * src/MachOFileAbstraction.hpp: make buildable without latest cctools headers 2006-01-31 Nick Kledzik * src/MachOReaderRelocatable.hpp: better error message for bad relocs * src/ObjectDump.cpp: add emacs tab settings * src/SectCreate.h: ditto * src/SectCreate.cpp: ditto * src/machochecker.cpp: ditto * src/ExecutableFile.h: ditto 2006-01-30 Eric Christopher * src/ExecutableFile.h: Indent. 2006-01-30 Nick Kledzik * src/MachOReaderRelocatable.hpp: performance improvements * src/ld.cpp: now that stubs are synthesized in write, don't need to special case anymore 2006-01-30 Nick Kledzik * src/MachOReaderRelocatable.hpp: fix parsing of pcc relocs * unit-tests/test-cases/relocs-asm/relocs-asm.s: add test case for above 2006-01-29 Nick Kledzik * unit-tests/test-cases/weak_import: added test case * src/ld.cpp: move code for weak_import mismatch to writer * src/ObjectFile.h: remove ImportWeakness methods * src/MachOReaderDylib.hpp: ditto * src/SectCreate.cpp: ditto * src/Architectures.hpp: add new ReferenceKinds for weak_imports * src/MachOReaderRelocatable.hpp: implement new ReferenceKinds * src/MachOWriterExecutable.hpp: handle new ReferenceKinds and weak_import mismatches 2006-01-29 Nick Kledzik * src/Options.cpp: verify -allow_stack_execute is only used on main executables 2006-01-29 Nick Kledzik * src/MachOReaderRelocatable.hpp: sync with latest dwarf reader from Geoff * src/debugline.c: sync with latest dwarf reader from Geoff 2006-01-27 Eric Christopher * src/ld.cpp (Linker::syntesizeStabs): Correct spelling. Update all uses. 2006-01-27 Eric Christopher * src/Options.h (Options): Add hasExecutableStack, fExecutableStack. * src/Options.cpp (Options::hasExecutableStack): New. (Options::parse): Parse -allow_stack_execute. * src/MachOWriterExecutable.hpp (MachHeaderAtom::copyRawContent): Implement MH_ALLOW_STACK_EXECUTION. * unit-tests/include/common.makefile (FAIL_IF_EMPTY): New. * unit-tests/bin/fail-if-no-stdin.pl: New file. * unit-tests/test-cases/allow-stack-execute: New directory. 2006-01-27 Nick Kledzik * src/MachOFileAbstraction.hpp: rely on latest system headers * src/MachOWriterExecutable.hpp: fix ppc stubs. wrote new relocationNeededInFinalLinkedImage() to replace common code 2006-01-27 Eric Christopher * src/ld.cpp (logTraceInfo): New. (Linker::addArchive): Use. (Linker::addDylib): Ditto. * src/ObjectFile (ReaderOptions::fTraceOutputFile): New. * src/MachOReaderArchive.hpp (Reader::Reader): Move trace logging to Linker::addArchive. * src/Options.cpp (parsePreCommandLineEnvironment): Check LD_PRINT_FILE if tracing dylibs or archives. 2006-01-26 Nick Kledzik * src/MachOWriterExecutable.hpp: handle NULL strings in SO debug notes 2006-01-26 Nick Kledzik * src/MachOWriterExecutable.hpp: fix header padding calculation and thread state 2006-01-26 Nick Kledzik Rewrite all stabs processing. Move sythesize of debug notes into ld.cpp 2006-01-26 Nick Kledzik * src/MachOWriterExecutable.hpp: fix ppc and ppc64 stub relocs 2006-01-25 Nick Kledzik * ld64.xcodeproj/project.pbxproj: special case building in Curry 2006-01-25 Nick Kledzik * src/MachOWriterExecutable.hpp: fix bugs in stub/lazy-pointer synthesis 2006-01-24 Eric Christopher * src/ld.cpp (Linker::createReaders): Change logging title to XBS. (Linker::addDylib): Ditto. * src/MachOReaderArchive.hpp (Reader::Reader): Ditto. * src/Options.h (fPrintOptions): New. * src/Options.cpp (Options::Options): Initialize above. (Options::checkForFile): Change logging title to XBS. (Options::findFramework): Ditto. (Options::parse): Add log for options. (Options::parsePreCommandLineEnvironmentSettings): Add LD_TRACE_ARCHIVES, LD_TRACE_DYLIBS, and LD_PRINT_OPTIONS. 2006-01-24 Nick Kledzik * src/MachOReaderRelocatable.hpp: better C++ eh parsing 2006-01-23 Eric Christopher * unit-tests/bin/fail-if-exit-zero.pl: New. * unit-tests/include/common.makefile (FAIL_IF_SUCCESS): Use. * unit-tests/allowable-client: New test. * src/ld.cpp (Linker::addDylib): Check allowable clients before adding dylib. * src/Options.h (allowableClients): New. (clientName): Ditto. (fAllowableClients): Ditto. (fClientName): Ditto. * src/Options.cpp: Implement above. (parse): Handle -allowable_client and -client_name. * src/MachOReaderDylib.hpp (getAllowableClients): New. (fAllowableClients): Ditto. (Reader): Process LC_SUB_CLIENT load command. * src/ObjectFile.h (parentUmbrella): New. (getAllowableClients): New. * src/MachOWriterExecutable.hpp (AllowableClientLoadCommandsAtom): New. 2006-01-23 Nick Kledzik * unit-tests/test-cases/archive-basic: added * src/ld.cpp: fix shadowed local variable * src/FileAbstraction.hpp: ld64 shouldn't inline when building debug 2006-01-23 Nick Kledzik * src/ld.cpp: fix symbol not found error message * src/MachOReaderDylib.hpp: add logging to hash table * src/MachOReaderRelocatable.hpp: enable stabs processing. Handle static functions with stubs handle labeled cstrings. * src/MachOWriterExecutable.hpp: properly suppress atoms not in symbol table. fix low14 error check. add StubAtomHelper. * unit-tests/test-cases/relocs-literals/test.c: add more interesting edge cases 2006-01-17 Nick Kledzik * src/MachOReaderRelocatable.hpp: tweaks to synthesizing debug notes 2006-01-16 Nick Kledzik * src/debugline.{sh}: added * src/MachOReaderRelocatable.hpp: synthesize debug notes SOL from dwarf * src/MachOWriterExecutable.hpp: fix lazy pointer section * src/ObjectDump.hpp: Fix conditionalization * unit-tests/test-cases/dwarf-strip: added 2006-01-11 Nick Kledzik * src/MachOReaderRelocatable.hpp: support Tiger crt1.o build with old ld64 * src/ObjectDump.hpp: Support -arch option 2006-01-10 Nick Kledzik * src/MachOWriterExecutable.hpp: fix stubs for ppc64 * src/MachOFileAbstraction.hpp: fix typo for macho_routines * ld64.xcodeproj/project.pbxproj: add machochecker target * src/machochecker.cpp: new skeleton for checking mach-o file bit * unit-tests/: Add support for running machochecker 2006-01-10 Nick Kledzik * src/MachOReaderRelocatable.hpp: warn if dwarf can't be parsed * src/MachOReaderArchive.hpp: modTime for OSO stabs from archives is .a modTime 2006-01-09 Nick Kledzik * track modification time of .o files so that sythesized OSO stab will have it 2006-01-09 Nick Kledzik * src/MachOFileAbstraction.hpp: add macho_uuid_command * src/MachOWriterExecutable.cpp: add UUID load command to generated files 2006-01-09 Nick Kledzik * src/MachOReaderDylib.hpp: no longer keep dylib memory mapped * src/ld.cpp: don't track dylib sizes because they are not longer memory mapped 2006-01-05 Nick Kledzik * src/MachOReaderRelocatable.hpp: support new relocations 2006-01-05 Nick Kledzik * src/MachOReaderDylib.hpp: support MH_DYLIB_STUB * src/MachOReaderRelocatable.hpp: Add Geoff's comp unit extractor 2006-01-05 Nick Kledzik refactor: transform Atom::dontStripName() to getSymbolTableInclusion() * src/ld.cpp: pass dyld_stub_binding_helper to writer * src/MachOReaderRelocatable.hpp: update synthesized stabs Ignore stubs and lazy pointers in .o files Support initializers and terminators * src/MachOWriterExecutable.hpp: synthesize stubs and lazy pointers as needed * ld64.xcodeproj/project.pbxproj: change Release target to build with dwarf 2006-01-03 Eric Christopher * src/Options.h (multipleDefinitionsInDylibs): Declare. (overridingDefinitionInDependentDylib): Ditto. (warnOnMultipleDefinitionsInObjectFiles): Ditto. (multiplyDefined): Remove. (multiplyDefinedUnused): Ditto. (fMultiplyDefined): Ditto. (fWarnOnMultiplyDefined): New. (fMultiplyDefinedDynamic): Ditto. * src/Options.cpp (Options::Options): Initialize above. (overridingDefinitionInDependentDylib): New. (multipleDefinitionsInDylibs): Ditto. (warnOnMultipleDefinitionsInObjectFiles): Ditto. (parse): Update comments. Fix parsing of -y option. Update error message for -dead_strip. Parse above options. 2006-01-02 Nick Kledzik * Refactor: move Atom::writeContent() to Writer 2005-12-23 Nick Kledzik * Reworked, simplify, and document test harness * unit-tests/README: Added 2005-12-23 Nick Kledzik * src/MachOReaderRelocatable.hpp: fixes for Objective-C * unit-tests/test-cases/relocs-objc: Added 2005-12-22 Nick Kledzik * src/MachOReaderRelocatable.hpp: fix check that next reloc is pair * src/MachOReaderRelocatable.hpp: Add code to synthesize essential stabs from dwarf 2005-12-21 Nick Kledzik * src/MachOReaderRelocatable.hpp: Fix parsing of literal sections * src/MachOWriterExecutable.hpp: Fix writing of literal sections * unit-tests/test-cases/relocs-literals: Added 2005-12-15 Eric Christopher * src/Options.h (enum Treatment): New. (enum PICTreatment): Delete. (enum VersionMin): New. (prebind): Declare. (macosxVersionMin): Ditto. (multiplyDefined): Ditto. (multiplyDefinedUnused): Ditto. (setVersionMin): Ditto. (setPICTreatment): Delete. (setReadOnlyRelocTreatment): Ditto. (picTreatment): Adjust return type. (parseTreatment): New. (fPrebind): Ditto. (fVersionMin): Ditto. (fPICTreatment): Change type. (fMultiplyDefined): New. (fMultiplyDefinedUnused): Ditto. (fLimitUndefinedSymbols): Ditto. * src/Options.cpp: Fix whitespace. Add comments on options. (Options::Options): Add initializers for new variables. (Options::prebind): New. (Options::macosxVersionMin): Ditto. (Options::parseTreatment): Ditto. (Options::setVersionMin): Ditto. (Options::setReadOnlyRelocTreatment): Delete. (Options::setPICTreatment): Ditto. (Options::Parse): Update for above. Add comments. 2005-12-15 Nick Kledzik * src/MachOReaderRelocatable.hpp: Add comments about dwarf 2005-12-14 Nick Kledzik * src/ELFFileAbstraction.hpp: Added * src/ELFReaderRelocatable.hpp: Added * Lot of fixes for new architecture 2005-12-13 Nick Kledzik * src/MachOReaderRelocatable.hpp: check for S_ATTR_DEBUG and ignore those sections * unit-tests/test-cases/dwarf-ignore: added 2005-12-12 Nick Kledzik * Added test harness and three initial tests: relocs-asm, relocs-c, and hello-world 2005-12-12 Nick Kledzik * src/MachOReaderRelocatable.hpp: Massive refactoring: Now there are three Atom classes, Chopping into Atoms is done on label boundaries or by knowledge of special sections, Share lots of ppc/ppc64 code. Stabs process code is temporarily disabled. 2005-12-12 Nick Kledzik * src/ObjectDump.cpp: Add command line options: -no_content, -stabs, -no_sort 2005-12-11 Eric Christopher * src/Options.cpp: Reformat. * src/Options.h: Ditto. 2005-12-07 Eric Christopher * src/MachOReaderRelocatable.hpp (Atom::getAlignment): When calculating alignment of an Atom, take into account the alignment from which we pulled the Atom. 2005-12-06 Nick Kledzik * src/Options.cpp src/Options.h: Add design comments 2005-12-05 Eric Christopher * src/ld.cpp (Linker::createWriter): Uncomment ppc64 and i386 linkers. 2005-12-05 Eric Christopher * ChangeLog: New file. 2005-12-02 Nick Kledzik * src/ObjectFile.h: Add design comments 2005-11-28 Nick Kledzik * Refactor Atom to use getDefinitionKind() 2005-11-21 Nick Kledzik * src/MachOWriterExecutable.hpp: don't generate section for commons in -r mode 2005-11-18 Nick Kledzik * x86 tweaks 2005-11-18 Nick Kledzik * src/ObjectDump.cpp: make work with command line arguments 2005-11-18 Nick Kledzik * Massive rework to remove preprocessor conditionals and use templates 2005-11-14 Nick Kledzik * Created new Subversion repository for ld64 from cvs tag ld64-27.2