[odcctools-changes] [155] trunk

source_changes at macosforge.org source_changes at macosforge.org
Sat Jun 27 22:02:47 PDT 2009


Revision: 155
          http://trac.macosforge.org/projects/odcctools/changeset/155
Author:   peter at pogma.com
Date:     2009-06-27 22:02:46 -0700 (Sat, 27 Jun 2009)
Log Message:
-----------
patches/force_load.diff: Add -force_load flag to ld64.
patches/include/stuff/bytesex-floatstate.diff: Warn less on darwin.
ld64-85.2.2.tar.gz: Update this.
extract.sh: New ld64, chmod the non-writable files.

Modified Paths:
--------------
    trunk/ChangeLog.odcctools
    trunk/extract.sh
    trunk/patches/include/stuff/bytesex-floatstate.diff

Added Paths:
-----------
    trunk/ld64-85.2.2.tar.gz
    trunk/patches/force_load.diff

Removed Paths:
-------------
    trunk/ld64-85.2.1.tar.gz

Modified: trunk/ChangeLog.odcctools
===================================================================
--- trunk/ChangeLog.odcctools	2009-06-17 04:06:44 UTC (rev 154)
+++ trunk/ChangeLog.odcctools	2009-06-28 05:02:46 UTC (rev 155)
@@ -1,3 +1,10 @@
+2009-06-27  Peter O'Gorman  <peter at pogma.com>
+
+	* patches/force_load.diff: Add -force_load flag to ld64.
+	* patches/include/stuff/bytesex-floatstate.diff: Warn less on darwin.
+	* ld64-85.2.2.tar.gz: Update this.
+	* extract.sh: New ld64, chmod the non-writable files.
+
 2009-06-16  Peter O'Gorman  <peter at pogma.com>
 
 	* files/otool/Makefile.in: Fix make warning.

Modified: trunk/extract.sh
===================================================================
--- trunk/extract.sh	2009-06-17 04:06:44 UTC (rev 154)
+++ trunk/extract.sh	2009-06-28 05:02:46 UTC (rev 155)
@@ -7,7 +7,7 @@
 CCTOOLSDISTFILE=${CCTOOLSNAME}-${CCTOOLSVERS}.tar.gz
 
 LD64NAME=ld64
-LD64VERS=85.2.1
+LD64VERS=85.2.2
 LD64DISTFILE=${LD64NAME}-${LD64VERS}.tar.gz
 
 DISTDIR=odcctools
@@ -72,7 +72,7 @@
 misc/libtool-ldpath.diff misc/libtool-pb.diff misc/ranlibname.diff \
 misc/redo_prebinding.nogetattrlist.diff \
 misc/redo_prebinding.nomalloc.diff misc/libtool_lipo_transform.diff \
-otool/nolibmstub.diff otool/noobjc.diff"
+otool/nolibmstub.diff otool/noobjc.diff force_load.diff"
 
 ADDEDFILESDIR=${TOPSRCDIR}/files
 
@@ -85,6 +85,7 @@
 tar ${TARSTRIP}=1 -zxf ${CCTOOLSDISTFILE} -C ${DISTDIR}
 mkdir -p ${DISTDIR}/ld64
 tar ${TARSTRIP}=1 -zxf ${LD64DISTFILE} -C ${DISTDIR}/ld64
+find ${DISTDIR}/ld64 ! -perm +200 -exec chmod u+w {} \;
 find ${DISTDIR}/ld64/doc/ -type f -exec cp "{}" ${DISTDIR}/man \;
 
 # Clean the source a bit

Deleted: trunk/ld64-85.2.1.tar.gz
===================================================================
(Binary files differ)

Added: trunk/ld64-85.2.2.tar.gz
===================================================================
(Binary files differ)


Property changes on: trunk/ld64-85.2.2.tar.gz
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: trunk/patches/force_load.diff
===================================================================
--- trunk/patches/force_load.diff	                        (rev 0)
+++ trunk/patches/force_load.diff	2009-06-28 05:02:46 UTC (rev 155)
@@ -0,0 +1,184 @@
+--- ./misc/libtool.c.orig	2009-06-14 11:26:04.000000000 -0500
++++ ./misc/libtool.c	2009-06-14 11:39:10.000000000 -0500
+@@ -699,6 +699,7 @@
+ 		        strcmp(argv[i], "-Y") == 0 ||
+ 		        strcmp(argv[i], "-dylib_file") == 0 ||
+ 		        strcmp(argv[i], "-final_output") == 0 ||
++		        strcmp(argv[i], "-force_load") == 0 ||
+ 		        strcmp(argv[i], "-headerpad") == 0 ||
+ 		        strcmp(argv[i], "-weak_reference_mismatches") == 0 ||
+ 		        strcmp(argv[i], "-u") == 0 ||
+--- ./man/libtool.1.orig	2009-06-14 11:39:35.000000000 -0500
++++ ./man/libtool.1	2009-06-14 11:39:43.000000000 -0500
+@@ -288,6 +288,7 @@
+ .B \-dylib_file,
+ .B \-run_init_lazily,
+ .B \-final_output,
++.B \-force_load,
+ .B \-macosx_version_min,
+ .B \-multiply_defined,
+ .B \-multiply_defined_unused,
+--- ld64/src/ArchiveReader.hpp.orig	2009-06-14 11:37:02.000000000 -0500
++++ ld64/src/ArchiveReader.hpp	2009-06-14 11:38:17.000000000 -0500
+@@ -54,7 +54,8 @@
+ public:
+ 	static bool										validFile(const uint8_t* fileContent, uint64_t fileLength);
+ 													Reader(const uint8_t fileContent[], uint64_t fileLength,
+-															const char* path, time_t modTime, 
++															const char* path, time_t modTime,
++														    const DynamicLibraryOptions& ArchiveOptions,
+ 															const ObjectFile::ReaderOptions& options, uint32_t ordinalBase);
+ 	virtual											~Reader() {}
+ 
+@@ -121,6 +122,7 @@
+ 	std::set<const class Entry*>					fInstantiatedEntries;
+ 	std::set<const class Entry*>					fPossibleEntries;
+ 	NameToEntryMap									fHashTable;
++	bool											fForceLoad;
+ 
+ 	static std::vector<class ObjectFile::Atom*>		fgEmptyList;
+ };
+@@ -257,10 +259,11 @@
+ }
+ 
+ template <typename A>
+-Reader<A>::Reader(const uint8_t fileContent[], uint64_t fileLength, const char* path, time_t modTime, 
++Reader<A>::Reader(const uint8_t fileContent[], uint64_t fileLength, const char* path, time_t modTime,
++				    const DynamicLibraryOptions& archiveOptions,
+ 					const ObjectFile::ReaderOptions& options, uint32_t ordinalBase)
+  : fPath(NULL), fModTime(modTime), fOptions(options), fOrdinalBase(ordinalBase), fFileContent(NULL), 
+-	fTableOfContents(NULL), fTableOfContentCount(0), fStringPool(NULL)
++	fTableOfContents(NULL), fTableOfContentCount(0), fStringPool(NULL), fForceLoad(archiveOptions.fForceLoad)
+ {
+ 	fPath = strdup(path);
+ 	fFileContent = fileContent;
+@@ -273,7 +276,7 @@
+ 	if ( options.fLogAllFiles )
+ 		printf("%s\n", path);
+ 
+-	if ( !options.fFullyLoadArchives ) {
++	if ( !options.fFullyLoadArchives && !fForceLoad) {
+ 		const Entry* const firstMember = (Entry*)&fFileContent[8];
+ 		if ( (strcmp(firstMember->getName(), SYMDEF_SORTED) == 0) || (strcmp(firstMember->getName(), SYMDEF) == 0) ) {
+ 			const uint8_t* contents = firstMember->getContent();
+@@ -324,7 +327,7 @@
+ template <typename A>
+ std::vector<class ObjectFile::Atom*>&	Reader<A>::getAtoms()
+ {
+-	if ( fOptions.fFullyLoadArchives ) {
++	if ( fOptions.fFullyLoadArchives || fForceLoad) {
+ 		// build vector of all atoms from all .o files in this archive
+ 		const Entry* const start = (Entry*)&fFileContent[8];
+ 		const Entry* const end = (Entry*)&fFileContent[fFileLength];
+@@ -332,8 +335,12 @@
+ 			const char* memberName = p->getName();
+ 			if ( (p==start) && ((strcmp(memberName, SYMDEF_SORTED) == 0) || (strcmp(memberName, SYMDEF) == 0)) )
+ 				continue;
+-			if ( fOptions.fWhyLoad )
+-				printf("-all_load forced load of %s(%s)\n", this->getPath(), memberName);
++			if ( fOptions.fWhyLoad ) {
++				if (! fForceLoad)
++					printf("-all_load forced load of %s(%s)\n", this->getPath(), memberName);
++				else
++					printf("-force_load forced load of %s(%s)\n", this->getPath(), memberName);
++			}
+ 			ObjectFile::Reader* r = this->makeObjectReaderForMember(p);
+ 			std::vector<class ObjectFile::Atom*>&	atoms = r->getAtoms();
+ 			fAllAtoms.insert(fAllAtoms.end(), atoms.begin(), atoms.end());
+@@ -420,7 +427,7 @@
+ template <typename A>
+ std::vector<class ObjectFile::Atom*>* Reader<A>::getJustInTimeAtomsFor(const char* name)
+ {
+-	if ( fOptions.fFullyLoadArchives ) {
++	if ( fOptions.fFullyLoadArchives || fForceLoad ) {
+ 		return NULL;
+ 	}
+ 	else {
+--- ld64/src/Options.cpp.orig	2009-06-14 11:37:02.000000000 -0500
++++ ld64/src/Options.cpp	2009-06-14 11:38:17.000000000 -0500
+@@ -1548,6 +1548,9 @@
+ 			// if dylib is specified again but weak, record that it should be weak
+ 			if ( info.options.fWeakImport )
+ 				fit->options.fWeakImport = true;
++			// Similarly for -force_load
++			if ( info.options.fForceLoad )
++				fit->options.fForceLoad = true;			
+ 			return;
+ 		}
+ 	}
+@@ -1676,6 +1679,12 @@
+ 			else if ( strcmp(arg, "-ObjC") == 0 ) {
+ 				fReaderOptions.fLoadAllObjcObjectsFromArchives = true;
+ 			}
++			// Similar to -all_load, but for the following archive only.
++			else if ( strcmp(arg, "-force_load") == 0 ) {
++				FileInfo info = findFile(argv[++i]);
++				info.options.fForceLoad = true;
++				addLibrary(info);
++			}
+ 			// Library versioning.
+ 			else if ( (strcmp(arg, "-dylib_compatibility_version") == 0)
+ 					  || (strcmp(arg, "-compatibility_version") == 0)) {
+--- ld64/src/ld.cpp.orig	2009-06-14 11:37:02.000000000 -0500
++++ ld64/src/ld.cpp	2009-06-14 11:38:17.000000000 -0500
+@@ -2917,7 +2917,7 @@
+ 			else if ( mach_o::dylib::Reader<ppc>::validFile(p, info.options.fBundleLoader) )
+ 				return this->addDylib(new mach_o::dylib::Reader<ppc>::Reader(p, len, info.path, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			else if ( archive::Reader<ppc>::validFile(p, len) )
+-				return this->addArchive(new archive::Reader<ppc>::Reader(p, len, info.path, info.modTime, fOptions.readerOptions(), fNextInputOrdinal), info, len);
++				return this->addArchive(new archive::Reader<ppc>::Reader(p, len, info.path, info.modTime, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			break;
+ 		case CPU_TYPE_POWERPC64:
+ 			if ( mach_o::relocatable::Reader<ppc64>::validFile(p) )
+@@ -2925,7 +2925,7 @@
+ 			else if ( mach_o::dylib::Reader<ppc64>::validFile(p, info.options.fBundleLoader) )
+ 				return this->addDylib(new mach_o::dylib::Reader<ppc64>::Reader(p, len, info.path, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			else if ( archive::Reader<ppc64>::validFile(p, len) )
+-				return this->addArchive(new archive::Reader<ppc64>::Reader(p, len, info.path, info.modTime, fOptions.readerOptions(), fNextInputOrdinal), info, len);
++				return this->addArchive(new archive::Reader<ppc64>::Reader(p, len, info.path, info.modTime, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			break;
+ 		case CPU_TYPE_I386:
+ 			if ( mach_o::relocatable::Reader<x86>::validFile(p) )
+@@ -2933,7 +2933,7 @@
+ 			else if ( mach_o::dylib::Reader<x86>::validFile(p, info.options.fBundleLoader) )
+ 				return this->addDylib(new mach_o::dylib::Reader<x86>::Reader(p, len, info.path, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			else if ( archive::Reader<x86>::validFile(p, len) )
+-				return this->addArchive(new archive::Reader<x86>::Reader(p, len, info.path, info.modTime, fOptions.readerOptions(), fNextInputOrdinal), info, len);
++				return this->addArchive(new archive::Reader<x86>::Reader(p, len, info.path, info.modTime, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			break;
+ 		case CPU_TYPE_X86_64:
+ 			if ( mach_o::relocatable::Reader<x86_64>::validFile(p) )
+@@ -2941,14 +2941,14 @@
+ 			else if ( mach_o::dylib::Reader<x86_64>::validFile(p, info.options.fBundleLoader) )
+ 				return this->addDylib(new mach_o::dylib::Reader<x86_64>::Reader(p, len, info.path, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			else if ( archive::Reader<x86_64>::validFile(p, len) )
+-				return this->addArchive(new archive::Reader<x86_64>::Reader(p, len, info.path, info.modTime, fOptions.readerOptions(), fNextInputOrdinal), info, len);
++				return this->addArchive(new archive::Reader<x86_64>::Reader(p, len, info.path,  info.modTime, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 		case CPU_TYPE_ARM:
+ 			if ( mach_o::relocatable::Reader<arm>::validFile(p) )
+ 				return this->addObject(new mach_o::relocatable::Reader<arm>::Reader(p, info.path, info.modTime, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			else if ( mach_o::dylib::Reader<arm>::validFile(p, info.options.fBundleLoader) )
+ 				return this->addDylib(new mach_o::dylib::Reader<arm>::Reader(p, len, info.path, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			else if ( archive::Reader<arm>::validFile(p, len) )
+-				return this->addArchive(new archive::Reader<arm>::Reader(p, len, info.path, info.modTime, fOptions.readerOptions(), fNextInputOrdinal), info, len);
++				return this->addArchive(new archive::Reader<arm>::Reader(p, len, info.path, info.modTime, info.options, fOptions.readerOptions(), fNextInputOrdinal), info, len);
+ 			break;
+ 			break;
+ 	}
+--- ld64/src/Options.h.orig	2009-06-14 11:37:02.000000000 -0500
++++ ld64/src/Options.h	2009-06-14 11:38:17.000000000 -0500
+@@ -43,12 +43,13 @@
+ class DynamicLibraryOptions
+ {
+ public:
+-	DynamicLibraryOptions() : fWeakImport(false), fReExport(false), fBundleLoader(false), fLazyLoad(false) {}
++	DynamicLibraryOptions() : fWeakImport(false), fReExport(false), fBundleLoader(false), fLazyLoad(false), fForceLoad(false) {}
+ 
+ 	bool		fWeakImport;
+ 	bool		fReExport;
+ 	bool		fBundleLoader;
+ 	bool		fLazyLoad;
++	bool		fForceLoad;
+ };
+ 
+ //

Modified: trunk/patches/include/stuff/bytesex-floatstate.diff
===================================================================
--- trunk/patches/include/stuff/bytesex-floatstate.diff	2009-06-17 04:06:44 UTC (rev 154)
+++ trunk/patches/include/stuff/bytesex-floatstate.diff	2009-06-28 05:02:46 UTC (rev 155)
@@ -1,11 +1,15 @@
 --- bytesex.h.orig	2006-09-17 13:54:31.000000000 -0700
 +++ bytesex.h	2006-09-17 13:55:07.000000000 -0700
-@@ -227,7 +227,7 @@
+@@ -227,7 +227,11 @@
  /* current i386 thread states */
  #if i386_THREAD_STATE == 1
  extern void swap_i386_float_state(
 -    struct __darwin_i386_float_state *fpu,
++#ifdef _STRUCT_X86_FLOAT_STATE32
++    _STRUCT_X86_FLOAT_STATE32 *fpu,
++#else
 +    struct i386_float_state *fpu,
++#endif
      enum byte_sex target_byte_sex);
  
  extern void swap_i386_exception_state(
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/odcctools-changes/attachments/20090627/9a4523f3/attachment-0001.html>


More information about the odcctools-changes mailing list