To Do:
- Change to Doug's approach to relayout, namely something like reserving the
last 10% of the load region for new dylibs and then evenly spacing the
existing dylibs in the other 90% (for split libs). See email of 11/6/2000.
- Have cmpdylib check Objc info Tracker bug #78124.
- Fix a bug in strip on line 1105 where it uses missing_reloc_symbols when it
could have been set otherwise and does not print the next line.
- Maybe add fat support for segedit(1)
Changes for the 5.10 release (the cctools-406 release):
- Changed dependent_libs(3) to work for MH_BUNDLE type objects. Radar bug
#2862297.
Changes for the 5.10 release (the cctools-405 release):
- Changed the implementation of the fix to strip below slightly. The code to
check if a local private extern was on the save list was moved ahead of
other checks in strip_symtab(). This is needed to avoid an error saying the
symbols names listed in save file was not in the object file.
Changes for the 5.10 release (the cctools-404 release):
- Changed strip(1) to fix the problem with the fix to strip private externs
that were turned into statics which was Radar bug #2853161. This change
caused some private extern coalesced symbols used through indirect symbols
not to be saved. The fix was to copy the code to check for coalesced symbols
used by indirect symbols into the local symbol if case. Then as it turned out
some other non-coalesced local symbols were being used via indirect symbols
so the test for the symbol being coalesced was removed and only the test for
using it through an indirect symbol remains. The new Radar bug is 2860291.
- Changed weak_module to be static in redo_prebinding.c. Radar bug #2859919.
Changes for the 5.10 release (the cctools-403 release):
- Changed the all target in the Makefile to also depend on lib_ofiles so
everything gets built by default.
Changes for the 5.10 release (the cctools-402 release):
- Changed strip(1) to strip private externs that were turned into statics that
are in a dynamic library that are not referenced by a module other than where
the symbols is defined. Radar bug #2853161.
Changes for the 5.10 release (the cctools-400 release):
- Changed the Makefile back to again use the -dependency-file with gcc.
- Changed seg_addr_table to not generate errors about table entries that do not
exist when -update or -update_overlapps are specified. Radar bug #2848667.
- Changed check_syms to not check dynamic shared library addresses. The code
in check_dylib() was ifdef'ed out. Radar bug #2847857.
- Fixed a bug in the change to strip that stripped coalesced symbols that are
not used with an indirect symbol table entry by default. Radar bug #2689894.
The problem is that the setting of output_indirect_symtab was not done for the
strip (not NMEDIT case) when it was moved up. Radar bug #2851013.
- Added the new throttle parameter to the redo_prebinding() API to allow it to
be used used for prebinding on demand to throttle back its I/O when running
in the back ground. Radar bug #2850642.
- Changed indr.c, strip.c, seg_hack and install_name_tool to add the new
throttle parameter to writeout(). Radar bug #2850642.
Changes for the 5.10 release (the cctools-399 release):
- Changed seg_addr_table(1) in the -update or -update_overlapps case to not
check that non-zero addresses in the table match the addresses in the dynamic
library file. Radar bug #2841199.
Changes for the 5.10 release (the cctools-398 release):
- Changed redo_prebinding to check if the library has already been loaded via
the dev,ino pair from stat(2). This change is in load_library() and the
fields dev,ino have been added to the lib struct.
Changes for the 5.10 release (the cctools-397 release):
- Added the new allow_missing_architectures parameter to the
needs_redo_prebinding() API. Radar bug #2836068.
- Added the -multiply_defined_unused flag to libtool. Radar bug #2835152.
Changes for the 5.10 release (the cctools-396 release):
- Changed seg_addr_table(1) to not use the SYMROOT file when -update is used.
Radar bug #2826945.
- Added passing the -weak_reference_mismatches flag from libtool to ld.
- Added the new allow_missing_architectures parameter to the redo_prebinding()
API in <mach-o/redo_prebinding.h>. Radar bug #2809673.
In API redo_prebinding() the new allow_missing_architectures parameter gets
set into the static variable arch_cant_be_missing.
In load_library() where it checks for missing architectures it tests the
static variable arch_cant_be_missing for non-zero and compares it to the
arch_flag.cputype. If set and it does not match load_library() was changed
to return FALSE (previously void) else it returns TRUE.
In load_archs_libraries() and load_dependent_libraries() which calls
load_library() if load_library() returns FALSE these two calls also return
FALSE.
Then in process_archs() if load_archs_libraries() and
load_dependent_libraries() return FALSE it calls to setup the symbolic info,
build a new symbol table and swap the symbol table for output before
returning.
The routines setup_symbolic_info() and build_new_symbol_table() both had a
new boolean prameter missing_arch. And if missing_arch is passed as TRUE it
just setups up the info or builds the new symbol table without updating the
prebinding info.
- Added the -f flag to ranlib so that it warns when it creates a fat archive
that ar(1) will not be able to operate on. This is used by ar(1) with the
-s option when it runs ranlib. Radar bug #2814831.
- Changed the use of N_WEAK_SYM to N_WEAK_REF in nm.c and redo_prebinding.c.
- Changed the Makefile to not use the -dependency-file with gcc as well as
mwccppc.
Changes for the 5.10 release (the cctools-395 release):
- Fixed a bug in redo_prebinding that was checking for symbols being overridden
where it should have ignored two-level namespace libraries. Added checks in
check_dylibs_for_definition() and check_dylibs_for_reference().
Changes for the 5.10 release (the cctools-394 release):
- Fixed a bug in redo_prebinding that should not have been checking for symbols
being overridden in two-level namespace images. The change was in
process_arch() adding a check before the call to
check_for_dylib_override_symbols().
- Changed strip to strip coalesced symbols that are not used with an indirect
symbol table entry by default. Radar bug #2689894.
- Updated redo_prebinding to support weak linking. Radar bug #2803414.
Changes for the 5.10 release (the cctools-393 release):
- Changed nm(1)'s -m option to print "weak external" for symbols with the
N_WEAK_SYM bit set.
- Made the changes to support the LC_LOAD_WEAK_DYLIB varient of the
LC_LOAD_DYLIB load command. The following files were effected check_hints.c,
install_name_tool.c, nm.c, redo_prebinding.c and segedit.c.
Note: the changes to redo_prebinding.c to support redoing the prebinding when
a weak library is missing or a weak symbol is missing is not done yet.
Changes for the 5.10 release (the cctools-392 release):
- Changed the calls to ofile_process() in size.c, strings.c, nm.c and
kern_tool.c to pass TRUE for the new use_member_syntax parameter. Radar bug
#2730127.
- Changed the calls to ofile_process() in checksyms.c, cmpdylib.c,
seg_addr_table.c and check_dylib.c to pass FALSE for the new use_member_syntax
parameter. Radar bug #2730127.
Changes for the 5.10 release (the cctools-390 release):
- Added the command install_name_tool(1).
- Fixed some bugs in the update_load_commands() routine of redo_prebinding.c .
The first was the missing check of the section flags against S_ZEROFILL when
determining the low_fileoff. The others where in not resetting all of the
pointers into the load_commands at the end of the routine.
Changes for the 5.10 release (the cctools-389 release):
- Updated the inout.c example tool to work correctly with all the tables of
a dynamic library.
- Added the -prebind_all_twolevel_modules and the -headerpad_max_install_names
options to libtool.
- Fixed a bug with the checking of the LIBRARY_ORDINAL in redo_prebinding that
was causing a crash when SELF_LIBRARY_ORDINAL (0) was used in a malformed
executable. Radar bug #2787021.
Changes for the 5.10 release (the cctools-387 release):
- Changed check_dylib to not check the -install_name argument of the dylib if
the dylib starts with @executable_path.
- Added the -seg_addr_table_filename <file_system_path> option to libtool,
redo_prebinding, checksyms and check_dylib. For check_dylib this flag is
required.
- Fixed a grammatical error in redo_prebinding.c where "overridden" should have
been used where "overridded" was used. Radar bug #2764926.
Changes for the 5.10 release (the cctools-386 release):
- Changed the breakout() calls in strip.c, indr.c and seg_hack.c to pass FALSE
as the value for the new calculate_input_prebind_cksum parameter and always
set the prebind checksum to zero (if any) on output.
- Added the -z option to redo_prebinding(1) to zero out the prebind check sum.
- Changed all the breakout() calls in redo_prebinding.c to pass the appropate
value for the new calculate_input_prebind_cksum parameter.
Changes for the 5.10 release (the cctools-385 release):
- Fixed a bug in the parsing of the -segs_read_only_addr and
-segs_read_write_addr options to seg_addr_table.c that was missing a leading
'-'.
- Changed redo_prebinding(1) to add the -seg_addr_table option to allow it to
relocate a dynamic library to a new prefered address. Many changes to the
code were made to support this. Radar bug #2575205 and #2729976.
Added the routine object_file_type().
Added the only_if_needed boolean parameter to the redo_prebinding(3) library.
Changed the return type of the redo_prebinding(3) library API to be an enum.
Removed the comment about the slide_to_address parameter of the
redo_prebinding(3) library API not being supported.
Added the expected_address parameter to the needs_redo_prebinding(3) library
API.
Changed libredo_prebinding.a from an object file to an archive.
Changes for the 5.9 release (the cctools-380 release):
- Added the -twolevel_namespace_hints option to libtool. Radar bug #2735266.
Changes for the 5.9 release (the cctools-379 release):
- Fixed pagestuff(1) to know about the hints table.
Changes for the 5.9 release (the cctools-372 release):
- Picked up the changes to seg_addr_table(1) for the new -update_overlaps
option.
Changes for the 5.9 release (the cctools-371 release):
- Fixed "uptodate" to be "up to date" in redo_prebinding.c. Radar bug #2711451.
- Fixed a bug in redo_prebinding(1) that was not testing the value of arch_hints
for NULL before using it in build_new_symbol_table() in redo_prebinding.c
before using it. So for images without hints it would crash.
Changes for the 5.9 release (the cctools-370 release):
- Added support for updating the hints table to redo_prebinding.
Changed swap_arch_for_output() for swapping hints on output.
Change build_new_symbol_table() in redo_prebinding.c to also update
the hints table with its call to lookup_symbol(). Changed the various
lookup_symbol*() routines to take a pointer to a isub_image and itoc to
fill in if not NULL.
Changed build_new_symbol_table() to account for hints in the sym_info_size.
Added variables arch_hints and arch_nhints to redo_prebinding.c and cleared
them in reset_statics() and set and swapped them in setup_symbolic_info().
- Changed strip_object() in strip.c to set the object's output_hints field and
to reset the object's hints_cmd->offset field. Also to adjust the
input_sym_info_size and output_sym_info_size fields with the size of the
hints.
- Changed build_new_symbol_table() in redo_prebinding.c to know about the
hints table as in strip above.
- Changed translate_dylib() in indr.c to know about INDIRECT_SYMBOL_LOCAL and
INDIRECT_SYMBOL_ABS. And to know about prebound undefined symbols (N_PBUD).
Also made the same changes as in strip noted above for hints.
Changes for the 5.9 release (the cctools-369.3 release):
- Fixed a bug in check_symbolic_info_tables() in redo_prebinding.c in its
checking for bad LIBRARY_ORDINAL that needed to make sure the symbol was not
a N_STAB before checking it.
Changes for the 5.9 release (the cctools-369 release):
- Fixed redo_prebinding which had the same problem as dyld that was fixed in
cctools-366 with undefined symbol references from two-level images where
the definition of the symbol is in a sub-framework of a flat namespace
umbrella framework that would come up undefined. The fixes were in
load_archs_libraries() and load_dependent_libraries() for counting the
dependent libraries no longer being conditional on the image being
MH_TWOLEVEL. And in load_dependent_libraries() so the call to
setup_sub_images() is also longer conditional on if the image is MH_TWOLEVEL.
Changes for the 5.9 release (the cctools-367 release):
- Added support for sub-libraries like sub-umbrellas to redo_prebinding.
Radar bug #2697458.
Added the following field to the lib struct:
char *library_name;
and changed the of the following field from umbrella_name_size to:
unsigned long name_size;
for use both by umbrella_name and library_name. The code was changed to use
the new field name.
Changed load_archs_libraries() and load_library() to set the library_name
field from the return value of guess_short_name().
Changed print_two_level_info() to print the library_name in the various lists.
Changed setup_sub_images()'s header comments to include sub-libraries and
added code to deal with sub-libraries like sub-umbrellas.
- Added the -sub_library flag to libtool. Radar bug #2697458.
Changes for the 5.9 release (the cctools-363 release):
- Changed libtool so that if -arch_only is specified with a specific cpusubtype
other than the family cpusubtype it does not use -force_cpusubtype_ALL and
passes the -arch_only argument to ld(1) as the -arch flag so that the output
is to be tagged with that cpusubtype.
Changes for the 5.9 release (the cctools-362 release):
- Fixed a bug in redo_prebinding.c in main() where the mask it uses to get
the mode from the stat mode should be 07777 not 06777 so the sticky bit
gets set.
- Added progname to file.c as the changes to libstuff needs it (this is the
Openstep version of file).
- Fixed the same bug in load_dependent_libraries() as in dyld in
redo_prebinding.c that was only calling setup_umbrella_images() if the library
was a MH_TWOLEVEL. This needed to call setup_umbrella_images() for all
libraries as it is possible that a sub-framework of an umbrella library is
flat and the umbrella library is two-level. In that case other images could
have two-level namespace references recorded to the umbrella library for
symbols defined in the flat sub-framework.
Changes for the 5.9 release (the cctools-360 release):
- Added the -e option to redo_prebinding(1) to take the executable_path.
- Changed the code in redo_prebinding to be ifdef'ed with LIBRARY_API for the
API in Radar bug #2604014.
Changes for the 5.9 release (the cctools-359 release):
- Changed libtool(1) to pass -multiply_defined <treatment> to the linker.
- Made a great number of changes to redo_prebinding(1) so it would support
two-level namespace images.
- Fixed a bug in redo_prebinding(1) that would overwrite the output_file with
a partially written file if the filesystem fills up. Radar bug #2639352.
- Added code in nm.c to deal with the library ordinal being EXECUTABLE_ORDINAL.
- Changed checksyms(1) to open the default segment address table if none is
specified via a -seg_addr_table argument.
- Added -Wno-long-double to shutup the compiler for
<architecture/m88k/fp_regs.h>.
Changes for the 5.8 release (the cctools-357 release):
- Added support for the CPU_SUBTYPE_POWERPC_7450 in lipo.c. Radar bug #2599869.
- Fixed a bug in seg_addr_table(1) when the -update option was used that it
did not preserve the non-zero addresses in the table. Instead it changed the
non-zero entries to the values in the libraries were built with. Radar bug
#2575214.
Changes for the 5.8 release (the cctools-356 release):
- Changed the algorithm in seg_addr_table(1) for split libraries to add in the
rounding factor (0x10000) before calling round().
Changes for the 5.8 release (the cctools-355 release):
- Fixed a bug in strip that needed to save local symbols that were private
extern symbols that were in COALESCED sections. Radar bug #2584111.
Changes for the 5.8 release (the cctools-354 release):
- Fixed a bug in libtool(1) when using -filelist that did not allocate the
correct amount of memory due to a '*' needing to be a '+' on lines 388 and
on 390.
Changes for the 5.8 release (the cctools-352 release):
- Fixed yet another bug with nmedit(1) that did not set the fields nlocalsym and
nextdefsym to zero before incrementing them.
Changes for the 5.8 release (the cctools-351 release):
- Fixed a bug in nmedit(1) that did not swap the correct module table.
- Fixed a bug with nm(1) dealing with a dynamic library that had bad iextdefsym
or nextdefsym fields of a dylib_module which caused it to crash.
Changes for the 5.8 release (the cctools-350 release):
- Fixed a bug in seg_addr_table(1) where the -disablewarnings flag did not
disable the split overlap messages.
Changes for the 5.8 release (the cctools-349 release):
- Added passing -Y through from libtool to ld.
Changes for the 5.8 release (the cctools-348 release):
- Changed nmedit to remove duplicate names in the -s file so it does not
later complain that a symbol did not appear in the input file.
Changes for the 5.8 release (the cctools-347 release):
- Fixed a bug in the handing of -final_output on the command line of libtool.
Changes for the 5.8 release (the cctools-346 release):
- Added the -final_output flag to libtool to pass along to ld(1).
Changes for the 5.8 release (the cctools-345 release):
- Changed redo_prebinding -c so that it also checks the installed dynamic
library against the file it is running against for the correct time
stamp. Radar bug #2541232.
- Fixed a bug in redo_prebinding that did not correctly exit when an
executable's dependent libraries were out of date. Radar bug #2544407.
- Fixed a bug in redo_prebinding that did not correctly redo the relocation
for split libraries as it was not based on the -seg_read_write_address as it
should have been for split libraries. Radar bug #2544599.
- Fixed a bug in seg_addr_table(1) that caused it to crash as it was doing
a memset on a malloc()'ed memory larger than was allocated. Also fixed
a bug that was not allocating enough layout_info structs. Radar bug #2540744.
Changes for the 5.8 release (the cctools-344 release):
- Changed nm(1) -m to print the name of the libraries undefined symbols are
bound from when MH_TWOLEVEL is in the header. Radar bug #2538835.
Changes for the 5.8 release (the cctools-342 release):
- Added parsing the -flatname_space and -twolevel_namespace options and
-allowable_client option to libtool(1). Radar bug #2533649.
- Changed seg_addr_table(1) in its checking of sorted flat libraries for
overlaps so that when checking the next flat address to be assigned it checks
that the next address is also greater than the start of the as well as less
than the end of the region and that the region is not a fixed region.
Radar bug #2531831.
Changes for the 5.8 release (the cctools-341 release):
- Changed setup_symbol_list() in strip.c to allocate and stuff in an extra
newline in the symbol list file so that files that end without a new line
work. Radar bug #2520711.
- Added the tool seg_hack to change the names of Mach-O segments for use by KLD.
Radar bug #2523649.
- Changed nmedit to not change global coalesced symbols into statics and changed
strip not not strip global coalesced symbols. Radar bug #2503670.
Also made a fix to this to because if a coalesced symbol were listed in the
-s file it complained that the symbol was not in the input.
Changes for the 5.7 release (the cctools-337 release):
- Changed seg_addr_table(1) to use 0x70000000 as the default segs_read_only_addr
and 0x80000000 as the seg_read_write_addr. Also added two entries in
sorted_flat_layout_info so that next_flat_seg1addr() will step over these
areas. Radar bug #2496843.
- Added a check in edit_symtab() in strip.c (for nmedit) that checks to see
that the N_FUN name is not NULL. This prevents a error message about a
missing ':' in the stab name of a N_FUN when the name is NULL. The compiler
emits this as the end of the function stab. Radar bug #2495413.
Changes for the 5.7 release (the cctools-336 release):
- Added code in libtool.c that did not place N_SECT symbols marked with the
attribute NO_TOC into the table of contents. Radar bug #2494286.
Changes for the 5.7 release (the cctools-334 release):
- Changed checksyms(l) to not generate an error if a segment address table is
used and the library is not found in it. As the B&I tools will add it
automaticly. Also removed all checks for paths and use guess_short_name().
Also changed guess_short_name()'s has_suffix argument to return a pointer
to the suffix so checksyms could check for "_debug". This effected
seg_addr_table(l)'s and ld(1)'s guess_short_name() call too. Radar bug
#2490411.
- Changed seg_addr_table(l) to not use the factor for allocating the size of
split libraries. Also added some checking so that only the first 128meg of
a 256meg split segment is allocated. Radar bug #2490413.
- Added the -run_init_lazily flag to libtool. Radar bug #2490396.
Changes for the 5.7 release (the cctools-333 release):
- Fixed a bug introduced with the changes to strip.c to allow nmedit to work
on shared libraries. It produced bad output files for fat files as it was
free()'ing data structures to be written out. Radar bug #2484851.
Changes for the 5.7 release (the cctools-332 release):
- Added the -disablewarnings flag to seg_addr_table(1). This flag is also
passed to the various routines used in libstuff (Radar bug #2482327).
- Fixed a bug in seg_addr_table(1) where -update did not ignore the fixed and
next entries which caused address assigned for -update to be very messed up
(Radar bug #2482327).
- Major changes to strip.c to allow nmedit to work on dynamic shared libraries.
Also fixes to nmedit so that the symbol table was in the right order after
symbols were change to statics. Other changes in dyld and ld are also needed
for this change (Radar bug #2420307).
Changes for the 5.7 release (the cctools-330 release):
- Changed the call to netname_look_up() in check_for_ProjectBuilder() in
libtool.c to bootstrap_look_up() when __OPENSTEP__ and
__GONZO_BUNSEN_BEAKER__ is not defined (Radar bug #2473864).
Changes for the 5.7 release (the cctools-329 release):
- Fixed a bug in the command line parsing of the strings command where if you
gave it any argument it would think there were also files listed on the
command line so it would never parse standard input if "strings -4 < file"
was used (Radar bug #2459126).
- Added code in seg_addr_table.c to not assign addresses over the maximum
intel user space address. Radar bug #2418080.
- Removed the core.c file from this directory since the new API to create a
task from a core file was added. Radar bug #2155790.
- Changed libtool to pass -whatsloaded to ld(1). Radar bug #2469803.
- Fixed a bug in seg_addr_table when in update mode an new flat entry with a
zero address in the table (and a non-matching address in the file) is to be
updated and there are existing entries with the same short name. To solve
this a new field current_entry was added to the layout_info struct for
sizes_and_addresses() to use. It is set to the current seg_addr_table entry
before calling ofile_process() which will call sizes_and_addresses(). Then
sizes_and_addresses() can tell if the current entry has a zero address not to
generate the warning message about the ofile not having the correct seg1addr.
Radar bug #2469876.
- Fixed a bug in seg_addr_table in sizes_and_addresses() where it was updating
the layout_info->seg1addr after it printed an error message that the seg1addr
did not match. That error message also did not print the architecture. This
problem then caused a later error message to think that the original file had
the wrong address. Radar bug #2469876.
- Fixed a bug in libtool/ranlib that did not deal with zero length archive
members that had long names and used 4.4BSD extended format #1. The code in
libtool in two places was subtracting the size of the name from the member
size which had already been done by the ofile routines. Radar bug #2460604.
- Changed checksyms(l) to allow debug symbols in libraries and frameworks with
_debug suffixes. Radar bug #2469760.
- Changed strip.c to allow '\r' as well as '\n' in the strip list file. Radar
bug #2458346.
Changes for the 5.7 release (the cctools-327 release):
- Changed checksyms(l) to used "/AppleInternal" going forward and only use
"/Local" when __GONZO_BUNSEN_BEAKER__ is defined for older builds (DP3, PR2,
etc).
Changes for the 5.6 release (the cctools-324 release):
- Fixed a bug in seg_addr_table(l) so that it checks all entries in the table
against all other entries for overlaps.
- Fixed a bug in seg_addr_table(l) so that -checkonly does not check entries
with 0 addresses.
- Fixed a bug in seg_addr_table(l) in its next_flat_seg1addr() not correctly
stepping over the fixed regions.
- Fixed a bug in seg_addr_table(l) in reporting the correct line in checking
for overlap with fixes regions (the have the same "install_name") so the new
routine search_seg_addr_table_for_fixed() was added.
Changes for the 5.6 release (the cctools-323 release):
- Fixed a bug in redo_prebinding(1) that did not correctly mark the module with
the shared library initialization routine as linked in cases where the module
was not directly referenced. This could cause the shared library
initialization routine not to be called. Radar bug #2450931.
- Added passing -arch_errors_fatal from libtool(1) to ld(1).
- Changed the check_install_name(l) tool to be check_dylib(l) to preform
a series of checks on a dynamic library as per B&I's request.
- Changed seg_addr_table(1) to not fall back an try to open the install_name
if a -release option was specified. As this is the way B&I intends to use
the tool. Also added the -checkonly option.
- Removed the ifdef's that avoided calling find_dylib_in_root() as the bug
in there that was missing an fts_close() is fixed.
Changes for the 5.6 release (the cctools-322 release):
- Added ifdef'ed for __SPACE__ and created a macro SYSTEM_LIBRARY in checksyms.c
in preparation for the directory changes. /System/Library changing to
/MacOSX/System.
- Created the check_install_name(l) tool for B&I to check the a dynamic library
is installed in its $(DSTROOT) in its -install_name.
Changes for the 5.6 release (the cctools-321 release):
- Picked up Chris Kane's changes to checksyms(l) to not check for objcunique
sections. Radar bug #2448096.
- Added overlap checking to seg_addr_table(l) and support for fixed regions.
Currently there are bugs in fts(3) so its used is ifdef'ed out with
ifdef NO_BUGS_IN_FTS which means that the DSTROOT file is searched for but
not the SYMROOT file.
Changes for the 5.6 release (the cctools-320 release):
- Fixed a bug in libtool to not passing -arch_multiple when fat files are in the
input files to ld when -arch_only is passed to libtool.
- Added the -dylib_file option to libtool.
- Added the -umbrella option to libtool. Radar bug #2443212.
Changes for the 5.6 release (the cctools-319 release):
- Removed the check for execute bits in a dynamic library in checksyms(l).
- Added the -seg_addr_table option and the LD_SEG_ADDR_TABLE environment
variables as alternate ways to check the address of shared libraries in
checksyms(l).
- Created the seg_addr_table(1) program to layout and update a segment address
table for use when building dynamic libraries.
Changes for the 5.5 release (the cctools-315 release):
- Removed the installing of the bom file as this has not been used since
NeXTstep 2.1.
Changes for the 5.5 release (the cctools-314 release):
- Changed where nmedit gets installed from /usr/local/bin to /usr/bin. Radar
bug #2396595.
Changes for the 5.5 release (the cctools-310 release):
- Added passing the -Sn, -Si, -S, -X flags from libtool to ld.
Changes for the 5.5 release (the cctools-307 release):
- Added two private options for nm. -b name and -iN to print the N_BINCL symbols
from the 'name' include file starting at index N not printing the file#'s.
This was used to track down differences in stabs. Radar bug #2410704.
- Fixed a bug in nmedit(l) (and strip(1)) that did not process the -arch flags
as arch family flags. Radar bug #2405763.
- Added the the STAB types: N_BNSYM, N_ENSYM, N_BINCL, N_EINCL and N_EXCL to
the table in nm for printing. Radar bug #2410704.
- Added support for the CPU_SUBTYPE_POWERPC_7400 in lipo.c. Radar bug #2397523.
Changes for the 5.4 release (the cctools-303 release):
- Changed libtool so that the message that about creating a library with an
empty table of contents is calling warning() not error() as it is a warning
message. Also added "define global symbols" to the end of the message "(no
object file members in the library define global symbols)".
- Changed a message in checksyms(l) to use "Build & Integration" and not
"release control". Radar bug #2377929.
Changes the 5.4 release (the cctools-300 release):
- Fixed a bug in nmedit(1) when using -R and processing more than one
architecture it printed an error stating "more than one symbol" for a symbol
listed in the -R file appeared in the input file. Radar bug #2367598.
- Changed nmedit(l) to strip all arch's when no -arch flags are specified to
match the behavoir of strip(1). Radar bug #2367598.
- Added the "-init <symbol_name>" argument to libtool to be passed through to
ld(1) for the dynamic shared library initialization routine symbol
Changes the 5.4 release (the cctools-296 release):
- Added the -v (verification flag) to checksyms to print out a single line for
each type of error checksyms finds. Also added hacks #ifdef'ed
ALLOW_MACOSX_PR1_PATHS to allow all MacOS X PR1 paths.
Changes the 5.3 release (the cctools-292 release):
- Added some braces to get rid of the warning message from the egcs compiler
"warning: suggest explicit braces to avoid ambiguous `else'". This was done
to cmpdylib.c .
- Changed the return type of main() in redo_prebinding.c, pagestuff.c,
dylib_pcsampler.c, cmpdylib.c, kern_tool.c, segedit.c, strip.c, indr.c,
checksyms.c, libtool.c, nm.c, strings.c, size.c and lipo.c from void to int to
remove a warning from the egcs compiler. Also changed the exit() calls at the
end to return()'s.
Changes the 5.3 release (the cctools-290 release):
- Fixed a bug in nmedit in the code that was added to support the -p flag.
Changes the 5.3 release (the cctools-289 release):
- Added the -p flag to nmedit to change symbols into private externs rather
than static.
Changes the 5.3 release (the cctools-288 release):
- Changed nmedit(l) to change the indirect symbol table entries for global
symbols it makes static. The indirect symbols are changed to
INDIRECT_SYMBOL_LOCAL or INDIRECT_SYMBOL_ABS. This problem showed up in
using nmedit for the work around with the egcs compiler and C++ RTTI common
data in a dynamic shared library.
- Added passing -whyload through libtool to ld.
- Changed some type and casts to make strip.c compile with the MetroWerks
compiler.
- Changed the message printed when the environment variable RC_TRACE_ARCHIVES
is set from: "RC_TRACE_ARCHIVES archive_name" to: "[Logging for Build &
Integration] Used static archive: archive_name". Radar bug #2310273.
Changes for the the 5.3 release (the cctools-285 release):
- Fixed a bug in libtool(1) that was not using NEXT_ROOT when set to expand
-l flags.
- Added printing a line like "RC_TRACE_ARCHIVES archive_name", where
archive_name is a archive being put into the output of libtool(1) -static.
This is done when the environment variable RC_TRACE_ARCHIVES is set.
Radar bug #2303376.
- Removed the #ifdef NeXT from atom.c .
- Fixed a bug in ranlib (aka libtool) where when dealing with multiple symbols
defined in the same members, it trys to only print each table of contents
entry once by marking the symbol by changing the sign on the ran_off field.
There were two missing casts on two comparisons because the ran_off is
unsigned.
- Fixed a bug in strip in strip_symtab() where when it was walking the reference
table looking for symbols not yet listed as saved it would added them to the
changes[] array without testing to see it it already added them to the
changes[] array. This happens because a symbol may be referenced by more the
one module in dynamic shared library. This showed up when the CoreGraphics
framework was stripped with the -s option and undefined symbols were not
expicitedly listed. This caused the code in strip to allocate more new
undefined symbols maps than it filled it. The extra maps were garbage and
caused the module table in the CoreGraphics to be updated wrong which caused
the static linker to generate the malformed object error:
ilocalsym field plus nlocalsym field of module table entry 1 past the
end of the symbol table
Changes for the 5.3 release, MacOS X bring up (the cctools-282 release):
- Added libtool to the Metrowerks source target.
- Changed host_self() and task_self() to mach_host_self() and mach_task_self()
for MacOS X. Also included "stuff/openstep_mach.h" for macros to allow it
to still build on Openstep. Also changed ifdef's __SLICK__ to __OPENSTEP__.
- Ifdef'ed __MACH30__ make.defs for mach_port_t vs mach_port. Also ifdef'ed out
netname_look_up() call and #include <servers/netname.h> for __MACH30__ in
libtool.c (these are not yet in the SDK).
- Changed the Makefile to allow for RC_OS=macos for MacOS X builds.
- Added a few casts in places to get it to compile with the MetroWerks compiler
without -relax_pointers.
- Changed the Makefile to nolonger compile checksyms with -static. When linking
with -static the MetroWerks compiler uses -framework System which is not
leagal with ld(1) and -static.
- Changed arch_flag_processed = FALSE; to arch_flag_processed = NULL; in
translate_input() in indr.c so it would compile with the MetroWerks compiler.
Changes for the 5.2 release (the cctools-281 release):
- Changed redo_prebinding to exit with a error code of 3 if the dependent
libraries are out of date. Radar bug #2259447.
Changes for the 5.2 release (the cctools-280 release):
- Changed libtool to pass the -F and -L flags to objcunique. Radar bug #2257931.
Changes for the 5.2 release (the cctools-276 release):
- The fix in cctools-275 was using the variable "changes" after it was free'ed.
Move the free() past the last use.
Changes for the 5.2 release (the cctools-275 release):
- Made a fix to strip when stripping a dynamic shared library. If a symbol is
to be stripped and it was defined in a module and also referenced in another
module, it was correctly changed to an undefined symbol but incorrecly left
in the table of contents. Radar bug #2239280.
Changes for the 5.2 release (the cctools-274 release):
- Added the -R option to nmedit to provide a list of symbols to turn into
static symbols. If -R is specified and no -s is specified all symbols except
those in the -R file are "saved" and not turned into static symbols.
Radar bug #2235926.
- Added the -R option to strip to provide a list of symbols to strip. Also
changed the list of symbols to allow comment lines starting with '#' and to
trim leading and trailing blanks. Radar bug #2235926.
- Removed uses of CPU_SUBTYPE_586SX in lipo.c and added support for the new
intel subtypes. Radar bug #2231830.
Changes for the 5.2 release (the cctools-271 release):
- Fixed it so libtool -static would not warn about -L and -l flags as these
are valid flags with -static.
Changes for the 5.2 release (the cctools-269 release):
- Backed off checking libtool -dynamic and -static flags as hard errors to
allow builds to work.
Changes for the 5.2 release (the cctools-267 release):
- The -b flag for checksyms(l) is now the default to check for prebinding and
read_only_relocs. Radar bug #2227469.
- Fixed a bug in nm(1) with -o that did not print a ':' after the module name
and before the symbol name. Radar bug #2227852.
- Fixed a bug in libtool that incorrectly put -framework flags in ld flags and
not treat it like a file. This caused -l and -framework to get out of order.
Radar bug #2227863.
- Added the core program to test dyld debug intefaces from a core file. This
program is not built as part of the install target. It requires a
libdyld/debug.c compiled with -DCORE.
- Added code to checksyms to allow blank lines in the dylib table. Radar bug
#2227872.
- Added all the suport needed for the 4.4BSD extended format #1 to nm, size,
strip, indr, inout, redo_prebinding, checksyms and lipo. Radar bug #1670513.
- Added the -L and -T flags to libtools and ranlib to support or truncate long
archive names. Added all the suport needed for the 4.4BSD extended format #1
for long names. The default is now -L (use long names). Radar bug #1670513.
- Make libtool -static treat flags for -dynamic as errors. Also cleaned up
and corrected other flag checking. Radar bug #2227885.
Changes for the 5.1 release (the cctools-261 release):
- Updated lipo's printing of supported POWERPC subtypes. Radar bug #2213821.
- Fixed a bug in link_library_module() in redo_prebinding.c that did not check
if the symbol found that might be multiply defined was in a module that was
not in the UNLINKED state before saying it was multiply defined.
Radar bug #2213249.
Changes for the 5.1 release (the cctools-260 release):
- Added -c to all the install commands in the Makefile.
- Added /Local/Library/Frameworks as a conventional path for frameworks.
- Changed "it's" to "its" in checksyms messages.
Changes for the 5.1 release (the cctools-258 release):
- Changed checksyms to know about /usr/lib/java again. There are two sets of
java dylibs and this path should have not been removed.
Changes for the 5.1 release (the cctools-257 release):
- Changed checksyms to reflect the new Java paths. Previously was /usr/lib/java
now is /System/Library/Frameworks/JavaVM.framework/Libraries .
Changes for the 5.1 release (the cctools-256 release):
- Added /usr/lib/java as a conventional path for libraries in checksyms.
Radar bug #2005914.
Changes for the 5.1 release (the cctools-253 release):
- Made checksyms check prebinding, read-only relocs and objcunique. Currently
enabled only when -b is specified.
- Fixed a bug in checksyms that was not correctly checking for N_FUN stabs.
- Changed the Makefile to only create the needed dst directories.
- Changed checksyms to match the new directory layout for Preimer.
Changes for the 5.1 release (the cctools-249 release):
- Added the ppc relocation to redo_prebinding.
- Fixed a bug in redo_prebinding in update_load_commands() when an executable
had LC_PREBOUND_DYLIB commands for dylibs that it did not have LC_LOAD_DYLIB
commands (this was run into because of a bug in ld with $NEXT_ROOT set). The
fix is to toss all LC_PREBOUND_DYLIB except the ones that have matching
LC_LOAD_DYLIB commands.
- Changed redo_prebinding and libtool to look for objcunique in /usr/bin rather
in /bin.
- Fixed a bug where nm -n on Rhapsody did not sort correctly. The bug was in
the compare function that was returning 1 or 0 for less and greater when it
should have been 1 or -1.
Changes for the 5.1 release (the cctools-247 release):
- Fixed a bug in libtool.c in check_sort_ranlibs() where the unsigned value
on lin 1952 was being checked for < 0. A cast to int was added.
- Added MKDIRS if code to the Makefile to build native on Rhapsody.
- Changed the Makefile to use gnutar instead of tar because it works on Rhapsody
where tar does not.
- Changed the Makefile to install non-local binaries in /usr/bin for RC_OS
teflon and in /bin for RC_OS nextstep (Radar 1673496).
- Changed the code ifdef __TEFLON__ to ifndef __SLICK__ (where __TEFLON__ will
nolonger be defined for Rhapsody builds) so the default builds will be native
Rhapsody builds. The changes were to file.c, libtool.c, lipo.c and segedit.c.
Changes for the 5.0 release (the cctools-245 release):
- Fixed symbolic links from /usr/bin/strip to ../../bin/strip
from /usr/bin/strings to ../../bin/strings
from /usr/bin/size to ../../bin/size
from /usr/bin/nm to ../../bin/nm
(Radar 1672088).
Changes for the 5.0 release (the cctools-243 release):
- Added symbolic links from /usr/bin/strip to $(DSTROOT)/bin/strip
from /usr/bin/strings to $(DSTROOT)/bin/strings
from /usr/bin/size to $(DSTROOT)/bin/size
from /usr/bin/nm to $(DSTROOT)/bin/nm
(Radar 1672088).
Changes for the 5.0 release (the cctools-240 release):
- Changed so that atom only gets installed for OS=nextstep because it used the
encumbered <gnu/a.out.h>.
Changes for the 5.0 release (the cctools-235 release):
- Added an ifdef(ppc) in four places to atom.c to remove some warnings.
- Replace the comments with the OpenBSD comments in nm.c, size.c and strings.c.
- Removed building ar and file when $(RC_OS) is "teflon". These commands will
are in there own directories one level up based on the OpenBSD versions.
Changes for the 5.0 release (the cctools-224 release):
- Changed including <ranlib.h> to <mach-o/ranlib.h> which uses unsigned long
instead of off_t (64 bits on Teflon).
Changes for the 5.0 release (cctools-216 release):
- Changed building checksyms to link staticly. Still does not build in Teflon
as it needs -lc_static which is currently missing.
Changes for the 5.0 release (cctools-215 release):
- Made a hack in the Makefile to not build checksyms for teflon because it needs
-lsys because RC wants it built to run on 3.3 machines.
Changes for the 4.2 and 5.0 releases (cctools-213 and cctools-209.4 release):
- Added ignoring -pg to libtool.
Changes for the 5.0 release (cctools-210 release):
- Changed m98k to ppc.
Changes for the 4.2 and 4.1 patch releases (cctools-207 release):
- Added -noall_load and -all_load to libtool. The compiler driver with the
option -dynamiclib will call libtool with the -noall_load option by default.
This is to avoid pulling all of libcc_dynamic.a in which can't be done in
all cases as it could produce a undefined reference to __DTOR_LIST__.
Changes for the 4.0 release (cctools-202 release):
- Changed libtool to ignore -g[gdb,codeview,stab][number] flags (bug #67597).
Changes for the 4.0 release (cctools-199 release):
- Fixed a problem in redo_prebinding(1) with setting the file's owner and group
introduced in cctools-196 (bug #65646).
Changes for the 4.0 release (cctools-197 release):
- Added -image_base flag to libtool as synonym for -seg1addr (bug #65273).
Changes for the 4.0 release (cctools-196 release):
- Fixed a problem in redo_prebinding(1) which was not setting the file's owner
and group (bug #65137).
Changes for the 4.0 release (cctools-192 release):
- Changed redo_prebinding(1) to only run /bin/objcunique when it redoes the
prebinding. This was causing /bin/objcunique to fail when run on non-Mach-O
files in checking modes (bug #63509).
- Changed redo_prebinding(1) to call chmod(2) to set back the original modes so
setuid and setgid bits get set (bug #63448).
Changes for the 4.0 release (cctools-188 release):
- Fixed a bug in redo_prebinding where it did not correctly swap the fat files
it created. The call to swap_arch_for_output() was done only once and not
once per architecture in the fat file (bug #62267).
- Fixed a bug in lipo -extract where it would not extract anything except the
first architecture in the fat file (bug #62145).
Changes for the 4.0 release (cctools-187 release):
- Added a check to checksyms to make sure dynamic libraries have some execute
bits set (bug #61511).
- Fixed a bug in redo_prebinding in the function update_load_commands() when
the load commands had to be rewritten the pointers to the load commands for
the symtab and dysymtab commands needed to be reset (bug #61735).
- Fixed the spelling of "compatibility" (was "compaiblity") in cmpdylib error
message (bug #61697).
- Fixed a bug in redo_prebinding in the function build_new_symbol_table() where
arch_nmodtab * sizeof(struct dylib_module *) +
should have been:
arch_nmodtab * sizeof(struct dylib_module) +
That is the size of the struct not the size of a pointer (bug #61735).
- Changed calling /bin/objcunique to always pass -prebind in redo_prebinding
and libtool (bug #61735).
Changes for the 4.0 release (cctools-186 release):
- Added passing "-r root_dir" to /bin/objcunique in redo_prebinding.
- Removed the built in table to checksyms and use ~rc/Data/DylibTable by default
(bug #61427).
- Fixed a bug in nm(1) with the undocumented value difference option (-v) which
has to be used with -n and -s. The problem was the test for no selected
symbols needed to be moved to the outer if statement (bug #61341).
Changes for the 4.0 release (cctools-185 release):
- Added running /bin/objcunique if -prebind or LD_PREBIND is set in libtool
(bug #61230).
- Fixed a bug in checksyms as it parsed out "/usr/lib" before
"/usr/lib/NextPrinter" so it thought the name of the libFaxD library was
"NextPrinter/libFaxD" not "libFaxD" as it should have been (bug #61231).
- Added table entries to checksyms for (bug #61231):
{ 0x1f000000, "InterfaceBuilder" },
{ 0x20000000, "AppTest" },
{ 0x21000000, "libRK" },
{ 0x22000000, "libRKC" },
{ 0x23000000, "libcanna" },
- Added the directory "/usr/canna/dylib" for libRK, libRKC, and libcanna
to checksyms (bug #61231).
- Made a hack to checksyms(l) that allows MH_DYLIB's and MH_FVMLIB's to have
stabs as long as it does not have N_FUN symbols (stabs for functions)
(bug #61231).
- Fixed a bug in redo_prebinding(1) which did not deal with indrect symbols
INDIRECT_SYMBOL_LOCAL which were local symbols that were striped (bug #61232).
- Fixed a bug in redo_prebinding(1) which did not return the correct status
if an input file was mallformed and fatal_arch() was called from checkout()
or breakout(). The fix was to copy in the fatal_arch.c code and change
the exit() call in fatal_arch to switch off check_for_non_prebound (-p) and
exit(0) or exit(2) otherwise (bug #61232).
Changes for the 4.0 release (cctools-183 release):
- Added the -dylib_table argument to checksyms.
- Changed checksyms to default to arch all if no -arch's are specified.
- Finished the redo_prebinding command and added it to cctools (bug #60110).
- Added an entry in the checksyms table for EOControl at address 0x1e000000.
Changes for the 4.0 release (cctools-182 release):
- Added an entry in the checksyms table for libFaxD at address 0x1d000000.
Added the directory /usr/lib/NextPrinter/ to be an allowed path.
- Added an entry in the checksyms table for libMallocDebug at address 0.
Changes for the 4.0 release (cctools-181 release):
- Fixed a typo in the Makefile that made pagestuff from lipo.private.o
(bug #59715).
Changes for the 4.0 release (cctools-176 release):
- Fixed a bug in checksyms that did not deal with profile suffixed dylibs.
Also added entries in the table for Message and libkeymap (bug #)
- Fixed a bug in strip in stripping objects with prebound undefined symbols
(bug #58405).
Changes for the 4.0 release (cctools-175 release):
- Changed the Makefile to ld -r builds because private externs were causing
prebinding to fail because of overlap.
Changes for the 4.0 release (cctools-173 release):
- Added passing -arch_multiple to ld from libtool when running for more than
one architecture. Also always pass -arch flag because even if the objects
are thin dylib1.o maybe fat or of a different architecture.
- Updated strip to know about prebound undefined symbols so it would strip
objects with such symbols correctly.
Changes for the 4.0 release (cctools-172 release):
- Fixed a bug in nm that was not selecting prebound undefined symbols as
undefined symbols when -u was used.
Changes for the 4.0 release (cctools-168 release):
- Wrote the program pagestuff to replace pageSymbols.
- Fixed a typo in lipo "architecure" changed to "architecture" (bug #55959).
- Change the version numbers of dynamic library to the form X[.Y[.Z]] to match
how next does versioning of it's projects. This effected libtool(1), ld(1),
otool(1), dyld, libstuff(version_number.c) and man pages for ld and libtool
bug #55627). In here the changes were in libtool.c .
Changes for the 4.0 PR1 release (the cctools-166.9 and cctools-168 releases):
- Checksyms by default should have been non-verbose. The errors messages in
check_dylib() should have only been produced when the -d (detail) flag was
on (bug #55648).
Changes for the 4.0 PR1 release (the cctools-166.8 and cctools-168 releases):
- Updated checksyms to know about NIInterface, EOAccess, EOInterface, NeXTApps
and NIAccess. As well as changed the /LocalLibrary/Frameworks/ path to
/NextLibrary/PrivateFrameworks/ (bug #55414). Also now build this -static.
- Fixed bug #55337 in libtool(1) that parsed -read_only_relocs as
-read-only-relocs.
- Fixed bug #55334 in checksyms(l) which did not check for the Versions
directory correctly because of a copy and paste error. Also all dylib errors
are now fatal.
Changes for the 4.0 release (cctools-167 release):
- Fixed bug #53766 in file(1) which incorrectly reported some fat files
malformed. The bug was in type_buf() where it was looping the load commands
checking for non-stripped and the test to end the loop if looking past the
end of the buffer was in the wrong place. This caused the varaible ifile to
get trashed when the symbol_table command was swapped and then the reads on
that file descriptor failed.
Changes for the 4.0 PR1 release (the cctools-166.1 and cctools-167 releases):
- Fixed a bug in libtool for creating static libraries that did not set the
toc time and mod time based on the time of the file system that the library
was created on. To do this it involved changing create_library() to record
where the ar_date's of the toc archive headers were and rewriting them after
the file was closed when it is first created using the mod time from the file
system (bug #52612).
Changes for the 4.0 release (the cctools-165 release):
- Added passing -read-only-relocs through from libtool to ld.
Changes for the 4.0 release (the cctools-164 release):
- Fixed a bug in nm when -o is used on a dynamic library it did not print the
name of the module on the line.
Changes for the 4.0 release (the cctools-161 release):
- Added an undocumented -v flag to nm(1) to be used with -n and -s to print the
difference of the values of symbols.
- Changed Foundation's address in checksyms to 0x18000000.
Changes for the 4.0 release (the cctools-160 release):
- Update checksyms for dylib checking:
checks names for these forms:
/NextLibrary/Frameworks/AppKit.framework/Versions/A/Appkit
/LocalLibrary/Frameworks/AppKit.framework/Versions/A/Appkit
/lib/libsys_s.A.dylib
checks for correct addresses
checks for compatibility and current version being set
Currently the error condition is commented out but the checking and printing
of the error is done. This is waiting on the corresponding changes in the
app Makefiles.
Changes for the 4.0 release (the cctools-158 release):
- Changed the spelling of dynamicly to dynamically in file(1) (bug #51635).
Changes for the 4.0 release (the cctools-156 release):
- Fixed a bug in indr introduced by fixing the bug in stripping objects compiled
with -dynamic. The indr code did not deal with -dynamic objects either and
had to be updated with what writeout() was doing when it had an object with
a dynamic symbol table command.
Changes for the 4.0 release (the cctools-154 release):
- Fixed a bug in checksyms that did not ignore non-object files. The call to
ofile_process() had process_non_objects FALSE when it should have been TRUE.
- To fixed a bug in stripping .o files compiled dynamic. The test in
strip_object() needed to be changed to based on if there was a dynamic symbol
table command in the object not on if it had MH_DYLDLINK in the mach header.
Then the starting offset of the link edit info need to be based on the lowest
offset if there wasn't a seg link edit command. Also a change was made in
libstuff's writeout.c
- Wrote a first cut at cmpdylib that compares global symbols and version
numbers.
- Added support for stripping defined externals that appear as indirect symbol
table entries in non-lazy pointer sections. Strip uses the values
INDIRECT_SYMBOL_LOCAL and INDIRECT_SYMBOL_ABS to represent the symbols that
are defined that were stripped. The static link editor marks defined external
symbols in the n_desc field with REFERENCED_DYNAMICALLY and the new -r flag
saves these symbols. For executables that use the dynamic linker and are
stripped with no options the default is the same as -u -r.
saves these symbols. For executables that use the dynamic linker
- Picked up kern_tool.
- Added to nm(1) printing of [referenced dynamically] for REFERENCED_DYNAMICALLY
marked external symbols with -m.
Changes for the 4.0 release (the cctools-152 release):
- Fixed a problem with indr for dylibs with symbols listed in the indr list
that are undefined in the library. In this case the undefined symbol does
not get it's name changed to include an '_'.
- Added -arch_only to libtool.
Changes for the 4.0 release (the cctools-150 release):
- Added the -i option to strip(1) to ignore symbols in the -s file that are not
in the objects being stripped.
- Added -arch_indr to indr(l).
- Added passing -F and -framework ld(1) options through for libtool -dynamic.
- Changed how libtool -dynamic handles dependent dynamic shared libraries and
does not use the architectures contained in them to determine which
architectures are part of output.
- Changed checksyms to allow non-stab symbols in MH_DYLDLINK files.
Changes for the 4.0 release (the cctools-149 release):
- Added passing the -filelist list[,dirname] option through to ld (bug #50779).
Changes for the 4.0 release (the cctools-148 release):
- Added -extract_family to lipo to extract all architectures in that family.
It creates a thin or fat file (bug #47499).
- Removed the hack in checksyms to not check dylinker files now that the
dynamic linker can be installed stripped.
Changes for the 4.0 release (the cctools-147 release):
- Fixed a bug strip -x -S when a private extern was present it was not treated
as a global. This worked with -x but not with both -S and -x.
- Fixed a bug in nm that did not print dylibs symbol tables of the a different
byte sex correctly. select_symbols() was causing double swapping if called
more than once.
Changes for the 4.0 release (the cctools-146 release):
- Fixed a problem with the bug fix in strip that did not update relocation
entries correctly if there are paired relocation entries. The bug fix did
not acount for the relocation entry being a scattered relocation entry. This
problem was also in indr.
Changes for the 4.0 release (the cctools-145 release):
- Fixed bugs in size, strings and checksyms when the dylib "flat" argument was
added it was switch.
- Fixed a bug in strip when striping a dylib and a defined symbol is being
stripped and changed into an undefined symbol the undefined symbols were not
sorted by name.
- Fixed a TODO in strip when attempting to strip a private extern symbol in a
dylib that had reference table entries to it. This is treated as an error as
the static link editor relocated to these symbols and they can't be stripped.
- Added support in indr(l) for dylibs.
- Fixed a bug in strip that did not update relocation entries correctly if there
are paired relocation entries.
Changes for the 4.0 release (the cctools-143 release):
- Added support in nm for printing the symbols of dylib modules and a -f (flat)
switch for getting symbols as one Mach-O file.
- Added passing the "-U symbol", "-i_defined:_indr", "-undefined warning" flags
through libtool to ld. Also allowed no files if flags for sections from files
or indirect symbols are present.
Changes for the 4.0 release (the cctools-141 release):
- Added the ld flag -no_arch_warnings for libtool -dynamic which prevents
warnings for files which don't have the correct architecture for the -arch
flag.
- Fixed the spelling of "compatibility" in the compatibility_version for dylibs.
Changes for the 4.0 release (the cctools-140 release):
- Added MH_BUNDLE to file(1).
Changes for the 4.0 release (the cctools-136 release):
- Fixed a bug in strip where with no options on dyld causes it to core dump.
The change was to strip_object() in the case of no options if the input file
has dynamic symbol table and local relocation entries keep those relocation
entries on output.
Changes for the 4.0 release (the cctools-134 release):
- Fixed a bug in strip that showed up when striping a 3.2 object that did not
have the symbols in the 3.3 order. The problem was the relocation entries
did not get updated correctly because the saves[] array was not updated with
the output symbol index after the symbols were ordered.
- Fixed a bug in strip that did not update N_INDR symbols correctly because it
did not account for the string of the indirect symbol indexed by n_value.
This bug was introduced in cctools-127 when strip was changed to handle
objects with the dynamic symbol table information. So it is not in the
cctool-119 strip that is in the 3.2hp release (bug #44817).
Changes for the 4.0 release (the cctools-133 release):
- Fixed Makefile to do the mig stuff for libtool in a read-only SRCROOT.
- Fixed a problem in strip for cross byte sex striping when the dynamic
symbol table info is present. In strip.c the problem was the new symbolic
tables were not swapped to the target byte sex. And in writeout.c in libstuff
the problem was that parts of the headers were used after they were swapped.
Changes for the 4.0 release (the cctools-132 release):
- Made libtool(1) with -dynamic ProjectBuilder aware and send it doing
messages (part of bug #40745).
Changes for the 4.0 release (the cctools-131 release):
- Changed strip to treat non-external private externs as global symbols and
save them with -x or in the -s list file.
- Added "(was a private external)" to nm -m's printing non-external private
externs.
Changes for the 3.3 release (the cctools-129 release):
- Fixed a bug in strip where it was free()'ing the new_* data structures it
created.
Changes for the 3.3 release (the cctools-128 release):
- Fixed a bug strip in strip_object() where it was using object->dyst->nextrel
without checking that object->dyst could be NULL.
Changes for the 3.3 release (the cctools-127 release):
- Major changes to strip.c to allow it to operate on objects with the dynamic
symbol table layouts. strip(1) now operates on MH_DYLIB files.
- nmedit(l) works with objects with the dynamic symbol table layouts but does
not re-group globals turned into statics with local symbols. It also does
not operate on MH_DYLIB files.
- Fixed checksyms -r to not exit non-zero if there are no stabs.
Changes for the 3.3 release (the cctools-126 release):
- Changed strip -s <list> when processing an archive report errors in symbols
not in <list> for each member but rather for the whole archive.
Changes for the 3.3 release (the cctools-125 release):
- Added -force_cpusubtype_ALL for libtool's -dynamic execution of ld(1).
Changes for the 3.3 release (the cctools-124 release):
- Added a temporary hack to checksyms(1) to not check MH_DYLINKER files.
- Added a temporary error message in segedit.c: "current limitation, can't
process files with LC_DYSYMTAB load command".
- Added a temporary error message in libstuff to check_object() in checkout.c
to print the error "current limitation, can't process files with LC_DYSYMTAB
load command" so that strip(1), nmedit(1) and indr(l) for now print a
reasonable message when such a file is used.
- Added -dynamic to libtool to allow building dynamic shared libraries.
Changes for the 3.3 release (the cctools-119 release):
- Picked up the changes for lipo with respect to the sparc target.
Changes for the 3.3 release (the cctools-118 release):
- Fixed a bug that crashed strip when doing a strip -S on a library and a member
had no symbol table command. The bug was in writeout.c in libstuff at line
490 where it indirected thought the pointer to the symbol table command
without checking if it was NULL.
Changes for the 3.3 release (the cctools-116 release):
- Fixed a bug in nmedit that cleared the N_EXT bit from N_INDR symbols which it
shouldn't have.
Changes for the 3.3 release (the cctools-115 release):
- Fixed a bug in lipo(1) that did not preserve set uid, set gid and sticky text
file premision bits (bug #40266).
Changes for the 3.3 release (the cctools-109 release):
- Fixed a bug in strip(1) when multiple files were listed to strip it would
fail with "can't create output file:**** (File exists)" where **** was blank
or it cored dumped. This was because the variable output_file was not
correcly reset to NULL after it was free'ed. The fix was to move the
free(output_file) into the else clause that also did the makestr() call and
also set output_file to NULL after the free(). This is in strip.c in
strip_file() at the end of the routine.
Changes for the 3.3 release (the cctools-102 release):
- Integrated in the hppa support.
different misc/lipo.c (integrated for cctools-102)
Using cctoolshppa-37. Has hppa cpu stuff in it.
different misc/nm.c (integrated for cctools-102)
Using cctoolshppa-37. Only comment typo change.
Changes for the 3.3 release (the cctools-100 release):
- First major round of changes for the new shlib stuff.
1) In nm support for .private_extern directive with -m to print
"private external".
- Fixed a bug where strip with the -S and -x ignored -x (bug #36206)
- Added the "-o output" option to strip (bug #36252)
Changes for the 3.1 release (the cctools-22 release):
- Changed file to print out architecture for Mach-O file that were not fat and
changed lipo -i to print architectures on one line (bug #31882).
- Added printing for these (bug #32553):
{ "any", CPU_TYPE_ANY, CPU_SUBTYPE_MULTIPLE },
{ "little", CPU_TYPE_ANY, CPU_SUBTYPE_LITTLE_ENDIAN },
{ "big", CPU_TYPE_ANY, CPU_SUBTYPE_BIG_ENDIAN },
Changes for the 3.1 release (the cctools-21 release):
- Changed in lipo when "-arch i386 a.out" was used by the compiler and a.out
turns out to be an i486 subtype lipo treated this as a hard error. A safe
fix to this was made to remove the cpusubtype compare in check_arch() which
matches what it does for archives.
Changes for the 3.1 release (the cctools-20 release):
- Put back -O in the Makefile (previously was removed because of m88k builds -O
could't be used on lipo.c because of a bug, this is now a non-issue).
- Added cross bytesex support for segedit(1) (still no fat support).
Changes for the 3.1 release (the cctools-17 release):
- Change made to strip to only generate a warning message when it encounters a
non-object file an not stop processing other files (bug #23144).
Changes for the 3.1 release (the cctools-16 release):
- Fixed a bug in libtool when stat_buf.st_gid is a negitive value it was casted
to an unsigned int and sprintf()'ed with %o into a field that was expected to
have only enough characters for a short (not a sign extended short). The fix
was to cast to a unsigned short (bug #30995).
Changes for the 3.1 release (the cctools-14 release):
- Removed the archive checking of subtype in check_archive() for lipo.
Changes for the 3.1 release (the cctools-13 release):
- Added the m98k (PowerPC) architecture (lipo only change).
Changes for the 3.1 release (the cctools-10 release):
- Changed the way the date is set on the output file when creating the output
file with -c to only set the it to the oldest input date when an input file
has an archive in it.
- Changed the handling of the cpusubtypes to support this design:
The design allows each architecture family (m68k, m88k, i386) to have a
cpusubtype that will run on all implementations of that architecture and
have cpusubtypes that will run only on specific implementations of an
architecture. The design also gives the programmer the option to force the
cpusubtype indicating all implementations (at build time with a flag) when
using instructions that are implementation specific leaving it up to the
program to runtime select the correct code to execute.
The library creation tools (libtool and ranlib) operation in this design:
When a library creation tool creates libraries objects of the same
cputype and differing cpusubtypes it will create at most one library for
each cputype and not a separate library in a fat file for each of the unique
cputype and cpusubtype pairs. The resulting cpusubtype for each library
will be the _ALL cpusubtype for that cputype. The goal is the library
implementor should be strongly encouraged to create one library that
chooses optimum code to run at run time rather than at link time.
Changes for the 3.1 release (the cctools-9 release):
- Added to lipo when the -info or -detailed_info is specified printing of
architecture type for non-fat files (bug #29465).
Changes for the 3.1 release (the cctools-8 release):
- Changed the default for strip when no -arch flag is present to strip all
archs (demanded by the NRW group).
- Removed ebadexec as the OS group has taken it over.
- Changed the checking in add_member() to only look at the cputype and not at
both the cputype and cpusubtype (this will change as the correct handling of
the cpusubtype is implemented).
Changes for the 3.1 release (the cctools-6 release):
- Moved segedit(1) from misc3.0 directory to here (misc) and added error
recognition for fat files and cross bytesex Mach-O files (and cleaned up
-Wall warning messages).
- Moved ebadexec(1) from misc3.0 directory to here (misc) and added error
recognition for fat files (and cleaned up -Wall warning messages).
- Moved atom(1) from misc3.0 directory to here (misc) and cleaned up -Wall
warning messages.
- Moved ar(1) from misc3.0 directory to here (misc) and added error recognition
for fat files (and cleaned up -Wall warning messages).
- Added fat and cross bytesex support for file(1).
- Fixed a bug in strip(l) that did not round the size of the string table to
a multiple of 4 bytes. This caused the object file to have odd sizes in some
cases and produce trashed archives.
Changes for the 3.1 release (the cctools-5 release):
- Created a new version of indr(l), strip(1) and nmedit(l) that handles fat
files and cross byte sex. The new strip(1) handles libraries and does not
treat already stripped objects as errors.
- Fixed a bug in libtool/ranlib that caused it to create the library even when
there were errors. This is no longer done. If there is an error then the
library is not created (or the table of contents is not recreated).
- Fixed a bug that caused problems in ranlib when an archive with a that
contained both fat objects with multiple archives and non-object files was
given as input. The "correct" thing to do in this case in not known (which
architecture archive the non-object file is to reside in in the output). So
this case is flagged as an error.
Changes for the 3.1 release (the cctools-4 release):
- Changed the arch name of ix86 to i386 in lipo.c
- Fixed a bug in libtool that caused it to crash when sprintf() was used and
placed it's trailing '\0' past the end of the buffer.
Changes for the 3.1 release (the cctools-3 release):
- Changed CPU_TYPE_I80x86 to CPU_TYPE_I386 in lipo.c
Changes for the 3.0 release (the -56 compiler release):
- Changed print_argstrings() in otool.c to handle a core files that have more
than just one '\0' after the long 0 on the top of the stack (bug #19645).
Changes for the 3.0 release (the -52 compiler release):
- Added LC_PREPAGE. Just the string "LC_PREPAGE" and the cmdsize printed in
otool.
- Fixed a bug where libtool was not setting the S_IFREG bits in the toc_mode.
Changes for the 3.0 release (the -53 compiler release):
- Changed STACK_ADDR to USRSTACK from <bsd/m68k/vmparam.h> .
Changes for the 3.0 release (the -51 compiler release):
- Changed otool to print the m88k thread flavors for te new thread_status.h.
- Changed otool when looping through archives so not to complain when getting
a short read on an archive header when an archive was passed to 4 bytes and
the extra 2 bytes of padding was read as an archive header.
Changes for the 3.0 release (the -50 compiler release):
- Changed the instructions f[sd]sqrtx for operands FPm,FPn and FPm to f[sd]sqrt
(without the trailing 'x'). This was just wrong (but the moto opcode is
inconsistant with all others in this case).
- Added an nm(1) that knows about fat files.
Changes for the 3.0 release (the -49 compiler release):
- Changed where the 3.1 tools get installed, they now get installed in
/usr/local/bin3.1 with there usual names (no 3.1 suffix).
- Fixed the printing of operands for the i860 to use external relocation
entries correctly.
- Added the LC_FVMFILE to otool.
- Changed the Makefile to meet the RC api.
- Set this directory up for the 3.1 release (fat tools and 88k and ix86 tools).