TODO: Add flags for: -debug -no_dos_header Add support for: - Remove empty __IMPORT segment Changes for the 5.29 release (the cctools-800 release): - Added support for rewriting UUID of generated file with command line flag -u. Radar bug #8946107. Changes for the 5.28 release (the cctools-795 release): - Added added more subsystem types to mtoc(1). Radar bug #8492168. Changes for the 5.28 release (the cctools-792 release): - Picked up changes to generate correct x86_64 relocations and to correctly calculate SizeOfImage in mtoc.c. Radar bug #8211617. Changes for the 5.28 release (the cctools-787 release): - Changed mtoc(1) to zero pad PE/COFF sections to support XIP PE/COFF images. Radar bug #8199851. - Changed mtoc(1) support building XIP PEI/COFF images in all cases. Radar bug #8197128. Changes for the 5.28 release (the cctools-777 release): - Changed round() to rnd() and stuff/round.h to stuff/rnd.h in all files and removed -fno-builtin-round from the Makefile. Radar bug #7475139. - Changed the Makefile to use -Os for OFLAG. Radar bug #7475093. Changes for the 5.27 release (the cctools-765 release): - Moved the install location of motc(1) back to /usr/local/efi/bin . Radar bug #7117645. Changes for the 5.27 release (the cctools-762 release): - Changed the Makefile to set CC when when SDKROOT is set. Radar bug #7078805. Changes for the 5.27 release (the cctools-761 release): - Moved the install location of motc(1) into /usr/bin . Radar bug #7038602. - Fixed a problem in mtoc(1) with the -p option that caused it to crash. The First problem was process_64bit_arch() needed to account for the debug section when the -d option was used just like process_32bit_arch() did. Second problem was if there happen to be no relocation entries then both routines needed to set the debug_addr when reloc_size was zero and not use reloc_scnhdr as it may be NULL. Radar bug #6904701. Changes for the 5.27 release (the cctools-759 release): - Changed the Makefile to add -isysroot $(SDKROOT) to compile and link lines when SDKROOT is set. Radar bug #6965029. Changes for the 5.27 release (the cctools-754 release): - Changed mtoc(1) to not create a .reloc section if it would have a zero size. Also changed mtoc(1) to include the SizeOfHeaders in SizeOfImage. Radar bug #6795386 Changes for the 5.27 release (the cctools-752 release): - Ported to build with clang. - Changed Makefile to work around bugs 6761248 and 6756912. - Added a cast to int for a switch statement in process_32bit_arch() in mtoc.c - Commented out the if statement with an empty body with a TODO comment in create_base_reloc() in mtoc.c . Changes for the 4.26 release (the cctools-717 release): - Added the -d filename option to mtoc(1) which adds a debug directory entry in the .debug section with the file name. Radar bug #6211642. Changes for the 4.26 release (the cctools-716 release): - Fixed bugs in mtoc(1) in create_32bit_symbol_table() and create_64bit_symbol_table() that was not ignoring stabs with the N_STAB bits set when checking for undefined symbols. Radar bug #6194828. Changes for the 4.26 release (the cctools-715 release): - Changed mtoc(1) to remove the HACK_ARM_F_MAGIC_TO_BE_I386 define and code so now the f_magic field for arm gets set to IMAGE_FILE_MACHINE_ARM (0x01c0). Radar bug #6163015. Changes for the 4.26 release (the cctools-705 release): - Ported mtoc.c to run on 64-bit hosts by changing unsigned long to uint32_t and SWAP_LONG to SWAP_INT. Radar bug #6022298. Changes for the 5.26 release (the cctools-701 release): - Added the -align option to mtoc(1) to set the file and segment alignment. Changes for the 5.26 release (the cctools-699 release): - Fixed a problem with the SizeOfImage field in the aouthdr not including the "zerofill" part of the sections. This is also include in the bsize which causes it to be included in the SizeOfImage. Also removed the check to require the section alignment to be greater or equal to the file alignment. Changes for the 5.25 release (the cctools-688 release): - Fixed a problem in mtoc(1) selection of the address for the .reloc PECOFF section. To work around the unified linker incorrectly producing a LINKEDIT segment the code in process_32bit_arch() and process_64bit_arch() needed to ingore this segment when selecting the address. Changes for the 5.25 release (the cctools-687 release): - Added 64-bit checking for undefined symbols. Changes for the 5.25 release (the cctools-686 release): - Added the "-section_alignment <hex_value>" option. This should be passed the same value as passed to the linker in the -segalign value when creating the Mach-O file. This value is used to layout the added .reloc section and set into the PECOFF aouthdr. - Added a check to make sure the headers are not mapped on top of its sections. If it does you get an error message saying the Mach-O needed to be relinked and the -seg1addr value to use. - Added alternate names for the subsystem arguments. - Added checking for undefined symbols (32-bit only). Changes for the 5.25 release (the cctools-685 release): - Updated mtoc(1) to deal with MH_EXECUTE file types and MH_PIE flag. Changes for the 5.25 release (the cctools-681 release): - Added the new mtoc(1) program to the cctools project. Radar bug #5536661. - The -e entry_point is a temporary hack until 64-bit files are produced with MH_PRELOAD and have an entry point in the thread command. - The makerelocs(1) program in here is not installed as it would overwrite the existing one in the efitools project. But this one could replace it but the new mtoc(1) program includes that and makes it obsolete. But is useful to test with.