159 lines
5.3 KiB
Plaintext
159 lines
5.3 KiB
Plaintext
Index: libffi/ChangeLog
|
|
===================================================================
|
|
--- libffi.orig/ChangeLog
|
|
+++ libffi/ChangeLog
|
|
@@ -1,3 +1,16 @@
|
|
+2011-02-11 Anthony Green <green@moxielogic.com>
|
|
+
|
|
+ From Tom Honermann <tom.honermann@oracle.com>:
|
|
+ * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on
|
|
+ AIX. Declare .ffi_prep_args. Insert nops after branch
|
|
+ instructions so that the AIX linker can insert TOC reload
|
|
+ instructions.
|
|
+ * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
|
|
+
|
|
+2011-02-08 Uli Link <ul.mcamafia@linkitup.de>
|
|
+
|
|
+ * include/ffi.h.in (FFI_64_BIT_MAX): Define and use.
|
|
+
|
|
2011-02-08 Rafael Avila de Espindola <respindola@mozilla.com>
|
|
|
|
* configure.ac: Fix x86 test for pc related relocs.
|
|
Index: libffi/include/ffi.h.in
|
|
===================================================================
|
|
--- libffi.orig/include/ffi.h.in
|
|
+++ libffi/include/ffi.h.in
|
|
@@ -1,16 +1,17 @@
|
|
/* -----------------------------------------------------------------*-C-*-
|
|
- libffi @VERSION@ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
|
|
+ libffi @VERSION@ - Copyright (c) 2011 Anthony Green
|
|
+ - Copyright (c) 1996-2003, 2007, 2008 Red Hat, Inc.
|
|
|
|
- Permission is hereby granted, free of charge, to any person obtaining
|
|
- a copy of this software and associated documentation files (the
|
|
- ``Software''), to deal in the Software without restriction, including
|
|
- without limitation the rights to use, copy, modify, merge, publish,
|
|
- distribute, sublicense, and/or sell copies of the Software, and to
|
|
- permit persons to whom the Software is furnished to do so, subject to
|
|
- the following conditions:
|
|
+ Permission is hereby granted, free of charge, to any person
|
|
+ obtaining a copy of this software and associated documentation
|
|
+ files (the ``Software''), to deal in the Software without
|
|
+ restriction, including without limitation the rights to use, copy,
|
|
+ modify, merge, publish, distribute, sublicense, and/or sell copies
|
|
+ of the Software, and to permit persons to whom the Software is
|
|
+ furnished to do so, subject to the following conditions:
|
|
|
|
- The above copyright notice and this permission notice shall be included
|
|
- in all copies or substantial portions of the Software.
|
|
+ The above copyright notice and this permission notice shall be
|
|
+ included in all copies or substantial portions of the Software.
|
|
|
|
THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
|
|
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
@@ -77,6 +78,9 @@ extern "C" {
|
|
/* LONG_LONG_MAX is not always defined (not if STRICT_ANSI, for example).
|
|
But we can find it either under the correct ANSI name, or under GNU
|
|
C's internal name. */
|
|
+
|
|
+#define FFI_64_BIT_MAX 9223372036854775807
|
|
+
|
|
#ifdef LONG_LONG_MAX
|
|
# define FFI_LONG_LONG_MAX LONG_LONG_MAX
|
|
#else
|
|
@@ -86,6 +90,15 @@ extern "C" {
|
|
# ifdef __GNUC__
|
|
# define FFI_LONG_LONG_MAX __LONG_LONG_MAX__
|
|
# endif
|
|
+# ifdef _AIX
|
|
+# ifndef __PPC64__
|
|
+# if defined (__IBMC__) || defined (__IBMCPP__)
|
|
+# define FFI_LONG_LONG_MAX LONGLONG_MAX
|
|
+# endif
|
|
+# endif /* __PPC64__ */
|
|
+# undef FFI_64_BIT_MAX
|
|
+# define FFI_64_BIT_MAX 9223372036854775807LL
|
|
+# endif
|
|
# endif
|
|
#endif
|
|
|
|
@@ -132,17 +145,17 @@ typedef struct _ffi_type
|
|
#endif
|
|
|
|
#if LONG_MAX == 2147483647
|
|
-# if FFI_LONG_LONG_MAX != 9223372036854775807
|
|
+# if FFI_LONG_LONG_MAX != FFI_64_BIT_MAX
|
|
#error "no 64-bit data type supported"
|
|
# endif
|
|
-#elif LONG_MAX != 9223372036854775807
|
|
+#elif LONG_MAX != FFI_64_BIT_MAX
|
|
#error "long size not supported"
|
|
#endif
|
|
|
|
#if LONG_MAX == 2147483647
|
|
# define ffi_type_ulong ffi_type_uint32
|
|
# define ffi_type_slong ffi_type_sint32
|
|
-#elif LONG_MAX == 9223372036854775807
|
|
+#elif LONG_MAX == FFI_64_BIT_MAX
|
|
# define ffi_type_ulong ffi_type_uint64
|
|
# define ffi_type_slong ffi_type_sint64
|
|
#else
|
|
@@ -195,7 +208,7 @@ typedef struct {
|
|
#ifndef FFI_SIZEOF_ARG
|
|
# if LONG_MAX == 2147483647
|
|
# define FFI_SIZEOF_ARG 4
|
|
-# elif LONG_MAX == 9223372036854775807
|
|
+# elif LONG_MAX == FFI_64_BIT_MAX
|
|
# define FFI_SIZEOF_ARG 8
|
|
# endif
|
|
#endif
|
|
Index: libffi/src/powerpc/aix.S
|
|
===================================================================
|
|
--- libffi.orig/src/powerpc/aix.S
|
|
+++ libffi/src/powerpc/aix.S
|
|
@@ -1,5 +1,5 @@
|
|
/* -----------------------------------------------------------------------
|
|
- aix.S - Copyright (c) 2002,2009 Free Software Foundation, Inc.
|
|
+ aix.S - Copyright (c) 2002, 2009 Free Software Foundation, Inc.
|
|
based on darwin.S by John Hornkvist
|
|
|
|
PowerPC Assembly glue.
|
|
@@ -79,6 +79,8 @@
|
|
.set f20,20
|
|
.set f21,21
|
|
|
|
+ .extern .ffi_prep_args
|
|
+
|
|
#define LIBFFI_ASM
|
|
#include <fficonfig.h>
|
|
#include <ffi.h>
|
|
@@ -125,6 +127,7 @@ ffi_call_AIX:
|
|
/* Call ffi_prep_args. */
|
|
mr r4, r1
|
|
bl .ffi_prep_args
|
|
+ nop
|
|
|
|
/* Now do the call. */
|
|
ld r0, 0(r29)
|
|
@@ -226,6 +229,7 @@ L(float_return_value):
|
|
/* Call ffi_prep_args. */
|
|
mr r4, r1
|
|
bl .ffi_prep_args
|
|
+ nop
|
|
|
|
/* Now do the call. */
|
|
lwz r0, 0(r29)
|
|
Index: libffi/src/powerpc/aix_closure.S
|
|
===================================================================
|
|
--- libffi.orig/src/powerpc/aix_closure.S
|
|
+++ libffi/src/powerpc/aix_closure.S
|
|
@@ -79,6 +79,8 @@
|
|
.set f20,20
|
|
.set f21,21
|
|
|
|
+ .extern .ffi_closure_helper_DARWIN
|
|
+
|
|
#define LIBFFI_ASM
|
|
#define JUMPTARGET(name) name
|
|
#define L(x) x
|