TODO: - Should add a -no_fix_prebinding flag to ld(1) so fix_prebinding can be built with it. - MH_BUNDLEs should have a two-level namespace hint table by default or at least with MACOSX_DEPLOYMENT_TARGET 10.2 (the -twolevel_namespace_hints flag). Note this is only a problem with 10.0 which is NOT a deployment target. - Test coalesced symbols with -static code gen and with rld()? - Might be a bug in search_dynamic_libs() if it is searching an archive then it does not take into account -all_load or -Objc. - The sreloc->r_address field is only 24-bits (16 meg) and can overflow producing bad relocation entries in the output file. To test for this a handful of checks would need to be added to the *_reloc.c file after update_reloc and other files that put out relocation entries. - The LC_PREBOUND_DYLIB commands do not have the modules used via N_INDR symbols marked in the linked_modules bit vector. - Add check for undefined dyld_stub_binding_helper and __dyld_func_lookup if output_for_dyld is set. - Think about how indirect section would be ordered if allowed. Build problems: - For i386 builds with -dynamic -fomit-frame-pointer produces bad code (bug #52986) - For m68k builds -finline-functions crashes the compiler (used in the Makefile on the ld_build target). Changes for the 5.26 release (the cctools-738 release): - Removed the code and files for the old ProjectBuilder interface including the use of mig(1) in the Makefile. The files make.defs make_defs.h were removed and the code in ld.c, pass1.c and symbols.c had the code with these old interfaces removed. Radar bug #6457206. - Added support for the arm ARM_THUMB_32BIT_BRANCH relocation entry. Radar bug #6511482. Changes for the 5.26 release (the cctools-721 release): - Changed the Makefile and removed -force_cpusubtype_ALL from KERN. Radar bug #6233829. Changes for the 5.26 release (the cctools-711 release): - Changed the Makefile so -D__DARWIN_UNIX03=__arm__ is always added to KERN Radar bug #6098280. Changes for the 5.26 release (the cctools-705 release): - Code changes for other code to work on 64-bit hosts: Radar bug #6022298. - Changed the types of the local variables hi21, lo14, w, w1, and w2 in hppa_reloc in hppa_reloc.c from unsigned long to uint32_t . - Added a cast to (int *) for the assignment of output_thread_info entry_point and stack_pointer for the arm thread state. - Changed the types of dylib_current_version, dylib_compatibility_version, nremove_symbols and nsave_symbols from unsigned long to uint32_t in ld.[ch]. Changed the use of %lu to %u for these in ld.c . Changes for the 5.26 release (the cctools-699 release): - Changed uuid.c to directly call uuid_generate_random() without the dynamic lookup. Radar bug #5620031. Changes for the 5.25 release (the cctools-695 release): - Changed the Makefile to use -iwithsysroot as part of the KERN flags. Changes for the 5.25 release (the cctools-681 release): - Removed all __OPEN_SOURCE__ references in Makefile, notes, objects.c, objects.h, sections.c, symbols.c, layout.c, ld.c and arm_reloc . Changes for the 5.25 release (the cctools-679.3 release): - Changed the Makefile to test OLD_LIBKLD pass down from the upper Makefile so to not build libkld when OLD_LIBKLD is NO. Radar bug #5698612. Changes for the 5.25 release (the cctools-677 release): - Changed the Makefile to not use -Wno-long-double and -no-cpp-precomp . Radar bug #5563553. Changes for the 5.25 release (the cctools-676 release): - Changed check_cur_obj() in pass1.c to know about S_DTRACE_DOF section types enough to not cause an error about unknown section type. Changes for the 5.25 release (the cctools-673 release): - Changed the sources so the arm stuff is not in the open source version. Radar bug #5326431. - Changed the Makefile to #ifndef __OPEN_SOURCE__ out the arm files - Added #ifndef __OPEN_SOURCE__ to the following files to bracket arm code: layout.c, ld.c, objects.c, objects.h, sections.c, symbols.c and arm_reloc.c. Changes for the 5.24 release (the cctools-663 release): - Changed the code in ld.[ch], pass1.c, symbols.c, layout.c and pass2.c for the new get_macosx_deployment_target() interface. Radar bug #5132019. Changes for the 5.24 release (the cctools-662 release): - Changed kld so it will propagate the LC_UUID from the last object file being linked into the output. Radar bug #5137807. - Changed check_cur_obj() in pass1.c for #ifdef KLD to always clear the output_uuid_info to zeros and then if the object file being checked has an LC_UUID command copy that into the output_uuid_info. - Changed layout() in layout.c for #ifndef KLD so it does not clear the output_uuid_info and create the uuid load command if the output_uuid_info.uuid_command.cmdsize is non-zero. Changes for the 5.24 release (the cctools-653 release): - Backed out the change for Radar bug #4930693 in internal_kld_load() in kld.c to #ifdef KLD so that RLD_DEBUG_OUTPUT_FILENAME_flag is always set to 1. This was causing problems the way the prelinked kernel is generated. Radar bug #4930693. - Updated dylibs.c and pass1.c to handle the LC_REEXPORT_DYLIB load command. Radar bug #4986624. Changes for the 5.24 release (the cctools-651 release): - Changed pass1() in pass1.c to swap the load command part of load commands