-diff -rub ./include/architecture/i386/fpu.h ./include/architecture/i386/fpu.h
---- ./include/architecture/i386/fpu.h Thu May 6 19:24:30 1999
-+++ ./include/architecture/i386/fpu.h Mon Aug 25 12:56:22 2003
-@@ -121,7 +121,7 @@
- :3;
- } fp_control_t;
-
--#import <architecture/i386/sel.h>
-+#include <architecture/i386/sel.h>
-
- /*
- * Floating point 'environment'
diff -rub ./include/architecture/i386/frame.h ./include/architecture/i386/frame.h
--- ./include/architecture/i386/frame.h Thu May 6 19:24:33 1999
+++ ./include/architecture/i386/frame.h Mon Aug 25 12:56:22 2003
shlib_clean:
-rm -f \
---- ld/fake-mach.c Sat Sep 6 21:32:56 2003
-+++ ld/fake-mach.c Tue Aug 26 11:40:24 2003
-@@ -0,0 +1,160 @@
-+/** fake-mach.c - A half baked implementation of mach kernel functions using the POSIX UNIX API.
-+*
-+* This was used to port Apple's Darwin linker (ld) to Linux. This allows Mac OS X applications to
-+* be cross complied on Linux. */
-+
-+#include <stdlib.h>
-+#include <assert.h>
-+#include <sys/types.h>
-+#include <sys/uio.h>
-+#include <unistd.h>
-+
-+#include <errno.h>
-+
-+#include <sys/mman.h>
-+
-+// Mach include files for typedefs, return values, etc
-+//~ #include <mach/mach.h>
-+#include <mach/kern_return.h>
-+#include <mach/vm_types.h>
-+#include <mach/mach_types.h>
-+#include <mach/message.h>
-+#include <servers/bootstrap_defs.h>
-+
-+/** The port for the current task. Ignored in this implementation. */
-+mach_port_t mach_task_self_ = 0;
-+
-+/** The bootstrap port. Ignored in this implementation. */
-+mach_port_t bootstrap_port = 0;
-+
-+#include <mach/ppc/ndr_def.h>
-+
-+/** Maps the file descriptor into memory. Free the memory using vm_deallocate. Ignores findspace and offset. */
-+kern_return_t map_fd( int fd, vm_offset_t offset, vm_offset_t *va, boolean_t findspace, vm_size_t size)
-+{
-+ void* space = NULL;
-+
-+ assert( fd > 0 );
-+ assert( offset == 0 );
-+ //~ assert( *va == 0 );
-+ assert( findspace == TRUE );
-+
-+ //~ // Allocate memory
-+ //~ space = malloc( size );
-+ //~ assert( space != NULL );
-+
-+ //~ // Read file into space
-+ //~ bytes = read( fd, space, size );
-+ //~ assert( bytes == size );
-+
-+ space = mmap( (void*) offset, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
-+ // No permission: try to make it read only
-+ if ( space == (void*) -1 && errno == EACCES )
-+ {
-+ space = mmap( (void*) offset, size, PROT_READ, MAP_SHARED, fd, 0 );
-+ }
-+ assert( space != NULL && space != (void*) -1 );
-+
-+ // Copy back the pointer
-+ *va = (vm_offset_t) space;
-+
-+ // Return success
-+ return KERN_SUCCESS;
-+}
-+
-+/** Returns a string appropriate to the error argument given. */
-+char* mach_error_string( int error_value )
-+{
-+ char errorString[] = "Some fake mach error string.";
-+
-+ return errorString;
-+}
-+
-+/** Returns the mach port for the current host. We fake it by returning zero. */
-+mach_port_t mach_host_self( void )
-+{
-+ return 0;
-+}
-+
-+/** Returns the mach port for the current task. We fake it by returning zero. */
-+//~ mach_port_t mach_task_self( void )
-+//~ {
-+ //~ return 0;
-+//~ }
-+
-+/**The function vm_allocate allocates a region of virtual memory, placing it in the specified task's address space. Anywhere must be true, as the memory will be allocated anywhere. */
-+extern kern_return_t vm_allocate( mach_port_t target_task, vm_address_t *address, vm_size_t size, boolean_t anywhere )
-+{
-+ assert( anywhere == TRUE );
-+
-+ // Anonymous memory map
-+ *address = (vm_address_t) mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANON, 0, 0 );
-+ //~ *address = (vm_address_t) malloc( size );
-+ assert( address != (vm_address_t) NULL );
-+
-+ return KERN_SUCCESS;
-+}
-+
-+/**vm_deallocate relinquishes access to a region of a task's address space, causing further access to that memory to fail. This memory must have been allocated with vm_allocate. size is ignored. */
-+kern_return_t vm_deallocate( mach_port_t target_task, vm_address_t address, vm_size_t size )
-+{
-+ int ret = 0;
-+
-+ assert( address != (vm_address_t) NULL );
-+
-+ // Free the memory
-+ ret = munmap( (void*) address, size );
-+ assert( ret == 0 );
-+
-+ //~ free( (void*) address );
-+
-+ return KERN_SUCCESS;
-+}
-+
-+/** The function mach_port_allocate_name creates a new right in the specified task, with a specified name for the new right. In this implementation it does nothing. */
-+kern_return_t mach_port_allocate_name (mach_port_t task, mach_port_right_t right, mach_port_t name)
-+{
-+ return KERN_SUCCESS;
-+}
-+
-+/** The function mach_port_deallocate releases a user reference for a right in task's IPC name space. In this implementation it does nothing. */
-+kern_return_t mach_port_deallocate (mach_port_t task, mach_port_t name)
-+{
-+ return KERN_SUCCESS;
-+}
-+
-+/** host_info returns information about the host. It is not implemented in this implementation. */
-+kern_return_t host_info( host_t host, host_flavor_t flavor, host_info_t host_info_out, mach_msg_type_number_t *host_info_outCnt )
-+{
-+ assert( 0 );
-+ return KERN_FAILURE;
-+}
-+
-+/** vm_msync unimplemented: It does nothing. */
-+kern_return_t vm_msync ( vm_map_t target_task, vm_address_t address, vm_size_t size, vm_sync_t sync_flags )
-+{
-+ //~ assert( address != (vm_address_t) NULL );
-+ //~ int ret = 0;
-+ //~ ret = msync( (void*) address, size, int flags);
-+ //~ assert( 0 );
-+ return KERN_SUCCESS;
-+}
-+
-+/** bootstrap_look_up unimplemented. */
-+kern_return_t bootstrap_look_up( mach_port_t bootstrap_port, name_t service_name, mach_port_t *service_port )
-+{
-+ assert( 0 );
-+ return KERN_FAILURE;
-+}
-+
-+/** mach_msg unimplemented. Send and/or receive a message. If the message operation
-+ * is interrupted, and the user did not request an indication
-+ * of that fact, then restart the appropriate parts of the
-+ * operation silently (trap version does not restart).
-+ */
-+mach_msg_return_t mach_msg( mach_msg_header_t *msg, mach_msg_option_t option, mach_msg_size_t send_size,
-+ mach_msg_size_t rcv_size, mach_port_name_t rcv_name, mach_msg_timeout_t timeout, mach_port_name_t notify)
-+{
-+ //~ assert( 0 );
-+ return KERN_SUCCESS;
-+}
-\ No newline at end of file
--- ld/makeUser.c Sat Sep 6 21:52:24 2003
+++ ld/makeUser.c Mon Aug 25 22:54:46 2003
@@ -0,0 +1,305 @@
+ return msg_result;
+ }
+}
---- ar/archive.c 30 Apr 2002 07:37:17 -0000 1.1.1.1
-+++ ar/archive.c 7 Sep 2003 08:55:11 -0000
-@@ -69,6 +69,7 @@
-
- #include <sys/param.h>
- #include <sys/stat.h>
-+#include <stuff/ofile.h>
-
- #include <ar.h>
- #include <dirent.h>
-@@ -268,21 +269,21 @@
- name, OLDARMAXNAME, name);
- (void)fflush(stderr);
- }
-- (void)sprintf(hb, HDR3, name, (long int)sb->st_mtimespec.tv_sec,
-+ (void)sprintf(hb, HDR3, name, (long int)sb->st_mtime,
- (unsigned int)(u_short)sb->st_uid,
- (unsigned int)(u_short)sb->st_gid,
- sb->st_mode, sb->st_size, ARFMAG);
- lname = 0;
- } else if (lname > sizeof(hdr->ar_name) || strchr(name, ' '))
- (void)sprintf(hb, HDR1, AR_EFMT1, (lname + 3) & ~3,
-- (long int)sb->st_mtimespec.tv_sec,
-+ (long int)sb->st_mtime,
- (unsigned int)(u_short)sb->st_uid,
- (unsigned int)(u_short)sb->st_gid,
- sb->st_mode, sb->st_size + ((lname + 3) & ~3),
- ARFMAG);
- else {
- lname = 0;
-- (void)sprintf(hb, HDR2, name, (long int)sb->st_mtimespec.tv_sec,
-+ (void)sprintf(hb, HDR2, name, (long int)sb->st_mtime,
- (unsigned int)(u_short)sb->st_uid,
- (unsigned int)(u_short)sb->st_gid,
- sb->st_mode, sb->st_size, ARFMAG);
--- ar/contents.c 30 Apr 2002 07:37:17 -0000 1.1.1.1
+++ ar/contents.c 7 Sep 2003 08:55:11 -0000
@@ -76,7 +76,6 @@
ifeq "NO" "$(USE_DEPENDENCY_FILE)"
.c.o:
+--- ld/fake-mach.c Sun Sep 7 14:13:57 2003
++++ ld/fake-mach.c Sun Sep 7 14:13:50 2003
+@@ -0,0 +1,163 @@
++/** fake-mach.c - A half baked implementation of mach kernel functions using the POSIX UNIX API.
++*
++* This was used to port Apple's Darwin linker (ld) to Linux. This allows Mac OS X applications to
++* be cross complied on Linux. */
++
++#include <stdlib.h>
++#include <assert.h>
++#include <sys/types.h>
++#include <sys/uio.h>
++#include <unistd.h>
++
++#include <errno.h>
++
++#include <sys/mman.h>
++
++// Mach include files for typedefs, return values, etc
++//~ #include <mach/mach.h>
++#include <mach/kern_return.h>
++#include <mach/vm_types.h>
++#include <mach/mach_types.h>
++#include <mach/message.h>
++#include <servers/bootstrap_defs.h>
++
++/** The port for the current task. Ignored in this implementation. */
++mach_port_t mach_task_self_ = 0;
++
++/** The bootstrap port. Ignored in this implementation. */
++mach_port_t bootstrap_port = 0;
++
++#include <mach/ppc/ndr_def.h>
++
++/** Maps the file descriptor into memory. Free the memory using vm_deallocate. Ignores findspace and offset. */
++kern_return_t map_fd( int fd, vm_offset_t offset, vm_offset_t *va, boolean_t findspace, vm_size_t size)
++{
++ void* space = NULL;
++ int bytes = 0;
++
++ assert( fd > 0 );
++ assert( offset == 0 );
++ //~ assert( *va == 0 );
++ assert( findspace == TRUE );
++
++ // Allocate memory
++ space = malloc( size );
++ assert( space != NULL );
++
++ // Read file into space
++ while(bytes < size) bytes += read( fd, ((char*)space) + bytes, size - bytes);
++ assert( bytes == size );
++
++ /*
++ space = mmap( (void*) offset, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0 );
++ // No permission: try to make it read only
++ if ( space == (void*) -1 && errno == EACCES )
++ {
++ space = mmap( (void*) offset, size, PROT_READ, MAP_SHARED, fd, 0 );
++ }
++ assert( space != NULL && space != (void*) -1 );
++ */
++
++ // Copy back the pointer
++ *va = (vm_offset_t) space;
++
++ // Return success
++ return KERN_SUCCESS;
++}
++
++/** Returns a string appropriate to the error argument given. */
++char* mach_error_string( int error_value )
++{
++ char *errorString = "Some fake mach error string.";
++
++ return errorString;
++}
++
++/** Returns the mach port for the current host. We fake it by returning zero. */
++mach_port_t mach_host_self( void )
++{
++ return 0;
++}
++
++/** Returns the mach port for the current task. We fake it by returning zero. */
++//~ mach_port_t mach_task_self( void )
++//~ {
++ //~ return 0;
++//~ }
++
++/**The function vm_allocate allocates a region of virtual memory, placing it in the specified task's address space. Anywhere must be true, as the memory will be allocated anywhere. */
++extern kern_return_t vm_allocate( mach_port_t target_task, vm_address_t *address, vm_size_t size, boolean_t anywhere )
++{
++ assert( anywhere == TRUE );
++
++ // Anonymous memory map
++ *address = (vm_address_t) mmap( NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE|MAP_ANON, 0, 0 );
++ //~ *address = (vm_address_t) malloc( size );
++ assert( address != (vm_address_t) NULL );
++
++ return KERN_SUCCESS;
++}
++
++/**vm_deallocate relinquishes access to a region of a task's address space, causing further access to that memory to fail. This memory must have been allocated with vm_allocate. size is ignored. */
++kern_return_t vm_deallocate( mach_port_t target_task, vm_address_t address, vm_size_t size )
++{
++ int ret = 0;
++
++ assert( address != (vm_address_t) NULL );
++
++ // Free the memory
++ ret = munmap( (void*) address, size );
++ assert( ret == 0 );
++
++ //~ free( (void*) address );
++
++ return KERN_SUCCESS;
++}
++
++/** The function mach_port_allocate_name creates a new right in the specified task, with a specified name for the new right. In this implementation it does nothing. */
++kern_return_t mach_port_allocate_name (mach_port_t task, mach_port_right_t right, mach_port_t name)
++{
++ return KERN_SUCCESS;
++}
++
++/** The function mach_port_deallocate releases a user reference for a right in task's IPC name space. In this implementation it does nothing. */
++kern_return_t mach_port_deallocate (mach_port_t task, mach_port_t name)
++{
++ return KERN_SUCCESS;
++}
++
++/** host_info returns information about the host. It is not implemented in this implementation. */
++kern_return_t host_info( host_t host, host_flavor_t flavor, host_info_t host_info_out, mach_msg_type_number_t *host_info_outCnt )
++{
++ assert( 0 );
++ return KERN_FAILURE;
++}
++
++/** vm_msync unimplemented: It does nothing. */
++kern_return_t vm_msync ( vm_map_t target_task, vm_address_t address, vm_size_t size, vm_sync_t sync_flags )
++{
++ //~ assert( address != (vm_address_t) NULL );
++ //~ int ret = 0;
++ //~ ret = msync( (void*) address, size, int flags);
++ //~ assert( 0 );
++ return KERN_SUCCESS;
++}
++
++/** bootstrap_look_up unimplemented. */
++kern_return_t bootstrap_look_up( mach_port_t bootstrap_port, name_t service_name, mach_port_t *service_port )
++{
++ assert( 0 );
++ return KERN_FAILURE;
++}
++
++/** mach_msg unimplemented. Send and/or receive a message. If the message operation
++ * is interrupted, and the user did not request an indication
++ * of that fact, then restart the appropriate parts of the
++ * operation silently (trap version does not restart).
++ */
++mach_msg_return_t mach_msg( mach_msg_header_t *msg, mach_msg_option_t option, mach_msg_size_t send_size,
++ mach_msg_size_t rcv_size, mach_port_name_t rcv_name, mach_msg_timeout_t timeout, mach_port_name_t notify)
++{
++ //~ assert( 0 );
++ return KERN_SUCCESS;
++}
+--- ar/archive.c 30 Apr 2002 07:37:17 -0000 1.1.1.1
++++ ar/archive.c 8 Sep 2003 01:51:24 -0000
+@@ -69,6 +69,7 @@
+
+ #include <sys/param.h>
+ #include <sys/stat.h>
++#include <stuff/ofile.h>
+
+ #include <ar.h>
+ #include <dirent.h>
+@@ -86,7 +87,7 @@
+ #include "extern.h"
+
+ typedef struct ar_hdr HDR;
+-static char hb[sizeof(HDR) + 1]; /* real header */
++static char hb[61]; /* real header */
+
+ int
+ open_archive(mode)
+@@ -262,30 +263,40 @@
+ */
+ lname = strlen(name);
+ if (options & AR_TR) {
++ char buf[16];
++ int i;
++ for(i=0; i<15; i++) buf[i] = ' ';
++ buf[15] = '\0';
+ if (lname > OLDARMAXNAME) {
+ (void)fflush(stdout);
+ warnx("warning: %s truncated to %.*s",
+ name, OLDARMAXNAME, name);
+ (void)fflush(stderr);
+ }
+- (void)sprintf(hb, HDR3, name, (long int)sb->st_mtimespec.tv_sec,
++ strncpy(buf, name, 15);
++ (void)sprintf(hb, HDR3, buf, (long int)sb->st_mtime,
+ (unsigned int)(u_short)sb->st_uid,
+ (unsigned int)(u_short)sb->st_gid,
+- sb->st_mode, sb->st_size, ARFMAG);
++ sb->st_mode, (long long)sb->st_size, ARFMAG);
+ lname = 0;
+- } else if (lname > sizeof(hdr->ar_name) || strchr(name, ' '))
++ } else if (lname > sizeof(hdr->ar_name) || strchr(name, ' ')) {
+ (void)sprintf(hb, HDR1, AR_EFMT1, (lname + 3) & ~3,
+- (long int)sb->st_mtimespec.tv_sec,
++ (long int)sb->st_mtime,
+ (unsigned int)(u_short)sb->st_uid,
+ (unsigned int)(u_short)sb->st_gid,
+- sb->st_mode, sb->st_size + ((lname + 3) & ~3),
++ sb->st_mode, (long long)(sb->st_size + ((lname + 3) & ~3)),
+ ARFMAG);
+- else {
++} else {
++ char buf[17];
++ int i;
++ for(i=0; i<16; i++) buf[i] = ' ';
++ buf[16] = '\0';
++ strncpy(buf, name, 16);
+ lname = 0;
+- (void)sprintf(hb, HDR2, name, (long int)sb->st_mtimespec.tv_sec,
++ (void)sprintf(hb, HDR2, buf, (long int)sb->st_mtime,
+ (unsigned int)(u_short)sb->st_uid,
+ (unsigned int)(u_short)sb->st_gid,
+- sb->st_mode, sb->st_size, ARFMAG);
++ sb->st_mode, (long long)sb->st_size, ARFMAG);
+ }
+ size = sb->st_size;
+ } else {
+--- misc/libtool.c Wed Apr 23 15:44:51 2003
++++ misc/libtool.c Sun Sep 7 18:58:16 2003
+@@ -2177,14 +2177,15 @@
+
+ strcpy(message_buf, message);
+ strcat(message_buf, arch_name);
+-
++ /*
+ make_alert(ProjectBuilder_port,
+ -1,
+- NULL, 0, /* functionName, not used by ProjectBuilder */
++ NULL, 0,
+ fileName, strlen(fileName)+1 > 1024 ? 1024 : strlen(fileName)+1,
+ NULL, 0,
+ 0,
+ message_buf, strlen(message_buf) + 1);
++*/
+ }
+
+ /*