Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [git commit] toolchain/gdb: disable support of full gdb on target for blackfin
From: Peter Korsgaard @ 2012-11-15 23:28 UTC (permalink / raw)
  To: buildroot

commit: http://git.buildroot.net/buildroot/commit/?id=b0e53fef86814d0e300665f80374e61840e9a38c
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

There is no support in gdb 6.6 for the Blackfin architecture, so
disallow this choice. This fixes the following build failure:

  http://autobuild.buildroot.org/results/e37db29810265a756833da163fda444d967d7874/build-end.log

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 toolchain/gdb/Config.in |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/toolchain/gdb/Config.in b/toolchain/gdb/Config.in
index 8acce1e..ca0c821 100644
--- a/toolchain/gdb/Config.in
+++ b/toolchain/gdb/Config.in
@@ -4,7 +4,7 @@ config BR2_PACKAGE_GDB
 	bool "Build gdb debugger for the Target"
 	select BR2_PACKAGE_NCURSES
 	depends on BR2_USE_WCHAR
-	depends on !BR2_sh && !BR2_sh64 && !BR2_avr32 && !BR2_microblaze
+	depends on !BR2_sh && !BR2_sh64 && !BR2_avr32 && !BR2_microblaze && !BR2_bfin
 	# The newest versions of gdb require thread debugging in the
 	# toolchain. The only cases for which this is not needed is if
 	# we use gdb 6.8 (marked deprecated)

^ permalink raw reply related

* [Buildroot] [PATCH 1/2] toolchain/gdb: disable support of full gdb on target for blackfin
From: Peter Korsgaard @ 2012-11-15 23:29 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <1352586536-19621-1-git-send-email-thomas.petazzoni@free-electrons.com>

>>>>> "Thomas" == Thomas Petazzoni <thomas.petazzoni@free-electrons.com> writes:

 Thomas> There is no support in gdb 6.6 for the Blackfin architecture, so
 Thomas> disallow this choice. This fixes the following build failure:

 Thomas>   http://autobuild.buildroot.org/results/e37db29810265a756833da163fda444d967d7874/build-end.log

Committed both, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply

* [Buildroot] [git commit] lcdproc: fix autobuilder failures
From: Thomas Petazzoni @ 2012-11-15 23:44 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <20121115230738.33E869A031@busybox.osuosl.org>


On Fri, 16 Nov 2012 00:06:10 +0100, Peter Korsgaard wrote:
> commit: http://git.buildroot.net/buildroot/commit/?id=ffdb08d2219d2613f3aa9b20c30b20090948dded
> branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
> 
> The lcdproc version bump to 0.5.6 has resulted in autobuilder failures such as
> the following.
> 
>   http://autobuild.buildroot.org/results/9967bc20a6094e836c4c18ff2cd30edef143bb8e/build-end.log
> 
> The 0.5.6 release added a new glcd driver, which requires the freetype and zlib
> libraries. This patch makes the lcdproc package depend on freetype and zlib.
> 
> Signed-off-by: Simon Dawson <spdawson@gmail.com>
> Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
> ---
>  package/lcdproc/Config.in  |    2 ++
>  package/lcdproc/lcdproc.mk |    2 +-
>  2 files changed, 3 insertions(+), 1 deletions(-)
> 
> diff --git a/package/lcdproc/Config.in b/package/lcdproc/Config.in
> index 820f4ea..e0afc44 100644
> --- a/package/lcdproc/Config.in
> +++ b/package/lcdproc/Config.in
> @@ -1,6 +1,8 @@
>  config BR2_PACKAGE_LCDPROC
>         bool "lcdproc"
> +       select BR2_PACKAGE_FREETYPE
>         select BR2_PACKAGE_NCURSES
> +       select BR2_PACKAGE_ZLIB
>         help
>           LCD display driver daemon and clients
>  
> diff --git a/package/lcdproc/lcdproc.mk b/package/lcdproc/lcdproc.mk
> index aa204f1..2a80289 100644
> --- a/package/lcdproc/lcdproc.mk
> +++ b/package/lcdproc/lcdproc.mk
> @@ -16,6 +16,6 @@ ifeq ($(BR2_PACKAGE_LCDPROC_MENUS),y)
>  LCDPROC_CONF_OPT += --enable-lcdproc-menus
>  endif
>  
> -LCDPROC_DEPENDENCIES = ncurses
> +LCDPROC_DEPENDENCIES = freetype ncurses zlib

Looking at the build failure (which got triggered again today), I am a
bit suspicious about this fix. The build failure is:

/scratch/peko/host/usr/bin/ccache /scratch/peko/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc -I/scratch/peko/host/usr/include/freetype2 -I/scratch/peko/host/usr/include   -fPIC -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os  -Wno-unused-function -shared  -o glcd.so glcd-glcd_drv.o glcd-glcd-render.o libLCD.a  glcd-t6963.o t6963_low.o -L/scratch/peko/host/usr/lib -lfreetype -lz -lbz2    -ldl 
/scratch/peko/host/usr/lib/libfreetype.so: file not recognized: File format not recognized

The problem here is not a missing dependency on freetype, but rather
the fact that we have -I and -L options pointing to host headers and
libraries, while we are building something on the target. So maybe
adding freetype and zlib as dependencies work around the problem, but I
suspect that those wrong -I and -L lines might still be there, no?

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply

* [Buildroot] [git commit] qextserialport: don't require Qt GUI module
From: Arnout Vandecappelle @ 2012-11-15 23:54 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <20121114214738.427A799B26@busybox.osuosl.org>

On 14/11/12 22:44, Peter Korsgaard wrote:
> commit: http://git.buildroot.net/buildroot/commit/?id=bac970e99d751dd58561313a38311962ea0a79f1
> branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master
>
> Fixes e.g.
> http://autobuild.buildroot.net/results/e80ae76fa21f87bef10e08c7452b796dc0986ff2/
>
> Signed-off-by: Arnout Vandecappelle (Essensium/Mind)<arnout@mind.be>
> Signed-off-by: Peter Korsgaard<jacmet@sunsite.dk>
> ---
>   package/qextserialport/qextserialport-gui.patch |   16 ++++++++++++++++
>   1 files changed, 16 insertions(+), 0 deletions(-)
>
> diff --git a/package/qextserialport/qextserialport-gui.patch b/package/qextserialport/qextserialport-gui.patch
> new file mode 100644
> index 0000000..d3dedae
> --- /dev/null
> +++ b/package/qextserialport/qextserialport-gui.patch
> @@ -0,0 +1,16 @@
> +Don't require Qt GUI module
> +
> +Signed-off-by: Arnout Vandecappelle (Essensium/Mind)<arnout@mind.be>
> +---
> +diff -Nrup qextserialport-f83b4e7ca922e53.orig/qextserialport.pro qextserialport-f83b4e7ca922e53/qextserialport.pro
> +--- qextserialport-f83b4e7ca922e53.orig/qextserialport.pro	2012-10-17 09:13:53.000000000 +0200
> ++++ qextserialport-f83b4e7ca922e53/qextserialport.pro	2012-11-13 22:48:29.249431510 +0100
> +@@ -41,6 +41,8 @@ macx:qesp_mac_framework {
> +
> + win32|mac:!wince*:!win32-msvc:!macx-xcode:CONFIG += debug_and_release build_all
> +
> ++!win32*:!wince*:QT -= gui
> ++
> + #generate proper library name
> + greaterThan(QT_MAJOR_VERSION, 4) {
> +     QESP_LIB_BASENAME = QtExtSerialPort

  After submitting this patch upstream, the feedback I got is that it should
not be necessary to do this.  Looking a bit deeper, it turns out they are
right, in a way.  We use the qws mkspecs file, which includes
QT += core gui network

  I.e., by default the gui will always be linked in, and -DQT_GUI_LIB will be added
to the compile flags. It seems logical that Qt would remove the ones that aren't
installed, but it doesn't.  So we should do it ourselves.

  While we're at it, we could also throw out our patching of the platform-specific
qws config file: we are anyway replacing all "interesting" variables with our own
values, so all useful content is thrown away.  Instead, we could make our own spec
file that contains exactly what we need:

include(../../common/linux.conf)
include(../../common/gcc-base-unix.conf)
include(../../common/g++-unix.conf)
include(../../common/qws.conf)
<our stuff goes here>
load(qt_config)


  What do you think?

  Regards,
  Arnout
-- 
Arnout Vandecappelle                               arnout at mind be
Senior Embedded Software Architect                 +32-16-286540
Essensium/Mind                                     http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium                BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F

^ permalink raw reply

* [Buildroot] [PATCH 1/2] manual: prerequisite.txt: add texinfo to the mandatory package list
From: Samuel Martin @ 2012-11-16  6:13 UTC (permalink / raw)
  To: buildroot

Using the internal Buildroot toolchain backend, makeinfo, whom belongs to
the texinfo package, is required to build gcc and gdb.

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
---
 docs/manual/prerequisite.txt | 1 +
 1 file changed, 1 insertion(+)

diff --git a/docs/manual/prerequisite.txt b/docs/manual/prerequisite.txt
index 693347b..31d437d 100644
--- a/docs/manual/prerequisite.txt
+++ b/docs/manual/prerequisite.txt
@@ -42,6 +42,7 @@ Mandatory packages
 ** +python+ (version 2.6 or 2.7)
 ** +unzip+
 ** +rsync+
+** +texinfo+ (required for internal Buildroot toolchain backend)
 
 * Source fetching tools:
 ** +wget+
-- 
1.8.0

^ permalink raw reply related

* [Buildroot] [PATCH 2/2] manual: contribute.txt: do not use --summary option with 'git format-patch'
From: Samuel Martin @ 2012-11-16  6:13 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <1353046413-3015-1-git-send-email-s.martin49@gmail.com>


Signed-off-by: Samuel Martin <s.martin49@gmail.com>
---
 docs/manual/contribute.txt | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/manual/contribute.txt b/docs/manual/contribute.txt
index ddf790d..b2e6e7d 100644
--- a/docs/manual/contribute.txt
+++ b/docs/manual/contribute.txt
@@ -42,8 +42,8 @@ This will generate patch files in the +outgoing+ subdirectory,
 automatically adding the +signed-off-by+ line.
 
 If you want to present the whole patch set in a separate mail, add
-+--cover-letter --summary+ to the previous command line (+man
-git-format-patch+ for further information).
++--cover-letter+ to the previous command line (+man git-format-patch+
+for further information).
 
 Once patch files are generated, you can review/edit the commit message
 before submitting them using your favorite text editor.
-- 
1.8.0

^ permalink raw reply related

* [Buildroot] [git commit] qextserialport: don't require Qt GUI module
From: Peter Korsgaard @ 2012-11-16  6:26 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <50A580BA.5020402@mind.be>

>>>>> "Arnout" == Arnout Vandecappelle <arnout@mind.be> writes:

 Arnout>  While we're at it, we could also throw out our patching of the
 Arnout> platform-specific qws config file: we are anyway replacing all
 Arnout> "interesting" variables with our own values, so all useful
 Arnout> content is thrown away.  Instead, we could make our own spec
 Arnout> file that contains exactly what we need:

 Arnout> include(../../common/linux.conf)
 Arnout> include(../../common/gcc-base-unix.conf)
 Arnout> include(../../common/g++-unix.conf)
 Arnout> include(../../common/qws.conf)
 Arnout> <our stuff goes here>
 Arnout> load(qt_config)

 Arnout>  What do you think?

I'm no Qt expert, but it sounds sensible - Thomas?

Presumably this is all post-2012.11 stuff?

-- 
Bye, Peter Korsgaard

^ permalink raw reply

* [Buildroot] [autobuild.buildroot.net] Build results for 2012-11-15
From: Thomas Petazzoni @ 2012-11-16  7:33 UTC (permalink / raw)
  To: buildroot


Hello,

On 2012-11-15, 93 random build tests have been done and
submitted on autobuild.buildroot.net.
 56 builds have been successful
 37 builds have failed

Below the results of the failed builds. Successful builds are omitted.

Build 09044bd9bb9230ca598313da831c73305a8f07dc
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Peter Korsgaard (gcc14)
Submitted at   : 2012-11-15 00:00:46
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/09044bd9bb9230ca598313da831c73305a8f07dc/build-end.log
Complete log   : http://autobuild.buildroot.net/results/09044bd9bb9230ca598313da831c73305a8f07dc/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/09044bd9bb9230ca598313da831c73305a8f07dc/config
Defconfig      : http://autobuild.buildroot.net/results/09044bd9bb9230ca598313da831c73305a8f07dc/defconfig

Build 87aa2f7e1313f169fa0832d611c9d4c4c87d4cf0
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : i686
Submitted by   : Peter Korsgaard (gcc110)
Submitted at   : 2012-11-15 01:14:28
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/87aa2f7e1313f169fa0832d611c9d4c4c87d4cf0/build-end.log
Complete log   : http://autobuild.buildroot.net/results/87aa2f7e1313f169fa0832d611c9d4c4c87d4cf0/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/87aa2f7e1313f169fa0832d611c9d4c4c87d4cf0/config
Defconfig      : http://autobuild.buildroot.net/results/87aa2f7e1313f169fa0832d611c9d4c4c87d4cf0/defconfig

Build 95885a6e8ff11066d770a99b022d0a280fe5c92b
==============================================

Status         : NOK
Failure reason : libffi-3.0.11
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 01:23:23
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/95885a6e8ff11066d770a99b022d0a280fe5c92b/build-end.log
Complete log   : http://autobuild.buildroot.net/results/95885a6e8ff11066d770a99b022d0a280fe5c92b/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/95885a6e8ff11066d770a99b022d0a280fe5c92b/config
Defconfig      : http://autobuild.buildroot.net/results/95885a6e8ff11066d770a99b022d0a280fe5c92b/defconfig

Build c91e99454b974bc03938640c91cbb7b2edaadea1
==============================================

Status         : NOK
Failure reason : libnspr-4.8.7
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 03:20:22
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/c91e99454b974bc03938640c91cbb7b2edaadea1/build-end.log
Complete log   : http://autobuild.buildroot.net/results/c91e99454b974bc03938640c91cbb7b2edaadea1/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/c91e99454b974bc03938640c91cbb7b2edaadea1/config
Defconfig      : http://autobuild.buildroot.net/results/c91e99454b974bc03938640c91cbb7b2edaadea1/defconfig

Build 445146baa7530d2fc7530ce2c890bff1bd67f022
==============================================

Status         : NOK
Failure reason : pv-1.2.0
Architecture   : mips64el
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 04:04:06
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/445146baa7530d2fc7530ce2c890bff1bd67f022/build-end.log
Complete log   : http://autobuild.buildroot.net/results/445146baa7530d2fc7530ce2c890bff1bd67f022/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/445146baa7530d2fc7530ce2c890bff1bd67f022/config
Defconfig      : http://autobuild.buildroot.net/results/445146baa7530d2fc7530ce2c890bff1bd67f022/defconfig

Build 3216680704afd74632a8dea9fd48b4c7b1b60942
==============================================

Status         : NOK
Failure reason : xlib_libXt-1.0.9
Architecture   : powerpc
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 05:48:30
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/3216680704afd74632a8dea9fd48b4c7b1b60942/build-end.log
Complete log   : http://autobuild.buildroot.net/results/3216680704afd74632a8dea9fd48b4c7b1b60942/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/3216680704afd74632a8dea9fd48b4c7b1b60942/config
Defconfig      : http://autobuild.buildroot.net/results/3216680704afd74632a8dea9fd48b4c7b1b60942/defconfig

Build 09276824c588d283ab5a727bac740da799784811
==============================================

Status         : NOK
Failure reason : ltp-testsuite-20101031
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 06:07:08
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/09276824c588d283ab5a727bac740da799784811/build-end.log
Complete log   : http://autobuild.buildroot.net/results/09276824c588d283ab5a727bac740da799784811/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/09276824c588d283ab5a727bac740da799784811/config
Defconfig      : http://autobuild.buildroot.net/results/09276824c588d283ab5a727bac740da799784811/defconfig

Build 82fa36c02dd79f638a4004a11623ed95620cd636
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Peter Korsgaard (gcc14)
Submitted at   : 2012-11-15 06:26:01
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/82fa36c02dd79f638a4004a11623ed95620cd636/build-end.log
Complete log   : http://autobuild.buildroot.net/results/82fa36c02dd79f638a4004a11623ed95620cd636/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/82fa36c02dd79f638a4004a11623ed95620cd636/config
Defconfig      : http://autobuild.buildroot.net/results/82fa36c02dd79f638a4004a11623ed95620cd636/defconfig

Build 9a55203d375360ebe223848754aa670dd705726e
==============================================

Status         : NOK
Failure reason : xlib_libXt-1.0.9
Architecture   : mips
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 06:30:50
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/9a55203d375360ebe223848754aa670dd705726e/build-end.log
Complete log   : http://autobuild.buildroot.net/results/9a55203d375360ebe223848754aa670dd705726e/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/9a55203d375360ebe223848754aa670dd705726e/config
Defconfig      : http://autobuild.buildroot.net/results/9a55203d375360ebe223848754aa670dd705726e/defconfig

Build d95c9af8624f600011cef0c6ac370e55986c95e2
==============================================

Status         : NOK
Failure reason : icu-4.8.1.1
Architecture   : x86_64
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 06:45:43
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/d95c9af8624f600011cef0c6ac370e55986c95e2/build-end.log
Complete log   : http://autobuild.buildroot.net/results/d95c9af8624f600011cef0c6ac370e55986c95e2/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/d95c9af8624f600011cef0c6ac370e55986c95e2/config
Defconfig      : http://autobuild.buildroot.net/results/d95c9af8624f600011cef0c6ac370e55986c95e2/defconfig

Build 3235a07a10af27f1a02584fc0685ce55b36ee5ba
==============================================

Status         : NOK
Failure reason : icu-4.8.1.1
Architecture   : x86_64
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 09:12:24
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/3235a07a10af27f1a02584fc0685ce55b36ee5ba/build-end.log
Complete log   : http://autobuild.buildroot.net/results/3235a07a10af27f1a02584fc0685ce55b36ee5ba/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/3235a07a10af27f1a02584fc0685ce55b36ee5ba/config
Defconfig      : http://autobuild.buildroot.net/results/3235a07a10af27f1a02584fc0685ce55b36ee5ba/defconfig

Build 9eb2b1de2ca2a2ae9dc22960226db52526473dce
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 09:36:05
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/9eb2b1de2ca2a2ae9dc22960226db52526473dce/build-end.log
Complete log   : http://autobuild.buildroot.net/results/9eb2b1de2ca2a2ae9dc22960226db52526473dce/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/9eb2b1de2ca2a2ae9dc22960226db52526473dce/config
Defconfig      : http://autobuild.buildroot.net/results/9eb2b1de2ca2a2ae9dc22960226db52526473dce/defconfig

Build 386b7dff8c05c40113efad0e6648aa3a67b64ffa
==============================================

Status         : NOK
Failure reason : squid-3.2.3
Architecture   : mips64el
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 10:11:52
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/386b7dff8c05c40113efad0e6648aa3a67b64ffa/build-end.log
Complete log   : http://autobuild.buildroot.net/results/386b7dff8c05c40113efad0e6648aa3a67b64ffa/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/386b7dff8c05c40113efad0e6648aa3a67b64ffa/config
Defconfig      : http://autobuild.buildroot.net/results/386b7dff8c05c40113efad0e6648aa3a67b64ffa/defconfig

Build 8976064d021738f2f3de6ed41e0c443396ab0954
==============================================

Status         : NOK
Failure reason : berkeleydb-5.3.21
Architecture   : sh2a
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 10:15:20
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/8976064d021738f2f3de6ed41e0c443396ab0954/build-end.log
Complete log   : http://autobuild.buildroot.net/results/8976064d021738f2f3de6ed41e0c443396ab0954/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/8976064d021738f2f3de6ed41e0c443396ab0954/config
Defconfig      : http://autobuild.buildroot.net/results/8976064d021738f2f3de6ed41e0c443396ab0954/defconfig

Build 54fbd5b16df11f9bd088752d48fa502eb75a48ff
==============================================

Status         : NOK
Failure reason : xlib_libXt-1.0.9
Architecture   : mipsel
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 11:48:16
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/54fbd5b16df11f9bd088752d48fa502eb75a48ff/build-end.log
Complete log   : http://autobuild.buildroot.net/results/54fbd5b16df11f9bd088752d48fa502eb75a48ff/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/54fbd5b16df11f9bd088752d48fa502eb75a48ff/config
Defconfig      : http://autobuild.buildroot.net/results/54fbd5b16df11f9bd088752d48fa502eb75a48ff/defconfig

Build 2815885d589d75259508bcce4f272b8dddb3be77
==============================================

Status         : NOK
Failure reason : xlib_libXt-1.0.9
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 12:30:45
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/2815885d589d75259508bcce4f272b8dddb3be77/build-end.log
Complete log   : http://autobuild.buildroot.net/results/2815885d589d75259508bcce4f272b8dddb3be77/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/2815885d589d75259508bcce4f272b8dddb3be77/config
Defconfig      : http://autobuild.buildroot.net/results/2815885d589d75259508bcce4f272b8dddb3be77/defconfig

Build d007e90324eb480b80e98566360a5ebf92550105
==============================================

Status         : NOK
Failure reason : icu-4.8.1.1
Architecture   : i686
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 12:52:25
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=c86cfd91c480671a9223a3c2adc8aaa9ca6b33e0
End of log     : http://autobuild.buildroot.net/results/d007e90324eb480b80e98566360a5ebf92550105/build-end.log
Complete log   : http://autobuild.buildroot.net/results/d007e90324eb480b80e98566360a5ebf92550105/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/d007e90324eb480b80e98566360a5ebf92550105/config
Defconfig      : http://autobuild.buildroot.net/results/d007e90324eb480b80e98566360a5ebf92550105/defconfig

Build 0d4f47cc944eb5b0d4380089d08cbd0e98f94fcf
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 14:46:05
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=53adfc5f4976704d426681a0404c1643db009552
End of log     : http://autobuild.buildroot.net/results/0d4f47cc944eb5b0d4380089d08cbd0e98f94fcf/build-end.log
Complete log   : http://autobuild.buildroot.net/results/0d4f47cc944eb5b0d4380089d08cbd0e98f94fcf/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/0d4f47cc944eb5b0d4380089d08cbd0e98f94fcf/config
Defconfig      : http://autobuild.buildroot.net/results/0d4f47cc944eb5b0d4380089d08cbd0e98f94fcf/defconfig

Build 9cc383a077f75dd29a527de0e388e78cc841a84c
==============================================

Status         : NOK
Failure reason : tremor-18153
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 15:55:35
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=53adfc5f4976704d426681a0404c1643db009552
End of log     : http://autobuild.buildroot.net/results/9cc383a077f75dd29a527de0e388e78cc841a84c/build-end.log
Complete log   : http://autobuild.buildroot.net/results/9cc383a077f75dd29a527de0e388e78cc841a84c/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/9cc383a077f75dd29a527de0e388e78cc841a84c/config
Defconfig      : http://autobuild.buildroot.net/results/9cc383a077f75dd29a527de0e388e78cc841a84c/defconfig

Build 19d0de76b380189ed2da5cd7020a51451c6de57d
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 16:44:55
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=53adfc5f4976704d426681a0404c1643db009552
End of log     : http://autobuild.buildroot.net/results/19d0de76b380189ed2da5cd7020a51451c6de57d/build-end.log
Complete log   : http://autobuild.buildroot.net/results/19d0de76b380189ed2da5cd7020a51451c6de57d/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/19d0de76b380189ed2da5cd7020a51451c6de57d/config
Defconfig      : http://autobuild.buildroot.net/results/19d0de76b380189ed2da5cd7020a51451c6de57d/defconfig

Build abcdbe1aaf1c203c82dc3e4ec8c002b9b9e550e0
==============================================

Status         : NOK
Failure reason : apr-1.4.6
Architecture   : aarch64
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 16:45:31
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/abcdbe1aaf1c203c82dc3e4ec8c002b9b9e550e0/build-end.log
Complete log   : http://autobuild.buildroot.net/results/abcdbe1aaf1c203c82dc3e4ec8c002b9b9e550e0/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/abcdbe1aaf1c203c82dc3e4ec8c002b9b9e550e0/config
Defconfig      : http://autobuild.buildroot.net/results/abcdbe1aaf1c203c82dc3e4ec8c002b9b9e550e0/defconfig

Build 14122d6f6d7f2e5cb1c75193417bebd176f4bef4
==============================================

Status         : NOK
Failure reason : lcdproc-0.5.6
Architecture   : powerpc
Submitted by   : Peter Korsgaard (gcc14)
Submitted at   : 2012-11-15 16:48:23
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=53adfc5f4976704d426681a0404c1643db009552
End of log     : http://autobuild.buildroot.net/results/14122d6f6d7f2e5cb1c75193417bebd176f4bef4/build-end.log
Complete log   : http://autobuild.buildroot.net/results/14122d6f6d7f2e5cb1c75193417bebd176f4bef4/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/14122d6f6d7f2e5cb1c75193417bebd176f4bef4/config
Defconfig      : http://autobuild.buildroot.net/results/14122d6f6d7f2e5cb1c75193417bebd176f4bef4/defconfig

Build 947cf0ea7d7dbc9076aa2cf1873bf9afe6aac087
==============================================

Status         : NOK
Failure reason : squid-3.2.3
Architecture   : mipsel
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 17:03:31
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/947cf0ea7d7dbc9076aa2cf1873bf9afe6aac087/build-end.log
Complete log   : http://autobuild.buildroot.net/results/947cf0ea7d7dbc9076aa2cf1873bf9afe6aac087/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/947cf0ea7d7dbc9076aa2cf1873bf9afe6aac087/config
Defconfig      : http://autobuild.buildroot.net/results/947cf0ea7d7dbc9076aa2cf1873bf9afe6aac087/defconfig

Build 1ba642e4839c852aebd324c9620d8ce000f5de8d
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : i686
Submitted by   : Peter Korsgaard (gcc110)
Submitted at   : 2012-11-15 17:07:47
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=53adfc5f4976704d426681a0404c1643db009552
End of log     : http://autobuild.buildroot.net/results/1ba642e4839c852aebd324c9620d8ce000f5de8d/build-end.log
Complete log   : http://autobuild.buildroot.net/results/1ba642e4839c852aebd324c9620d8ce000f5de8d/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/1ba642e4839c852aebd324c9620d8ce000f5de8d/config
Defconfig      : http://autobuild.buildroot.net/results/1ba642e4839c852aebd324c9620d8ce000f5de8d/defconfig

Build cbe3fabb6d4216e07addd68d3b92dd1187265327
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Peter Korsgaard (gcc14)
Submitted at   : 2012-11-15 17:15:34
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/cbe3fabb6d4216e07addd68d3b92dd1187265327/build-end.log
Complete log   : http://autobuild.buildroot.net/results/cbe3fabb6d4216e07addd68d3b92dd1187265327/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/cbe3fabb6d4216e07addd68d3b92dd1187265327/config
Defconfig      : http://autobuild.buildroot.net/results/cbe3fabb6d4216e07addd68d3b92dd1187265327/defconfig

Build 795622527455ed17cfe4fb0ef45dcb187f0ba1fc
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 17:21:40
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/795622527455ed17cfe4fb0ef45dcb187f0ba1fc/build-end.log
Complete log   : http://autobuild.buildroot.net/results/795622527455ed17cfe4fb0ef45dcb187f0ba1fc/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/795622527455ed17cfe4fb0ef45dcb187f0ba1fc/config
Defconfig      : http://autobuild.buildroot.net/results/795622527455ed17cfe4fb0ef45dcb187f0ba1fc/defconfig

Build c9681aae6f684c56fe973b9792b8add26d33f54f
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : i686
Submitted by   : Peter Korsgaard (gcc110)
Submitted at   : 2012-11-15 18:43:53
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/c9681aae6f684c56fe973b9792b8add26d33f54f/build-end.log
Complete log   : http://autobuild.buildroot.net/results/c9681aae6f684c56fe973b9792b8add26d33f54f/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/c9681aae6f684c56fe973b9792b8add26d33f54f/config
Defconfig      : http://autobuild.buildroot.net/results/c9681aae6f684c56fe973b9792b8add26d33f54f/defconfig

Build 5ad9820a63b2aad36cddc46a171488c62c330ca7
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Peter Korsgaard (gcc14)
Submitted at   : 2012-11-15 19:28:12
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/5ad9820a63b2aad36cddc46a171488c62c330ca7/build-end.log
Complete log   : http://autobuild.buildroot.net/results/5ad9820a63b2aad36cddc46a171488c62c330ca7/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/5ad9820a63b2aad36cddc46a171488c62c330ca7/config
Defconfig      : http://autobuild.buildroot.net/results/5ad9820a63b2aad36cddc46a171488c62c330ca7/defconfig

Build 37dae58341ad4c2491044bd51006b4f590c72878
==============================================

Status         : NOK
Failure reason : boost-1.49.0
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 19:31:02
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/37dae58341ad4c2491044bd51006b4f590c72878/build-end.log
Complete log   : http://autobuild.buildroot.net/results/37dae58341ad4c2491044bd51006b4f590c72878/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/37dae58341ad4c2491044bd51006b4f590c72878/config
Defconfig      : http://autobuild.buildroot.net/results/37dae58341ad4c2491044bd51006b4f590c72878/defconfig

Build ef868f5ec6a5c046cfbd998af28edb401470a102
==============================================

Status         : NOK
Failure reason : icu-4.8.1.1
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 20:42:50
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/ef868f5ec6a5c046cfbd998af28edb401470a102/build-end.log
Complete log   : http://autobuild.buildroot.net/results/ef868f5ec6a5c046cfbd998af28edb401470a102/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/ef868f5ec6a5c046cfbd998af28edb401470a102/config
Defconfig      : http://autobuild.buildroot.net/results/ef868f5ec6a5c046cfbd998af28edb401470a102/defconfig

Build 4ffc67255fe302518593053caa0091a7a2abf806
==============================================

Status         : NOK
Failure reason : squid-3.2.3
Architecture   : mips64el
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 21:43:57
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/4ffc67255fe302518593053caa0091a7a2abf806/build-end.log
Complete log   : http://autobuild.buildroot.net/results/4ffc67255fe302518593053caa0091a7a2abf806/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/4ffc67255fe302518593053caa0091a7a2abf806/config
Defconfig      : http://autobuild.buildroot.net/results/4ffc67255fe302518593053caa0091a7a2abf806/defconfig

Build 5464c9b9ebebaf4a9e662e8cb89421a7f78aa4de
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : powerpc
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 22:01:43
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/5464c9b9ebebaf4a9e662e8cb89421a7f78aa4de/build-end.log
Complete log   : http://autobuild.buildroot.net/results/5464c9b9ebebaf4a9e662e8cb89421a7f78aa4de/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/5464c9b9ebebaf4a9e662e8cb89421a7f78aa4de/config
Defconfig      : http://autobuild.buildroot.net/results/5464c9b9ebebaf4a9e662e8cb89421a7f78aa4de/defconfig

Build 8a7415821c59389b68a35bd358faef10003a4be4
==============================================

Status         : NOK
Failure reason : cpanminus-1.5018
Architecture   : i686
Submitted by   : Peter Korsgaard (gcc110)
Submitted at   : 2012-11-15 22:19:40
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=695c4bcebc6093f44d21117489bb72cc7c76c5af
End of log     : http://autobuild.buildroot.net/results/8a7415821c59389b68a35bd358faef10003a4be4/build-end.log
Complete log   : http://autobuild.buildroot.net/results/8a7415821c59389b68a35bd358faef10003a4be4/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/8a7415821c59389b68a35bd358faef10003a4be4/config
Defconfig      : http://autobuild.buildroot.net/results/8a7415821c59389b68a35bd358faef10003a4be4/defconfig

Build 4f1e0c3a1bae2b6ce9b75b4c00863d4cb45798aa
==============================================

Status         : NOK
Failure reason : icu-4.8.1.1
Architecture   : i686
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 22:36:15
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=f92a2371957caf4e72951d7c9e33438a6e105250
End of log     : http://autobuild.buildroot.net/results/4f1e0c3a1bae2b6ce9b75b4c00863d4cb45798aa/build-end.log
Complete log   : http://autobuild.buildroot.net/results/4f1e0c3a1bae2b6ce9b75b4c00863d4cb45798aa/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/4f1e0c3a1bae2b6ce9b75b4c00863d4cb45798aa/config
Defconfig      : http://autobuild.buildroot.net/results/4f1e0c3a1bae2b6ce9b75b4c00863d4cb45798aa/defconfig

Build 88faccffe9697a4670b8ce77fcd5326003a4b46f
==============================================

Status         : NOK
Failure reason : libatomic_ops-1.2
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 22:51:52
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=a064238c3c0e5743e1f66353e620bd35399d6a76
End of log     : http://autobuild.buildroot.net/results/88faccffe9697a4670b8ce77fcd5326003a4b46f/build-end.log
Complete log   : http://autobuild.buildroot.net/results/88faccffe9697a4670b8ce77fcd5326003a4b46f/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/88faccffe9697a4670b8ce77fcd5326003a4b46f/config
Defconfig      : http://autobuild.buildroot.net/results/88faccffe9697a4670b8ce77fcd5326003a4b46f/defconfig

Build 62a623685cbb88c447cc95fddeec135ed1ad540c
==============================================

Status         : NOK
Failure reason : lcdproc-0.5.6
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 23:41:13
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=a064238c3c0e5743e1f66353e620bd35399d6a76
End of log     : http://autobuild.buildroot.net/results/62a623685cbb88c447cc95fddeec135ed1ad540c/build-end.log
Complete log   : http://autobuild.buildroot.net/results/62a623685cbb88c447cc95fddeec135ed1ad540c/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/62a623685cbb88c447cc95fddeec135ed1ad540c/config
Defconfig      : http://autobuild.buildroot.net/results/62a623685cbb88c447cc95fddeec135ed1ad540c/defconfig

Build fbf9a6e604d1327ff2f2c31b7be8c3c5f64661bb
==============================================

Status         : NOK
Failure reason : gdbhost-7.4.1
Architecture   : arm
Submitted by   : Thomas Petazzoni (Free Electrons build server)
Submitted at   : 2012-11-15 23:52:31
Git commit ID  : http://git.buildroot.net/buildroot/commit/?id=a064238c3c0e5743e1f66353e620bd35399d6a76
End of log     : http://autobuild.buildroot.net/results/fbf9a6e604d1327ff2f2c31b7be8c3c5f64661bb/build-end.log
Complete log   : http://autobuild.buildroot.net/results/fbf9a6e604d1327ff2f2c31b7be8c3c5f64661bb/build.log.bz2
Configuration  : http://autobuild.buildroot.net/results/fbf9a6e604d1327ff2f2c31b7be8c3c5f64661bb/config
Defconfig      : http://autobuild.buildroot.net/results/fbf9a6e604d1327ff2f2c31b7be8c3c5f64661bb/defconfig



-- 
http://autobuild.buildroot.net

^ permalink raw reply

* [Buildroot] [git commit] manual: prerequisite.txt: add texinfo to the mandatory package list
From: Peter Korsgaard @ 2012-11-16  7:43 UTC (permalink / raw)
  To: buildroot

commit: http://git.buildroot.net/buildroot/commit/?id=c7ece205fae5070b2ddaddf60ee73357ce4ad2bf
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Using the internal Buildroot toolchain backend, makeinfo, whom belongs to
the texinfo package, is required to build gcc and gdb.

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 docs/manual/prerequisite.txt |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/docs/manual/prerequisite.txt b/docs/manual/prerequisite.txt
index 693347b..31d437d 100644
--- a/docs/manual/prerequisite.txt
+++ b/docs/manual/prerequisite.txt
@@ -42,6 +42,7 @@ Mandatory packages
 ** +python+ (version 2.6 or 2.7)
 ** +unzip+
 ** +rsync+
+** +texinfo+ (required for internal Buildroot toolchain backend)
 
 * Source fetching tools:
 ** +wget+

^ permalink raw reply related

* [Buildroot] [git commit] manual: contribute.txt: do not use --summary option with 'git format-patch'
From: Peter Korsgaard @ 2012-11-16  7:43 UTC (permalink / raw)
  To: buildroot

commit: http://git.buildroot.net/buildroot/commit/?id=b04a6d7bda0a0241003a79d026569d6e81e07105
branch: http://git.buildroot.net/buildroot/commit/?id=refs/heads/master

Signed-off-by: Samuel Martin <s.martin49@gmail.com>
Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
---
 docs/manual/contribute.txt |    4 ++--
 1 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/docs/manual/contribute.txt b/docs/manual/contribute.txt
index ddf790d..b2e6e7d 100644
--- a/docs/manual/contribute.txt
+++ b/docs/manual/contribute.txt
@@ -42,8 +42,8 @@ This will generate patch files in the +outgoing+ subdirectory,
 automatically adding the +signed-off-by+ line.
 
 If you want to present the whole patch set in a separate mail, add
-+--cover-letter --summary+ to the previous command line (+man
-git-format-patch+ for further information).
++--cover-letter+ to the previous command line (+man git-format-patch+
+for further information).
 
 Once patch files are generated, you can review/edit the commit message
 before submitting them using your favorite text editor.

^ permalink raw reply related

* [Buildroot] [PATCH 1/2] manual: prerequisite.txt: add texinfo to the mandatory package list
From: Peter Korsgaard @ 2012-11-16  7:44 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <1353046413-3015-1-git-send-email-s.martin49@gmail.com>

>>>>> "Samuel" == Samuel Martin <s.martin49@gmail.com> writes:

 Samuel> Using the internal Buildroot toolchain backend, makeinfo, whom
 Samuel> belongs to the texinfo package, is required to build gcc and
 Samuel> gdb.

Committed both, thanks.

-- 
Bye, Peter Korsgaard

^ permalink raw reply

* [Buildroot] [git commit] qextserialport: don't require Qt GUI module
From: Thomas Petazzoni @ 2012-11-16  7:44 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <87k3tmysez.fsf@dell.be.48ers.dk>


On Fri, 16 Nov 2012 07:26:44 +0100, Peter Korsgaard wrote:
> >>>>> "Arnout" == Arnout Vandecappelle <arnout@mind.be> writes:
> 
>  Arnout>  While we're at it, we could also throw out our patching of the
>  Arnout> platform-specific qws config file: we are anyway replacing all
>  Arnout> "interesting" variables with our own values, so all useful
>  Arnout> content is thrown away.  Instead, we could make our own spec
>  Arnout> file that contains exactly what we need:
> 
>  Arnout> include(../../common/linux.conf)
>  Arnout> include(../../common/gcc-base-unix.conf)
>  Arnout> include(../../common/g++-unix.conf)
>  Arnout> include(../../common/qws.conf)
>  Arnout> <our stuff goes here>
>  Arnout> load(qt_config)
> 
>  Arnout>  What do you think?
> 
> I'm no Qt expert, but it sounds sensible - Thomas?

I don't remember all the details of those spec files, but yes, it
sounds good.

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply

* [Buildroot] [PATCH] kexec: disable on unsupported architectures
From: spdawson at gmail.com @ 2012-11-16  8:13 UTC (permalink / raw)
  To: buildroot

From: Simon Dawson <spdawson@gmail.com>

kexec only supports the following architectures.

  i?86
  powerpc
  powerpc64
  arm*
  s390x|s390
  sh4|sh4a|sh3|sh
  mips*
  cris
  crisv32
  ia64
  x86_64
  alpha

The Buildroot kexec package is available when an unsupported target
architecture is selected, leading to autobuild failures like the following.

  http://autobuild.buildroot.net/results/e706b08abb4fd1987fc4aa970d6be50fc92dc1fa/build-end.log

This patch makes the kexec package available only for the supported
architectures.

Signed-off-by: Simon Dawson <spdawson@gmail.com>
---
 package/kexec/Config.in |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/package/kexec/Config.in b/package/kexec/Config.in
index e59a07b..fe50e06 100644
--- a/package/kexec/Config.in
+++ b/package/kexec/Config.in
@@ -1,6 +1,6 @@
 config BR2_PACKAGE_KEXEC
 	bool "kexec"
-	depends on !BR2_avr32
+	depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || BR2_powerpc || BR2_sh4 || BR2_sh4a || BR2_sh3
 	help
 	  Kexec is a user space utiltity for loading another kernel
 	  and asking the currently running kernel to do something with it.
-- 
1.7.10.4

^ permalink raw reply related

* [Buildroot] Xtensa updates
From: Bernhard Reutner-Fischer @ 2012-11-16  8:53 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <201211152304.37056.yann.morin.1998@free.fr>

On 15 November 2012 23:04, Yann E. MORIN <yann.morin.1998@free.fr> wrote:

> Bernhard, All,
>
> On Monday 12 November 2012 Bernhard Reutner-Fischer wrote:
> > On 12 November 2012 12:35, Thomas Petazzoni <
> > thomas.petazzoni at free-electrons.com> wrote:
> > > In the process, would you mind changing the irker configuration so that
> > > the updates made on the Buildroot Git repository get notified on
> > > #buildroot instead of #uclibc?
> > done.
>
> Would it be possible for you to change the commit notifications to be
> shorter, please?
>

The default was
self.template = '%(bold)s%(project)s:%(reset)s %(green)s%(author)s%(reset)s
%(repo)s:%(yellow)s%(branch)s%(reset)s * %(bold)s%(rev)s%(reset)s /
%(bold)s%(files)s%(reset)s: %(logmsg)s %(brown)s%(url)s%(reset)s'


> Something like:
>   project:branch short-hash author subject
>

 I have changed this to
--template="%(repo)s:%(branch)s %(author)s * %(rev)s %(logmsg)s" \
now.
buildroot: s.martin49 buildroot:master * 2012.08-735-gb04a6d7 /
docs/manual/contribute.txt: manual: contribute.txt: do not use --summary
option with 'git format-patch'
http://git.buildroot.org/buildroot/commit/?id=b04a6d7bda0a0241003a79d026569d6e81e07105
vs.
buildroot:master s.martin49 * 2012.08-735-gb04a6d7 manual: contribute.txt:
do not use --summary option with 'git format-patch'

I still liked the url though.
Ok?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20121116/d461992f/attachment.html>

^ permalink raw reply

* [Buildroot] [PATCH] can-utils: add CAN FD support
From: yegorslists at googlemail.com @ 2012-11-16  8:56 UTC (permalink / raw)
  To: buildroot

From: Yegor Yefremov <yegorslists@googlemail.com>

Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
---
 package/can-utils/can-utils.mk |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/package/can-utils/can-utils.mk b/package/can-utils/can-utils.mk
index ea1dc06..321dc52 100644
--- a/package/can-utils/can-utils.mk
+++ b/package/can-utils/can-utils.mk
@@ -4,7 +4,7 @@
 #
 #############################################################
 
-CAN_UTILS_VERSION = 50775159276d896d8b3102b6dbc658a91a2a1d53
+CAN_UTILS_VERSION = 836d3cc0122ce31a1b732d369cbd27b690c3110f
 CAN_UTILS_SITE = git://gitorious.org/linux-can/can-utils.git
 CAN_UTILS_AUTORECONF = YES
 
-- 
1.7.7

^ permalink raw reply related

* [Buildroot] [git commit] lcdproc: fix autobuilder failures
From: Simon Dawson @ 2012-11-16  9:07 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <20121116004452.635cf645@skate>

On 15 November 2012 23:44, Thomas Petazzoni
<thomas.petazzoni@free-electrons.com> wrote:
> Looking at the build failure (which got triggered again today), I am a
> bit suspicious about this fix. The build failure is:
>
> /scratch/peko/host/usr/bin/ccache /scratch/peko/host/usr/bin/arm-buildroot-linux-uclibcgnueabi-gcc -I/scratch/peko/host/usr/include/freetype2 -I/scratch/peko/host/usr/include   -fPIC -Wall -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64  -pipe -Os  -Wno-unused-function -shared  -o glcd.so glcd-glcd_drv.o glcd-glcd-render.o libLCD.a  glcd-t6963.o t6963_low.o -L/scratch/peko/host/usr/lib -lfreetype -lz -lbz2    -ldl
> /scratch/peko/host/usr/lib/libfreetype.so: file not recognized: File format not recognized
>
> The problem here is not a missing dependency on freetype, but rather
> the fact that we have -I and -L options pointing to host headers and
> libraries, while we are building something on the target. So maybe
> adding freetype and zlib as dependencies work around the problem, but I
> suspect that those wrong -I and -L lines might still be there, no?

Hi Thomas.

If lcdproc finds freetype in the staging area, then the host header
and library search paths do not get added to the build commands. So I
think this patch does more than simply work around the problem.

Simon.

^ permalink raw reply

* [Buildroot] Xtensa updates
From: Bernhard Reutner-Fischer @ 2012-11-16  9:16 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <CAC1BbcTvCC3O_edGmRgNXCPXRn2uq-sA4gs5_Sx=mvLf9XkQ=g@mail.gmail.com>

On 16 November 2012 09:53, Bernhard Reutner-Fischer
<rep.dot.nop@gmail.com>wrote:

>
>
> On 15 November 2012 23:04, Yann E. MORIN <yann.morin.1998@free.fr> wrote:
>
>> Bernhard, All,
>>
>> On Monday 12 November 2012 Bernhard Reutner-Fischer wrote:
>> > On 12 November 2012 12:35, Thomas Petazzoni <
>> > thomas.petazzoni at free-electrons.com> wrote:
>> > > In the process, would you mind changing the irker configuration so
>> that
>> > > the updates made on the Buildroot Git repository get notified on
>> > > #buildroot instead of #uclibc?
>> > done.
>>
>> Would it be possible for you to change the commit notifications to be
>> shorter, please?
>>
>
> The default was
> self.template = '%(bold)s%(project)s:%(reset)s
> %(green)s%(author)s%(reset)s %(repo)s:%(yellow)s%(branch)s%(reset)s *
> %(bold)s%(rev)s%(reset)s / %(bold)s%(files)s%(reset)s: %(logmsg)s
> %(brown)s%(url)s%(reset)s'
>
>
>> Something like:
>>   project:branch short-hash author subject
>>
>
>  I have changed this to
> --template="%(repo)s:%(branch)s %(author)s * %(rev)s %(logmsg)s" \
> now.
> buildroot: s.martin49 buildroot:master * 2012.08-735-gb04a6d7 /
> docs/manual/contribute.txt: manual: contribute.txt: do not use --summary
> option with 'git format-patch'
> http://git.buildroot.org/buildroot/commit/?id=b04a6d7bda0a0241003a79d026569d6e81e07105
> vs.
> buildroot:master s.martin49 * 2012.08-735-gb04a6d7 manual: contribute.txt:
> do not use --summary option with 'git format-patch'
>
> I still liked the url though.
>

I do wonder what esr et al mean with "self.tinyifier" perhaps tinyfier ?
Furthermore one cannot use post requests (as needed by some tinyfiers) due
to the inconvenient way urllib.urlretrieve is called. I'll refrain from
fixing it for now.

perhaps someone enjoys to have a look (with
https://developers.google.com/url-shortener/v1/url/insert#request in mind)..
cheers,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20121116/b5479bfb/attachment.html>

^ permalink raw reply

* [Buildroot] [Bug 5690] New: python3 does not obey to BR2_PACKAGE_PYTHON3_PYC_ONLY=y
From: bugzilla at busybox.net @ 2012-11-16 10:00 UTC (permalink / raw)
  To: buildroot

https://bugs.busybox.net/show_bug.cgi?id=5690

           Summary: python3 does not obey to
                    BR2_PACKAGE_PYTHON3_PYC_ONLY=y
           Product: buildroot
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: minor
          Priority: P5
         Component: Other
        AssignedTo: maxime.ripard at free-electrons.com
        ReportedBy: thomas.petazzoni at free-electrons.com
                CC: buildroot at uclibc.org
   Estimated Hours: 0.0


Even though I have BR2_PACKAGE_PYTHON3_PYC_ONLY=y in my configuration, I have a
lot of *.py files in /usr/lib/python3.3/. The BR2_PACKAGE_PYTHON3_PY_ONLY,
BR2_PACKAGE_PYTHON3_PYC_ONLY and BR2_PACKAGE_PYTHON3_PY_PYC options should be
tested and fixed as needed.

-- 
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

^ permalink raw reply

* [Buildroot] [Bug 5696] New: python3 installation is too large, patches from python2 needed
From: bugzilla at busybox.net @ 2012-11-16 10:01 UTC (permalink / raw)
  To: buildroot

https://bugs.busybox.net/show_bug.cgi?id=5696

           Summary: python3 installation is too large, patches from
                    python2 needed
           Product: buildroot
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: minor
          Priority: P5
         Component: Other
        AssignedTo: maxime.ripard at free-electrons.com
        ReportedBy: thomas.petazzoni at free-electrons.com
                CC: buildroot at uclibc.org
   Estimated Hours: 0.0


Our Python 2 package has a bunch of patches (numbered 100 and above) that allow
to disable the build of a number of extensions that are not necessarily useful
in all situations. Those patches should be upgraded and added in our Python 3
package.

At the moment, the Python 3 installation takes 55 MB in /usr/lib/python3.3/,
which is way too much.

-- 
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

^ permalink raw reply

* [Buildroot] [Bug 5702] New: python3 should install a "python" symbolic link
From: bugzilla at busybox.net @ 2012-11-16 10:02 UTC (permalink / raw)
  To: buildroot

https://bugs.busybox.net/show_bug.cgi?id=5702

           Summary: python3 should install a "python" symbolic link
           Product: buildroot
           Version: unspecified
          Platform: PC
        OS/Version: Linux
            Status: NEW
          Severity: minor
          Priority: P5
         Component: Other
        AssignedTo: maxime.ripard at free-electrons.com
        ReportedBy: thomas.petazzoni at free-electrons.com
                CC: buildroot at uclibc.org
   Estimated Hours: 0.0


When the Python 3 package is selected, and Python 2 is not selected, then
Python 3 should install a python -> python3 symbolic link in /usr/bin.

-- 
Configure bugmail: https://bugs.busybox.net/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.

^ permalink raw reply

* [Buildroot] [PATCH] kexec: disable on unsupported architectures
From: Thomas Petazzoni @ 2012-11-16 10:32 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <1353053588-5156-1-git-send-email-spdawson@gmail.com>

Dear spdawson at gmail.com,

On Fri, 16 Nov 2012 08:13:08 +0000, spdawson at gmail.com wrote:
> diff --git a/package/kexec/Config.in b/package/kexec/Config.in
> index e59a07b..fe50e06 100644
> --- a/package/kexec/Config.in
> +++ b/package/kexec/Config.in
> @@ -1,6 +1,6 @@
>  config BR2_PACKAGE_KEXEC
>  	bool "kexec"
> -	depends on !BR2_avr32
> +	depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || BR2_powerpc || BR2_sh4 || BR2_sh4a || BR2_sh3
>  	help
>  	  Kexec is a user space utiltity for loading another kernel
>  	  and asking the currently running kernel to do something with it.

Provided the line gets split to ~80 characters:

Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply

* [Buildroot] [git commit] lcdproc: fix autobuilder failures
From: Thomas Petazzoni @ 2012-11-16 10:33 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <CAHt8ZCNQwhHyxiVy5pMtq5KJnYKS2RHm=0sOPp2VH5s7BePF3Q@mail.gmail.com>


On Fri, 16 Nov 2012 09:07:55 +0000, Simon Dawson wrote:

> If lcdproc finds freetype in the staging area, then the host header
> and library search paths do not get added to the build commands. So I
> think this patch does more than simply work around the problem.

Ok, thanks!

Best regards,

Thomas
-- 
Thomas Petazzoni, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com

^ permalink raw reply

* [Buildroot] [PATCH v2] kexec: disable on unsupported architectures
From: spdawson at gmail.com @ 2012-11-16 10:42 UTC (permalink / raw)
  To: buildroot

From: Simon Dawson <spdawson@gmail.com>

kexec only supports the following architectures.

  i?86
  powerpc
  powerpc64
  arm*
  s390x|s390
  sh4|sh4a|sh3|sh
  mips*
  cris
  crisv32
  ia64
  x86_64
  alpha

The Buildroot kexec package is available when an unsupported target
architecture is selected, leading to autobuild failures like the following.

  http://autobuild.buildroot.net/results/e706b08abb4fd1987fc4aa970d6be50fc92dc1fa/build-end.log

This patch makes the kexec package available only for the supported
architectures.

Signed-off-by: Simon Dawson <spdawson@gmail.com>
Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 v2: Split long line, as suggested by Thomas Petazzoni, add ack

 package/kexec/Config.in |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/package/kexec/Config.in b/package/kexec/Config.in
index e59a07b..886144f 100644
--- a/package/kexec/Config.in
+++ b/package/kexec/Config.in
@@ -1,6 +1,8 @@
 config BR2_PACKAGE_KEXEC
 	bool "kexec"
-	depends on !BR2_avr32
+	depends on BR2_i386 || BR2_x86_64 || BR2_arm || BR2_armeb || \
+		BR2_mips || BR2_mips64 || BR2_mipsel || BR2_mips64el || \
+		BR2_powerpc || BR2_sh4 || BR2_sh4a || BR2_sh3
 	help
 	  Kexec is a user space utiltity for loading another kernel
 	  and asking the currently running kernel to do something with it.
-- 
1.7.10.4

^ permalink raw reply related

* [Buildroot] [PATCH 1/2] libffi: make blackfin patch a proper git patch
From: Thomas Petazzoni @ 2012-11-16 10:48 UTC (permalink / raw)
  To: buildroot

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 ... => libffi-0001-Add-support-for-Blackfin.patch} |  175 +++++++++++---------
 1 file changed, 99 insertions(+), 76 deletions(-)
 rename package/libffi/{libffi-blackfin-support.patch => libffi-0001-Add-support-for-Blackfin.patch} (93%)

diff --git a/package/libffi/libffi-blackfin-support.patch b/package/libffi/libffi-0001-Add-support-for-Blackfin.patch
similarity index 93%
rename from package/libffi/libffi-blackfin-support.patch
rename to package/libffi/libffi-0001-Add-support-for-Blackfin.patch
index 1af0fce..7a55b40 100644
--- a/package/libffi/libffi-blackfin-support.patch
+++ b/package/libffi/libffi-0001-Add-support-for-Blackfin.patch
@@ -1,4 +1,7 @@
-Add support for Blackfin
+From 643764d29559e2ca6280837069972b1d4790d61a Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Fri, 16 Nov 2012 01:10:10 +0100
+Subject: [PATCH 1/2] Add support for Blackfin
 
 Taken upstream from
 https://github.com/atgreen/libffi/commit/213ed15c70e72d666154c08e2b41dae3f61f20d3. Will
@@ -11,11 +14,25 @@ requires autoconf 2.68.
 Code written by Alexandre Keunecke.
 
 Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ ChangeLog            |    8 +++
+ Makefile.am          |    4 ++
+ Makefile.in          |  160 ++++++++++++++++++++++-------------------
+ README               |    8 ++-
+ configure            |  113 +++++++++++++----------------
+ configure.ac         |    5 ++
+ src/bfin/ffi.c       |  195 ++++++++++++++++++++++++++++++++++++++++++++++++++
+ src/bfin/ffitarget.h |   43 +++++++++++
+ src/bfin/sysv.S      |  177 +++++++++++++++++++++++++++++++++++++++++++++
+ 9 files changed, 574 insertions(+), 139 deletions(-)
+ create mode 100644 src/bfin/ffi.c
+ create mode 100644 src/bfin/ffitarget.h
+ create mode 100644 src/bfin/sysv.S
 
-Index: libffi/ChangeLog
-===================================================================
---- libffi.orig/ChangeLog
-+++ libffi/ChangeLog
+diff --git a/ChangeLog b/ChangeLog
+index f4148a9..376edf7 100644
+--- a/ChangeLog
++++ b/ChangeLog
 @@ -1,3 +1,11 @@
 +2012-04-23  Alexandre Keunecke I. de Mendonca <alexandre.keunecke@gmail.com>
 +
@@ -28,11 +45,11 @@ Index: libffi/ChangeLog
  2012-04-11  Anthony Green  <green@moxielogic.com>
  
  	* Makefile.am (EXTRA_DIST): Add new script.
-Index: libffi/Makefile.am
-===================================================================
---- libffi.orig/Makefile.am
-+++ libffi/Makefile.am
-@@ -27,6 +27,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
+diff --git a/Makefile.am b/Makefile.am
+index 4a855d7..16f32a6 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -27,6 +27,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
  	src/x86/win64.S src/x86/freebsd.S src/x86/ffi64.c \
  	src/x86/unix64.S src/x86/ffitarget.h src/pa/ffitarget.h	\
  	src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c \
@@ -50,10 +67,10 @@ Index: libffi/Makefile.am
  if X86
  nodist_libffi_la_SOURCES += src/x86/ffi.c src/x86/sysv.S
  endif
-Index: libffi/Makefile.in
-===================================================================
---- libffi.orig/Makefile.in
-+++ libffi/Makefile.in
+diff --git a/Makefile.in b/Makefile.in
+index 4308193..f5c10af 100644
+--- a/Makefile.in
++++ b/Makefile.in
 @@ -38,35 +38,36 @@ host_triplet = @host@
  target_triplet = @target@
  @FFI_DEBUG_TRUE at am__append_1 = src/debug.c
@@ -118,7 +135,7 @@ Index: libffi/Makefile.in
  subdir = .
  DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
  	$(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
-@@ -75,17 +76,7 @@ DIST_COMMON = README $(am__configure_dep
+@@ -75,17 +76,7 @@ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
  	compile config.guess config.sub depcomp install-sh ltmain.sh \
  	mdate-sh missing texinfo.tex
  ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -137,7 +154,7 @@ Index: libffi/Makefile.in
  	$(top_srcdir)/configure.ac
  am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  	$(ACLOCAL_M4)
-@@ -126,44 +117,45 @@ am_libffi_la_OBJECTS = src/prep_cif.lo s
+@@ -126,44 +117,45 @@ am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \
  @FFI_DEBUG_TRUE at am__objects_1 = src/debug.lo
  @MIPS_TRUE at am__objects_2 = src/mips/ffi.lo src/mips/o32.lo \
  @MIPS_TRUE@	src/mips/n32.lo
@@ -209,7 +226,7 @@ Index: libffi/Makefile.in
  nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
  	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
  	$(am__objects_6) $(am__objects_7) $(am__objects_8) \
-@@ -173,17 +165,17 @@ nodist_libffi_la_OBJECTS = $(am__objects
+@@ -173,17 +165,17 @@ nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
  	$(am__objects_18) $(am__objects_19) $(am__objects_20) \
  	$(am__objects_21) $(am__objects_22) $(am__objects_23) \
  	$(am__objects_24) $(am__objects_25) $(am__objects_26) \
@@ -231,7 +248,7 @@ Index: libffi/Makefile.in
  	$(am__objects_4) $(am__objects_5) $(am__objects_6) \
  	$(am__objects_7) $(am__objects_8) $(am__objects_9) \
  	$(am__objects_10) $(am__objects_11) $(am__objects_12) \
-@@ -192,8 +184,8 @@ am__objects_30 = $(am__objects_1) $(am__
+@@ -192,8 +184,8 @@ am__objects_30 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
  	$(am__objects_19) $(am__objects_20) $(am__objects_21) \
  	$(am__objects_22) $(am__objects_23) $(am__objects_24) \
  	$(am__objects_25) $(am__objects_26) $(am__objects_27) \
@@ -242,7 +259,7 @@ Index: libffi/Makefile.in
  libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
  	$(nodist_libffi_convenience_la_OBJECTS)
  DEFAULT_INCLUDES = -I. at am__isrc@
-@@ -440,6 +432,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 Change
+@@ -440,6 +432,7 @@ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
  	src/x86/win64.S src/x86/freebsd.S src/x86/ffi64.c \
  	src/x86/unix64.S src/x86/ffitarget.h src/pa/ffitarget.h	\
  	src/pa/ffi.c src/pa/linux.S src/pa/hpux32.S src/frv/ffi.c \
@@ -250,7 +267,7 @@ Index: libffi/Makefile.in
  	src/frv/eabi.S src/frv/ffitarget.h src/dlmalloc.c \
  	src/moxie/ffi.c src/moxie/eabi.S libtool-version \
  	ChangeLog.libffi m4/libtool.m4 m4/lt~obsolete.m4 \
-@@ -508,10 +501,10 @@ nodist_libffi_la_SOURCES = $(am__append_
+@@ -508,10 +501,10 @@ nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
  	$(am__append_18) $(am__append_19) $(am__append_20) \
  	$(am__append_21) $(am__append_22) $(am__append_23) \
  	$(am__append_24) $(am__append_25) $(am__append_26) \
@@ -263,7 +280,7 @@ Index: libffi/Makefile.in
  libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
  AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src -DFFI_BUILDING
  AM_CCASFLAGS = $(AM_CPPFLAGS) -g
-@@ -637,6 +630,16 @@ src/mips/o32.lo: src/mips/$(am__dirstamp
+@@ -637,6 +630,16 @@ src/mips/o32.lo: src/mips/$(am__dirstamp) \
  	src/mips/$(DEPDIR)/$(am__dirstamp)
  src/mips/n32.lo: src/mips/$(am__dirstamp) \
  	src/mips/$(DEPDIR)/$(am__dirstamp)
@@ -317,7 +334,7 @@ Index: libffi/Makefile.in
  	-rm -f src/cris/$(DEPDIR)/$(am__dirstamp)
  	-rm -f src/cris/$(am__dirstamp)
  	-rm -f src/frv/$(DEPDIR)/$(am__dirstamp)
-@@ -1670,7 +1682,7 @@ clean-am: clean-aminfo clean-generic cle
+@@ -1670,7 +1682,7 @@ clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
  
  distclean: distclean-recursive
  	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
@@ -335,10 +352,43 @@ Index: libffi/Makefile.in
  	-rm -f Makefile
  maintainer-clean-am: distclean-am maintainer-clean-aminfo \
  	maintainer-clean-generic maintainer-clean-vti
-Index: libffi/configure
-===================================================================
---- libffi.orig/configure
-+++ libffi/configure
+diff --git a/README b/README
+index bcc7178..ec240a4 100644
+--- a/README
++++ b/README
+@@ -1,8 +1,8 @@
+ Status
+ ======
+ 
+-libffi-3.0.11 was released on April 11, 2012.  Check the libffi web
+-page for updates: <URL:http://sourceware.org/libffi/>.
++libffi-3.0.XX was released on XXXXXXX.  Check the libffi web page for
++updates: <URL:http://sourceware.org/libffi/>.
+ 
+ 
+ What is libffi?
+@@ -56,6 +56,7 @@ tested:
+ | ARM          | Linux            |
+ | ARM          | iOS              |
+ | AVR32        | Linux            |
++| Blackfin     | uClinux          |
+ | HPPA         | HPUX             |
+ | IA-64        | Linux            |
+ | M68K         | FreeMiNT         |
+@@ -148,6 +149,9 @@ History
+ 
+ See the ChangeLog files for details.
+ 
++3.0.12 XXX-XX-XX
++        Add Blackfin support.
++
+ 3.0.11 Apr-11-12
+         Add support for variadic functions (ffi_prep_cif_var).
+ 	Add Linux/x32 support.
+diff --git a/configure b/configure
+index 91b2317..4ccba55 100755
+--- a/configure
++++ b/configure
 @@ -679,6 +679,8 @@ X86_FALSE
  X86_TRUE
  SPARC_FALSE
@@ -348,7 +398,7 @@ Index: libffi/configure
  MIPS_FALSE
  MIPS_TRUE
  AM_LTLDFLAGS
-@@ -6840,14 +6842,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
+@@ -6840,14 +6842,7 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*)
  	    LD="${LD-ld} -m elf_i386_fbsd"
  	    ;;
  	  x86_64-*linux*)
@@ -364,7 +414,7 @@ Index: libffi/configure
  	    ;;
  	  ppc64-*linux*|powerpc64-*linux*)
  	    LD="${LD-ld} -m elf32ppclinux"
-@@ -8418,10 +8413,6 @@ _lt_linker_boilerplate=`cat conftest.err
+@@ -8418,10 +8413,6 @@ _lt_linker_boilerplate=`cat conftest.err`
  $RM -r conftest*
  
  
@@ -480,7 +530,7 @@ Index: libffi/configure
   if test x$TARGET = xSPARC; then
    SPARC_TRUE=
    SPARC_FALSE='#'
-@@ -14134,40 +14150,7 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUI
+@@ -14134,40 +14150,7 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
   esac
  
  
@@ -522,7 +572,7 @@ Index: libffi/configure
  
  if test x$TARGET = xSPARC; then
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5
-@@ -14739,6 +14722,10 @@ if test -z "${MIPS_TRUE}" && test -z "${
+@@ -14739,6 +14722,10 @@ if test -z "${MIPS_TRUE}" && test -z "${MIPS_FALSE}"; then
    as_fn_error $? "conditional \"MIPS\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
  fi
@@ -533,10 +583,10 @@ Index: libffi/configure
  if test -z "${SPARC_TRUE}" && test -z "${SPARC_FALSE}"; then
    as_fn_error $? "conditional \"SPARC\" was never defined.
  Usually this means the macro was only invoked conditionally." "$LINENO" 5
-Index: libffi/configure.ac
-===================================================================
---- libffi.orig/configure.ac
-+++ libffi/configure.ac
+diff --git a/configure.ac b/configure.ac
+index 1021769..9b946a2 100644
+--- a/configure.ac
++++ b/configure.ac
 @@ -75,6 +75,10 @@ case "$host" in
  	TARGET=AVR32; TARGETDIR=avr32
  	;;
@@ -556,10 +606,11 @@ Index: libffi/configure.ac
  AM_CONDITIONAL(SPARC, test x$TARGET = xSPARC)
  AM_CONDITIONAL(X86, test x$TARGET = xX86)
  AM_CONDITIONAL(X86_FREEBSD, test x$TARGET = xX86_FREEBSD)
-Index: libffi/src/bfin/ffi.c
-===================================================================
+diff --git a/src/bfin/ffi.c b/src/bfin/ffi.c
+new file mode 100644
+index 0000000..0beccc1
 --- /dev/null
-+++ libffi/src/bfin/ffi.c
++++ b/src/bfin/ffi.c
 @@ -0,0 +1,195 @@
 +/* -----------------------------------------------------------------------
 +   ffi.c - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>
@@ -756,10 +807,11 @@ Index: libffi/src/bfin/ffi.c
 +
 +
 +
-Index: libffi/src/bfin/ffitarget.h
-===================================================================
+diff --git a/src/bfin/ffitarget.h b/src/bfin/ffitarget.h
+new file mode 100644
+index 0000000..2175c01
 --- /dev/null
-+++ libffi/src/bfin/ffitarget.h
++++ b/src/bfin/ffitarget.h
 @@ -0,0 +1,43 @@
 +/* -----------------------------------------------------------------------
 +   ffitarget.h - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>
@@ -804,10 +856,11 @@ Index: libffi/src/bfin/ffitarget.h
 +
 +#endif
 +
-Index: libffi/src/bfin/sysv.S
-===================================================================
+diff --git a/src/bfin/sysv.S b/src/bfin/sysv.S
+new file mode 100644
+index 0000000..ae7a152
 --- /dev/null
-+++ libffi/src/bfin/sysv.S
++++ b/src/bfin/sysv.S
 @@ -0,0 +1,177 @@
 +/* -----------------------------------------------------------------------
 +   sysv.S - Copyright (c) 2012  Alexandre K. I. de Mendonca <alexandre.keunecke@gmail.com>
@@ -986,36 +1039,6 @@ Index: libffi/src/bfin/sysv.S
 +
 +.size _ffi_call_SYSV,.-_ffi_call_SYSV;
 +.endfunc
-Index: libffi/README
-===================================================================
---- libffi.orig/README
-+++ libffi/README
-@@ -1,8 +1,8 @@
- Status
- ======
- 
--libffi-3.0.11 was released on April 11, 2012.  Check the libffi web
--page for updates: <URL:http://sourceware.org/libffi/>.
-+libffi-3.0.XX was released on XXXXXXX.  Check the libffi web page for
-+updates: <URL:http://sourceware.org/libffi/>.
- 
- 
- What is libffi?
-@@ -56,6 +56,7 @@ tested:
- | ARM          | Linux            |
- | ARM          | iOS              |
- | AVR32        | Linux            |
-+| Blackfin     | uClinux          |
- | HPPA         | HPUX             |
- | IA-64        | Linux            |
- | M68K         | FreeMiNT         |
-@@ -148,6 +149,9 @@ History
- 
- See the ChangeLog files for details.
- 
-+3.0.12 XXX-XX-XX
-+        Add Blackfin support.
-+
- 3.0.11 Apr-11-12
-         Add support for variadic functions (ffi_prep_cif_var).
- 	Add Linux/x32 support.
+-- 
+1.7.9.5
+
-- 
1.7.9.5

^ permalink raw reply related

* [Buildroot] [PATCH 2/2] libffi: add aarch64 support from upstream
From: Thomas Petazzoni @ 2012-11-16 10:48 UTC (permalink / raw)
  To: buildroot
In-Reply-To: <1353062890-30563-1-git-send-email-thomas.petazzoni@free-electrons.com>

Fixes build failures like:

  http://autobuild.buildroot.org/results/6b4b4c414d366c936df480747c78272050c84293/build-end.log

Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
---
 ...fi-0002-Add-aarch64-support-from-upstream.patch | 2326 ++++++++++++++++++++
 1 file changed, 2326 insertions(+)
 create mode 100644 package/libffi/libffi-0002-Add-aarch64-support-from-upstream.patch

diff --git a/package/libffi/libffi-0002-Add-aarch64-support-from-upstream.patch b/package/libffi/libffi-0002-Add-aarch64-support-from-upstream.patch
new file mode 100644
index 0000000..a407130
--- /dev/null
+++ b/package/libffi/libffi-0002-Add-aarch64-support-from-upstream.patch
@@ -0,0 +1,2326 @@
+From c77c9625dd63138512ce0f67e07dd254771e566f Mon Sep 17 00:00:00 2001
+From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+Date: Fri, 16 Nov 2012 01:15:28 +0100
+Subject: [PATCH 2/2] Add aarch64 support from upstream
+
+Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
+---
+ ChangeLog                |   27 ++
+ Makefile.am              |    4 +
+ Makefile.in              |   44 +-
+ README                   |    3 +
+ configure                |  185 +++++---
+ configure.ac             |    5 +
+ src/aarch64/ffi.c        | 1076 ++++++++++++++++++++++++++++++++++++++++++++++
+ src/aarch64/ffitarget.h  |   59 +++
+ src/aarch64/sysv.S       |  307 +++++++++++++
+ testsuite/lib/libffi.exp |    4 +
+ 10 files changed, 1647 insertions(+), 67 deletions(-)
+ create mode 100644 src/aarch64/ffi.c
+ create mode 100644 src/aarch64/ffitarget.h
+ create mode 100644 src/aarch64/sysv.S
+
+diff --git a/ChangeLog b/ChangeLog
+index 376edf7..4e8ea91 100644
+--- a/ChangeLog
++++ b/ChangeLog
+@@ -1,3 +1,30 @@
++2012-10-30  James Greenhalgh  <james.greenhalgh@arm.com>
++            Marcus Shawcroft  <marcus.shawcroft@arm.com>
++
++        * README: Add details of aarch64 port.
++        * src/aarch64/ffi.c: New.
++        * src/aarch64/ffitarget.h: Likewise.
++        * src/aarch64/sysv.S: Likewise.
++	* Makefile.am: Support aarch64.
++	* configure.ac: Support aarch64.
++	* Makefile.in, configure: Rebuilt.
++
++2012-10-30  James Greenhalgh  <james.greenhalgh@arm.com>
++            Marcus Shawcroft  <marcus.shawcroft@arm.com>
++
++        * testsuite/lib/libffi.exp: Add support for aarch64.
++        * testsuite/libffi.call/cls_struct_va1.c: New.
++        * testsuite/libffi.call/cls_uchar_va.c: Likewise.
++        * testsuite/libffi.call/cls_uint_va.c: Likewise.
++        * testsuite/libffi.call/cls_ulong_va.c: Liekwise.
++        * testsuite/libffi.call/cls_ushort_va.c: Likewise.
++        * testsuite/libffi.call/nested_struct11.c: Likewise.
++        * testsuite/libffi.call/uninitialized.c: Likewise.
++        * testsuite/libffi.call/va_1.c: Likewise.
++        * testsuite/libffi.call/va_struct1.c: Likewise.
++        * testsuite/libffi.call/va_struct2.c: Likewise.
++        * testsuite/libffi.call/va_struct3.c: Likewise.
++
+ 2012-04-23  Alexandre Keunecke I. de Mendonca <alexandre.keunecke@gmail.com>
+ 
+ 	* configure.ac: Add Blackfin/sysv support
+diff --git a/Makefile.am b/Makefile.am
+index 16f32a6..bd4d5c4 100644
+--- a/Makefile.am
++++ b/Makefile.am
+@@ -5,6 +5,7 @@ AUTOMAKE_OPTIONS = foreign subdir-objects
+ SUBDIRS = include testsuite man
+ 
+ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
++	src/aarch64/ffi.c src/aarch64/ffitarget.h \
+ 	src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
+ 	src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \
+ 	src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \
+@@ -151,6 +152,9 @@ endif
+ if POWERPC_FREEBSD
+ nodist_libffi_la_SOURCES += src/powerpc/ffi.c src/powerpc/sysv.S src/powerpc/ppc_closure.S
+ endif
++if AARCH64
++nodist_libffi_la_SOURCES += src/aarch64/sysv.S src/aarch64/ffi.c
++endif
+ if ARM
+ nodist_libffi_la_SOURCES += src/arm/sysv.S src/arm/ffi.c
+ if FFI_EXEC_TRAMPOLINE_TABLE
+diff --git a/Makefile.in b/Makefile.in
+index f5c10af..c4f4470 100644
+--- a/Makefile.in
++++ b/Makefile.in
+@@ -65,9 +65,10 @@ target_triplet = @target@
+ @SH64_TRUE at am__append_27 = src/sh64/sysv.S src/sh64/ffi.c
+ @PA_LINUX_TRUE at am__append_28 = src/pa/linux.S src/pa/ffi.c
+ @PA_HPUX_TRUE at am__append_29 = src/pa/hpux32.S src/pa/ffi.c
++ at AARCH64_TRUE@am__append_30 = src/aarch64/sysv.S src/aarch64/ffi.c
+ # Build debug. Define FFI_DEBUG on the commandline so that, when building with
+ # MSVC, it can link against the debug CRT.
+- at FFI_DEBUG_TRUE@am__append_30 = -DFFI_DEBUG
++ at FFI_DEBUG_TRUE@am__append_31 = -DFFI_DEBUG
+ subdir = .
+ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
+ 	$(srcdir)/Makefile.in $(srcdir)/doc/stamp-vti \
+@@ -156,6 +157,7 @@ am_libffi_la_OBJECTS = src/prep_cif.lo src/types.lo src/raw_api.lo \
+ @SH64_TRUE at am__objects_27 = src/sh64/sysv.lo src/sh64/ffi.lo
+ @PA_LINUX_TRUE at am__objects_28 = src/pa/linux.lo src/pa/ffi.lo
+ @PA_HPUX_TRUE at am__objects_29 = src/pa/hpux32.lo src/pa/ffi.lo
++ at AARCH64_TRUE@am__objects_29 = src/aarch64/sysv.lo src/aarch64/ffi.lo
+ nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+ 	$(am__objects_3) $(am__objects_4) $(am__objects_5) \
+ 	$(am__objects_6) $(am__objects_7) $(am__objects_8) \
+@@ -165,17 +167,18 @@ nodist_libffi_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
+ 	$(am__objects_18) $(am__objects_19) $(am__objects_20) \
+ 	$(am__objects_21) $(am__objects_22) $(am__objects_23) \
+ 	$(am__objects_24) $(am__objects_25) $(am__objects_26) \
+-	$(am__objects_27) $(am__objects_28) $(am__objects_29)
++	$(am__objects_27) $(am__objects_28) $(am__objects_29) \
++	$(am__objects_30)
+ libffi_la_OBJECTS = $(am_libffi_la_OBJECTS) \
+ 	$(nodist_libffi_la_OBJECTS)
+ libffi_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ 	$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ 	$(libffi_la_LDFLAGS) $(LDFLAGS) -o $@
+ libffi_convenience_la_LIBADD =
+-am__objects_30 = src/prep_cif.lo src/types.lo src/raw_api.lo \
++am__objects_31 = src/prep_cif.lo src/types.lo src/raw_api.lo \
+ 	src/java_raw_api.lo src/closures.lo
+-am_libffi_convenience_la_OBJECTS = $(am__objects_30)
+-am__objects_31 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
++am_libffi_convenience_la_OBJECTS = $(am__objects_31)
++am__objects_32 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ 	$(am__objects_4) $(am__objects_5) $(am__objects_6) \
+ 	$(am__objects_7) $(am__objects_8) $(am__objects_9) \
+ 	$(am__objects_10) $(am__objects_11) $(am__objects_12) \
+@@ -185,7 +188,7 @@ am__objects_31 = $(am__objects_1) $(am__objects_2) $(am__objects_3) \
+ 	$(am__objects_22) $(am__objects_23) $(am__objects_24) \
+ 	$(am__objects_25) $(am__objects_26) $(am__objects_27) \
+ 	$(am__objects_28) $(am__objects_29)
+-nodist_libffi_convenience_la_OBJECTS = $(am__objects_31)
++nodist_libffi_convenience_la_OBJECTS = $(am__objects_32)
+ libffi_convenience_la_OBJECTS = $(am_libffi_convenience_la_OBJECTS) \
+ 	$(nodist_libffi_convenience_la_OBJECTS)
+ DEFAULT_INCLUDES = -I. at am__isrc@
+@@ -410,6 +413,7 @@ top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = foreign subdir-objects
+ SUBDIRS = include testsuite man
+ EXTRA_DIST = LICENSE ChangeLog.v1 ChangeLog.libgcj configure.host \
++	src/aarch64/ffi.c src/aarch64/ffitarget.h \
+ 	src/alpha/ffi.c src/alpha/osf.S src/alpha/ffitarget.h \
+ 	src/arm/ffi.c src/arm/sysv.S src/arm/ffitarget.h \
+ 	src/avr32/ffi.c src/avr32/sysv.S src/avr32/ffitarget.h \
+@@ -501,10 +505,11 @@ nodist_libffi_la_SOURCES = $(am__append_1) $(am__append_2) \
+ 	$(am__append_18) $(am__append_19) $(am__append_20) \
+ 	$(am__append_21) $(am__append_22) $(am__append_23) \
+ 	$(am__append_24) $(am__append_25) $(am__append_26) \
+-	$(am__append_27) $(am__append_28) $(am__append_29)
++	$(am__append_27) $(am__append_28) $(am__append_29) \
++	$(am__append_30)
+ libffi_convenience_la_SOURCES = $(libffi_la_SOURCES)
+ nodist_libffi_convenience_la_SOURCES = $(nodist_libffi_la_SOURCES)
+-AM_CFLAGS = -g $(am__append_30)
++AM_CFLAGS = -g $(am__append_31)
+ libffi_la_LDFLAGS = -version-info `grep -v '^\#' $(srcdir)/libtool-version` $(LTLDFLAGS) $(AM_LTLDFLAGS)
+ AM_CPPFLAGS = -I. -I$(top_srcdir)/include -Iinclude -I$(top_srcdir)/src -DFFI_BUILDING
+ AM_CCASFLAGS = $(AM_CPPFLAGS) -g
+@@ -640,6 +645,16 @@ src/bfin/ffi.lo: src/bfin/$(am__dirstamp) \
+ 	src/bfin/$(DEPDIR)/$(am__dirstamp)
+ src/bfin/sysv.lo: src/bfin/$(am__dirstamp) \
+ 	src/bfin/$(DEPDIR)/$(am__dirstamp)
++src/aarch64/$(am__dirstamp):
++	@$(MKDIR_P) src/aarch64
++	@: > src/aarch64/$(am__dirstamp)
++src/aarch64/$(DEPDIR)/$(am__dirstamp):
++	@$(MKDIR_P) src/aarch64/$(DEPDIR)
++	@: > src/aarch64/$(DEPDIR)/$(am__dirstamp)
++src/aarch64/ffi.lo: src/aarch64/$(am__dirstamp) \
++	src/aarch64/$(DEPDIR)/$(am__dirstamp)
++src/aarch64/sysv.lo: src/aarch64/$(am__dirstamp) \
++	src/aarch64/$(DEPDIR)/$(am__dirstamp)
+ src/x86/$(am__dirstamp):
+ 	@$(MKDIR_P) src/x86
+ 	@: > src/x86/$(am__dirstamp)
+@@ -859,6 +874,10 @@ mostlyclean-compile:
+ 	-rm -f src/bfin/ffi.lo
+ 	-rm -f src/bfin/sysv.$(OBJEXT)
+ 	-rm -f src/bfin/sysv.lo
++	-rm -f src/aarch64/ffi.$(OBJEXT)
++	-rm -f src/aarch64/ffi.lo
++	-rm -f src/aarch64/sysv.$(OBJEXT)
++	-rm -f src/aarch64/sysv.lo
+ 	-rm -f src/closures.$(OBJEXT)
+ 	-rm -f src/closures.lo
+ 	-rm -f src/cris/ffi.$(OBJEXT)
+@@ -973,6 +992,8 @@ distclean-compile:
+ @AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/prep_cif.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/raw_api.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at src/$(DEPDIR)/types.Plo at am__quote@
++ at AMDEP_TRUE@@am__include@ @am__quote at src/aarch64/$(DEPDIR)/ffi.Plo at am__quote@
++ at AMDEP_TRUE@@am__include@ @am__quote at src/aarch64/$(DEPDIR)/sysv.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at src/alpha/$(DEPDIR)/ffi.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at src/alpha/$(DEPDIR)/osf.Plo at am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote at src/arm/$(DEPDIR)/ffi.Plo at am__quote@
+@@ -1083,6 +1104,7 @@ mostlyclean-libtool:
+ clean-libtool:
+ 	-rm -rf .libs _libs
+ 	-rm -rf src/.libs src/_libs
++	-rm -rf src/aarch64/.libs src/aarch64/_libs
+ 	-rm -rf src/alpha/.libs src/alpha/_libs
+ 	-rm -rf src/arm/.libs src/arm/_libs
+ 	-rm -rf src/avr32/.libs src/avr32/_libs
+@@ -1635,6 +1657,8 @@ distclean-generic:
+ 	-rm -f doc/$(am__dirstamp)
+ 	-rm -f src/$(DEPDIR)/$(am__dirstamp)
+ 	-rm -f src/$(am__dirstamp)
++	-rm -f src/aarch64/$(DEPDIR)/$(am__dirstamp)
++	-rm -f src/aarch64/$(am__dirstamp)
+ 	-rm -f src/alpha/$(DEPDIR)/$(am__dirstamp)
+ 	-rm -f src/alpha/$(am__dirstamp)
+ 	-rm -f src/arm/$(DEPDIR)/$(am__dirstamp)
+@@ -1682,7 +1706,7 @@ clean-am: clean-aminfo clean-generic clean-libLTLIBRARIES \
+ 
+ distclean: distclean-recursive
+ 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+-	-rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
++	-rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
+ 	-rm -f Makefile
+ distclean-am: clean-am distclean-compile distclean-generic \
+ 	distclean-hdr distclean-libtool distclean-tags
+@@ -1802,7 +1826,7 @@ installcheck-am:
+ maintainer-clean: maintainer-clean-recursive
+ 	-rm -f $(am__CONFIG_DISTCLEAN_FILES)
+ 	-rm -rf $(top_srcdir)/autom4te.cache
+-	-rm -rf src/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
++	-rm -rf src/$(DEPDIR) src/aarch64/$(DEPDIR) src/alpha/$(DEPDIR) src/arm/$(DEPDIR) src/avr32/$(DEPDIR) src/bfin/$(DEPDIR) src/cris/$(DEPDIR) src/frv/$(DEPDIR) src/ia64/$(DEPDIR) src/m32r/$(DEPDIR) src/m68k/$(DEPDIR) src/mips/$(DEPDIR) src/moxie/$(DEPDIR) src/pa/$(DEPDIR) src/powerpc/$(DEPDIR) src/s390/$(DEPDIR) src/sh/$(DEPDIR) src/sh64/$(DEPDIR) src/sparc/$(DEPDIR) src/x86/$(DEPDIR)
+ 	-rm -f Makefile
+ maintainer-clean-am: distclean-am maintainer-clean-aminfo \
+ 	maintainer-clean-generic maintainer-clean-vti
+diff --git a/README b/README
+index ec240a4..9aa99f4 100644
+--- a/README
++++ b/README
+@@ -51,6 +51,7 @@ tested:
+ |--------------+------------------|
+ | Architecture | Operating System |
+ |--------------+------------------|
++| AArch64         | Linux            |
+ | Alpha        | Linux            |
+ | Alpha        | Tru64            |
+ | ARM          | Linux            |
+@@ -151,6 +152,7 @@ See the ChangeLog files for details.
+ 
+ 3.0.12 XXX-XX-XX
+         Add Blackfin support.
++	Add AArch64 support.
+ 
+ 3.0.11 Apr-11-12
+         Add support for variadic functions (ffi_prep_cif_var).
+@@ -320,6 +322,7 @@ Thorup.
+ Major processor architecture ports were contributed by the following
+ developers:
+ 
++aarch64		Marcus Shawcroft, James Greenhalgh
+ alpha		Richard Henderson
+ arm		Raffaele Sena
+ cris		Simon Posnjak, Hans-Peter Nilsson
+diff --git a/configure b/configure
+index 4ccba55..419275b 100755
+--- a/configure
++++ b/configure
+@@ -649,6 +649,8 @@ AVR32_FALSE
+ AVR32_TRUE
+ ARM_FALSE
+ ARM_TRUE
++AARCH64_FALSE
++AARCH64_TRUE
+ POWERPC_FREEBSD_FALSE
+ POWERPC_FREEBSD_TRUE
+ POWERPC_DARWIN_FALSE
+@@ -1478,7 +1480,7 @@ Optional Features:
+ Optional Packages:
+   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
+   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
+-  --with-pic              try to use only PIC/non-PIC objects [default=use
++  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
+                           both]
+   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+   --with-sysroot=DIR Search for dependent libraries within DIR
+@@ -5276,6 +5278,11 @@ else
+     lt_cv_sys_max_cmd_len=196608
+     ;;
+ 
++  os2*)
++    # The test takes a long time on OS/2.
++    lt_cv_sys_max_cmd_len=8192
++    ;;
++
+   osf*)
+     # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
+     # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
+@@ -5315,7 +5322,7 @@ else
+       # If test is not a shell built-in, we'll probably end up computing a
+       # maximum length that is only half of the actual maximum length, but
+       # we can't tell.
+-      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
++      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
+ 	         = "X$teststring$teststring"; } >/dev/null 2>&1 &&
+ 	      test $i != 17 # 1/2 MB should be enough
+       do
+@@ -5744,7 +5751,7 @@ irix5* | irix6* | nonstopux*)
+   lt_cv_deplibs_check_method=pass_all
+   ;;
+ 
+-# This must be Linux ELF.
++# This must be glibc/ELF.
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+   lt_cv_deplibs_check_method=pass_all
+   ;;
+@@ -6538,6 +6545,7 @@ for ac_symprfx in "" "_"; do
+     # which start with @ or ?.
+     lt_cv_sys_global_symbol_pipe="$AWK '"\
+ "     {last_section=section; section=\$ 3};"\
++"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
+ "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
+ "     \$ 0!~/External *\|/{next};"\
+ "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
+@@ -6926,7 +6934,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
+     CFLAGS="$SAVE_CFLAGS"
+   fi
+   ;;
+-sparc*-*solaris*)
++*-*solaris*)
+   # Find out which ABI we are using.
+   echo 'int i;' > conftest.$ac_ext
+   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
+@@ -6937,7 +6945,20 @@ sparc*-*solaris*)
+     case `/usr/bin/file conftest.o` in
+     *64-bit*)
+       case $lt_cv_prog_gnu_ld in
+-      yes*) LD="${LD-ld} -m elf64_sparc" ;;
++      yes*)
++        case $host in
++        i?86-*-solaris*)
++          LD="${LD-ld} -m elf_x86_64"
++          ;;
++        sparc*-*-solaris*)
++          LD="${LD-ld} -m elf64_sparc"
++          ;;
++        esac
++        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
++        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
++          LD="${LD-ld}_sol2"
++        fi
++        ;;
+       *)
+ 	if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
+ 	  LD="${LD-ld} -64"
+@@ -7577,7 +7598,13 @@ else
+ 	$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
+ 	  -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
+         _lt_result=$?
+-	if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
++	# If there is a non-empty error log, and "single_module"
++	# appears in it, assume the flag caused a linker warning
++        if test -s conftest.err && $GREP single_module conftest.err; then
++	  cat conftest.err >&5
++	# Otherwise, if the output was created with a 0 exit code from
++	# the compiler, it worked.
++	elif test -f libconftest.dylib && test $_lt_result -eq 0; then
+ 	  lt_cv_apple_cc_single_mod=yes
+ 	else
+ 	  cat conftest.err >&5
+@@ -7588,6 +7615,7 @@ else
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
+ $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
++
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
+ $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
+ if ${lt_cv_ld_exported_symbols_list+:} false; then :
+@@ -7620,6 +7648,7 @@ rm -f core conftest.err conftest.$ac_objext \
+ fi
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
+ $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
++
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
+ $as_echo_n "checking for -force_load linker flag... " >&6; }
+ if ${lt_cv_ld_force_load+:} false; then :
+@@ -7641,7 +7670,9 @@ _LT_EOF
+       echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
+       $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
+       _lt_result=$?
+-      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
++      if test -s conftest.err && $GREP force_load conftest.err; then
++	cat conftest.err >&5
++      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
+ 	lt_cv_ld_force_load=yes
+       else
+ 	cat conftest.err >&5
+@@ -8046,7 +8077,22 @@ fi
+ 
+ # Check whether --with-pic was given.
+ if test "${with_pic+set}" = set; then :
+-  withval=$with_pic; pic_mode="$withval"
++  withval=$with_pic; lt_p=${PACKAGE-default}
++    case $withval in
++    yes|no) pic_mode=$withval ;;
++    *)
++      pic_mode=default
++      # Look at the argument we got.  We use all the common list separators.
++      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
++      for lt_pkg in $withval; do
++	IFS="$lt_save_ifs"
++	if test "X$lt_pkg" = "X$lt_p"; then
++	  pic_mode=yes
++	fi
++      done
++      IFS="$lt_save_ifs"
++      ;;
++    esac
+ else
+   pic_mode=default
+ fi
+@@ -8124,6 +8170,10 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+ 
+ 
+ 
++
++
++
++
+ test -z "$LN_S" && LN_S="ln -s"
+ 
+ 
+@@ -8579,7 +8629,9 @@ lt_prog_compiler_static=
+     case $cc_basename in
+     nvcc*) # Cuda Compiler Driver 2.2
+       lt_prog_compiler_wl='-Xlinker '
+-      lt_prog_compiler_pic='-Xcompiler -fPIC'
++      if test -n "$lt_prog_compiler_pic"; then
++        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
++      fi
+       ;;
+     esac
+   else
+@@ -8670,18 +8722,33 @@ lt_prog_compiler_static=
+ 	;;
+       *)
+ 	case `$CC -V 2>&1 | sed 5q` in
+-	*Sun\ F* | *Sun*Fortran*)
++	*Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
+ 	  # Sun Fortran 8.3 passes all unrecognized flags to the linker
+ 	  lt_prog_compiler_pic='-KPIC'
+ 	  lt_prog_compiler_static='-Bstatic'
+ 	  lt_prog_compiler_wl=''
+ 	  ;;
++	*Sun\ F* | *Sun*Fortran*)
++	  lt_prog_compiler_pic='-KPIC'
++	  lt_prog_compiler_static='-Bstatic'
++	  lt_prog_compiler_wl='-Qoption ld '
++	  ;;
+ 	*Sun\ C*)
+ 	  # Sun C 5.9
+ 	  lt_prog_compiler_pic='-KPIC'
+ 	  lt_prog_compiler_static='-Bstatic'
+ 	  lt_prog_compiler_wl='-Wl,'
+ 	  ;;
++        *Intel*\ [CF]*Compiler*)
++	  lt_prog_compiler_wl='-Wl,'
++	  lt_prog_compiler_pic='-fPIC'
++	  lt_prog_compiler_static='-static'
++	  ;;
++	*Portland\ Group*)
++	  lt_prog_compiler_wl='-Wl,'
++	  lt_prog_compiler_pic='-fpic'
++	  lt_prog_compiler_static='-Bstatic'
++	  ;;
+ 	esac
+ 	;;
+       esac
+@@ -9043,7 +9110,6 @@ $as_echo_n "checking whether the $compiler linker ($LD) supports shared librarie
+   hardcode_direct=no
+   hardcode_direct_absolute=no
+   hardcode_libdir_flag_spec=
+-  hardcode_libdir_flag_spec_ld=
+   hardcode_libdir_separator=
+   hardcode_minus_L=no
+   hardcode_shlibpath_var=unsupported
+@@ -9293,8 +9359,7 @@ _LT_EOF
+ 	xlf* | bgf* | bgxlf* | mpixlf*)
+ 	  # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
+ 	  whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
+-	  hardcode_libdir_flag_spec=
+-	  hardcode_libdir_flag_spec_ld='-rpath $libdir'
++	  hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ 	  archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
+ 	  if test "x$supports_anon_versioning" = xyes; then
+ 	    archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
+@@ -9673,6 +9738,7 @@ fi
+ 	# The linker will not automatically build a static lib if we build a DLL.
+ 	# _LT_TAGVAR(old_archive_from_new_cmds, )='true'
+ 	enable_shared_with_static_runtimes=yes
++	exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
+ 	export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
+ 	# Don't use ranlib
+ 	old_postinstall_cmds='chmod 644 $oldlib'
+@@ -9718,6 +9784,7 @@ fi
+   hardcode_shlibpath_var=unsupported
+   if test "$lt_cv_ld_force_load" = "yes"; then
+     whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
++
+   else
+     whole_archive_flag_spec=''
+   fi
+@@ -9746,10 +9813,6 @@ fi
+       hardcode_shlibpath_var=no
+       ;;
+ 
+-    freebsd1*)
+-      ld_shlibs=no
+-      ;;
+-
+     # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
+     # support.  Future versions do this automatically, but an explicit c++rt0.o
+     # does not break anything, and helps significantly (at the cost of a little
+@@ -9762,7 +9825,7 @@ fi
+       ;;
+ 
+     # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+-    freebsd2*)
++    freebsd2.*)
+       archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+       hardcode_direct=yes
+       hardcode_minus_L=yes
+@@ -9801,7 +9864,6 @@ fi
+       fi
+       if test "$with_gnu_ld" = no; then
+ 	hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+-	hardcode_libdir_flag_spec_ld='+b $libdir'
+ 	hardcode_libdir_separator=:
+ 	hardcode_direct=yes
+ 	hardcode_direct_absolute=yes
+@@ -10425,11 +10487,6 @@ esac
+ 
+ 
+ 
+-
+-
+-
+-
+-
+   { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
+ $as_echo_n "checking dynamic linker characteristics... " >&6; }
+ 
+@@ -10519,7 +10576,7 @@ need_version=unknown
+ 
+ case $host_os in
+ aix3*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
+   shlibpath_var=LIBPATH
+ 
+@@ -10528,7 +10585,7 @@ aix3*)
+   ;;
+ 
+ aix[4-9]*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   hardcode_into_libs=yes
+@@ -10593,7 +10650,7 @@ beos*)
+   ;;
+ 
+ bsdi[45]*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+   soname_spec='${libname}${release}${shared_ext}$major'
+@@ -10732,7 +10789,7 @@ darwin* | rhapsody*)
+   ;;
+ 
+ dgux*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
+@@ -10740,10 +10797,6 @@ dgux*)
+   shlibpath_var=LD_LIBRARY_PATH
+   ;;
+ 
+-freebsd1*)
+-  dynamic_linker=no
+-  ;;
+-
+ freebsd* | dragonfly*)
+   # DragonFly does not have aout.  When/if they implement a new
+   # versioning mechanism, adjust this.
+@@ -10751,7 +10804,7 @@ freebsd* | dragonfly*)
+     objformat=`/usr/bin/objformat`
+   else
+     case $host_os in
+-    freebsd[123]*) objformat=aout ;;
++    freebsd[23].*) objformat=aout ;;
+     *) objformat=elf ;;
+     esac
+   fi
+@@ -10769,7 +10822,7 @@ freebsd* | dragonfly*)
+   esac
+   shlibpath_var=LD_LIBRARY_PATH
+   case $host_os in
+-  freebsd2*)
++  freebsd2.*)
+     shlibpath_overrides_runpath=yes
+     ;;
+   freebsd3.[01]* | freebsdelf3.[01]*)
+@@ -10789,17 +10842,18 @@ freebsd* | dragonfly*)
+   ;;
+ 
+ gnu*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
+   soname_spec='${libname}${release}${shared_ext}$major'
+   shlibpath_var=LD_LIBRARY_PATH
++  shlibpath_overrides_runpath=no
+   hardcode_into_libs=yes
+   ;;
+ 
+ haiku*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   dynamic_linker="$host_os runtime_loader"
+@@ -10860,7 +10914,7 @@ hpux9* | hpux10* | hpux11*)
+   ;;
+ 
+ interix[3-9]*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
+@@ -10876,7 +10930,7 @@ irix5* | irix6* | nonstopux*)
+     nonstopux*) version_type=nonstopux ;;
+     *)
+ 	if test "$lt_cv_prog_gnu_ld" = yes; then
+-		version_type=linux
++		version_type=linux # correct to gnu/linux during the next big refactor
+ 	else
+ 		version_type=irix
+ 	fi ;;
+@@ -10913,9 +10967,9 @@ linux*oldld* | linux*aout* | linux*coff*)
+   dynamic_linker=no
+   ;;
+ 
+-# This must be Linux ELF.
++# This must be glibc/ELF.
+ linux* | k*bsd*-gnu | kopensolaris*-gnu)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -11001,7 +11055,7 @@ netbsd*)
+   ;;
+ 
+ newsos6)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+   shlibpath_var=LD_LIBRARY_PATH
+   shlibpath_overrides_runpath=yes
+@@ -11070,7 +11124,7 @@ rdos*)
+   ;;
+ 
+ solaris*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -11095,7 +11149,7 @@ sunos4*)
+   ;;
+ 
+ sysv4 | sysv4.3*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+   soname_spec='${libname}${release}${shared_ext}$major'
+   shlibpath_var=LD_LIBRARY_PATH
+@@ -11119,7 +11173,7 @@ sysv4 | sysv4.3*)
+ 
+ sysv4*MP*)
+   if test -d /usr/nec ;then
+-    version_type=linux
++    version_type=linux # correct to gnu/linux during the next big refactor
+     library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
+     soname_spec='$libname${shared_ext}.$major'
+     shlibpath_var=LD_LIBRARY_PATH
+@@ -11150,7 +11204,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ 
+ tpf*)
+   # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   need_lib_prefix=no
+   need_version=no
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+@@ -11160,7 +11214,7 @@ tpf*)
+   ;;
+ 
+ uts4*)
+-  version_type=linux
++  version_type=linux # correct to gnu/linux during the next big refactor
+   library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
+   soname_spec='${libname}${release}${shared_ext}$major'
+   shlibpath_var=LD_LIBRARY_PATH
+@@ -11942,6 +11996,8 @@ CC="$lt_save_CC"
+ 
+ 
+ 
++
++
+         ac_config_commands="$ac_config_commands libtool"
+ 
+ 
+@@ -13132,6 +13188,10 @@ fi
+ 
+ TARGETDIR="unknown"
+ case "$host" in
++  aarch64*-*-*)
++	TARGET=AARCH64; TARGETDIR=aarch64
++	;;
++
+   alpha*-*-*)
+ 	TARGET=ALPHA; TARGETDIR=alpha;
+ 	# Support 128-bit long double, changeable via command-line switch.
+@@ -13431,6 +13491,14 @@ else
+   POWERPC_FREEBSD_FALSE=
+ fi
+ 
++ if test x$TARGET = xAARCH64; then
++  AARCH64_TRUE=
++  AARCH64_FALSE='#'
++else
++  AARCH64_TRUE='#'
++  AARCH64_FALSE=
++fi
++
+  if test x$TARGET = xARM; then
+   ARM_TRUE=
+   ARM_FALSE='#'
+@@ -14786,6 +14854,10 @@ if test -z "${POWERPC_FREEBSD_TRUE}" && test -z "${POWERPC_FREEBSD_FALSE}"; then
+   as_fn_error $? "conditional \"POWERPC_FREEBSD\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${AARCH64_TRUE}" && test -z "${AARCH64_FALSE}"; then
++  as_fn_error $? "conditional \"AARCH64\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${ARM_TRUE}" && test -z "${ARM_FALSE}"; then
+   as_fn_error $? "conditional \"ARM\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+@@ -15463,6 +15535,7 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`'
+ enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
+ SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
+ ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
++PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
+ host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
+ host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
+ host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
+@@ -15545,7 +15618,6 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`'
+ allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
+ no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
+ hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
+-hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
+ hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
+ hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
+ hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
+@@ -15601,6 +15673,7 @@ _LTECHO_EOF'
+ # Quote evaled strings.
+ for var in SHELL \
+ ECHO \
++PATH_SEPARATOR \
+ SED \
+ GREP \
+ EGREP \
+@@ -15651,7 +15724,6 @@ with_gnu_ld \
+ allow_undefined_flag \
+ no_undefined_flag \
+ hardcode_libdir_flag_spec \
+-hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ exclude_expsyms \
+ include_expsyms \
+@@ -16633,8 +16705,8 @@ $as_echo X"$file" |
+ # NOTE: Changes made to this file will be lost: look at ltmain.sh.
+ #
+ #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+-#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
+-#                 Inc.
++#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
++#                 Foundation, Inc.
+ #   Written by Gordon Matzigkeit, 1996
+ #
+ #   This file is part of GNU Libtool.
+@@ -16688,6 +16760,9 @@ SHELL=$lt_SHELL
+ # An echo program that protects backslashes.
+ ECHO=$lt_ECHO
+ 
++# The PATH separator for the build system.
++PATH_SEPARATOR=$lt_PATH_SEPARATOR
++
+ # The host system.
+ host_alias=$host_alias
+ host=$host
+@@ -16989,10 +17064,6 @@ no_undefined_flag=$lt_no_undefined_flag
+ # This must work even if \$libdir does not exist
+ hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
+ 
+-# If ld is used when linking, flag to hardcode \$libdir into a binary
+-# during linking.  This must work even if \$libdir does not exist.
+-hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
+-
+ # Whether we need a single "-rpath" flag with a separated argument.
+ hardcode_libdir_separator=$lt_hardcode_libdir_separator
+ 
+diff --git a/configure.ac b/configure.ac
+index 9b946a2..8c3f40c 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -53,6 +53,10 @@ AM_CONDITIONAL(TESTSUBDIR, test -d $srcdir/testsuite)
+ 
+ TARGETDIR="unknown"
+ case "$host" in
++  aarch64*-*-*)
++	TARGET=AARCH64; TARGETDIR=aarch64
++	;;
++
+   alpha*-*-*)
+ 	TARGET=ALPHA; TARGETDIR=alpha;
+ 	# Support 128-bit long double, changeable via command-line switch.
+@@ -233,6 +237,7 @@ AM_CONDITIONAL(POWERPC, test x$TARGET = xPOWERPC)
+ AM_CONDITIONAL(POWERPC_AIX, test x$TARGET = xPOWERPC_AIX)
+ AM_CONDITIONAL(POWERPC_DARWIN, test x$TARGET = xPOWERPC_DARWIN)
+ AM_CONDITIONAL(POWERPC_FREEBSD, test x$TARGET = xPOWERPC_FREEBSD)
++AM_CONDITIONAL(AARCH64, test x$TARGET = xAARCH64)
+ AM_CONDITIONAL(ARM, test x$TARGET = xARM)
+ AM_CONDITIONAL(AVR32, test x$TARGET = xAVR32)
+ AM_CONDITIONAL(LIBFFI_CRIS, test x$TARGET = xLIBFFI_CRIS)
+diff --git a/src/aarch64/ffi.c b/src/aarch64/ffi.c
+new file mode 100644
+index 0000000..1405665
+--- /dev/null
++++ b/src/aarch64/ffi.c
+@@ -0,0 +1,1076 @@
++/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
++
++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 SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
++EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
++
++#include <stdio.h>
++
++#include <ffi.h>
++#include <ffi_common.h>
++
++#include <stdlib.h>
++
++/* Stack alignment requirement in bytes */
++#define AARCH64_STACK_ALIGN 16
++
++#define N_X_ARG_REG 8
++#define N_V_ARG_REG 8
++
++#define AARCH64_FFI_WITH_V (1 << AARCH64_FFI_WITH_V_BIT)
++
++union _d
++{
++  UINT64 d;
++  UINT32 s[2];
++};
++
++struct call_context
++{
++  UINT64 x [AARCH64_N_XREG];
++  struct
++  {
++    union _d d[2];
++  } v [AARCH64_N_VREG];
++};
++
++static void *
++get_x_addr (struct call_context *context, unsigned n)
++{
++  return &context->x[n];
++}
++
++static void *
++get_s_addr (struct call_context *context, unsigned n)
++{
++#if defined __AARCH64EB__
++  return &context->v[n].d[1].s[1];
++#else
++  return &context->v[n].d[0].s[0];
++#endif
++}
++
++static void *
++get_d_addr (struct call_context *context, unsigned n)
++{
++#if defined __AARCH64EB__
++  return &context->v[n].d[1];
++#else
++  return &context->v[n].d[0];
++#endif
++}
++
++static void *
++get_v_addr (struct call_context *context, unsigned n)
++{
++  return &context->v[n];
++}
++
++/* Return the memory location at which a basic type would reside
++   were it to have been stored in register n.  */
++
++static void *
++get_basic_type_addr (unsigned short type, struct call_context *context,
++		     unsigned n)
++{
++  switch (type)
++    {
++    case FFI_TYPE_FLOAT:
++      return get_s_addr (context, n);
++    case FFI_TYPE_DOUBLE:
++      return get_d_addr (context, n);
++    case FFI_TYPE_LONGDOUBLE:
++      return get_v_addr (context, n);
++    case FFI_TYPE_UINT8:
++    case FFI_TYPE_SINT8:
++    case FFI_TYPE_UINT16:
++    case FFI_TYPE_SINT16:
++    case FFI_TYPE_UINT32:
++    case FFI_TYPE_SINT32:
++    case FFI_TYPE_INT:
++    case FFI_TYPE_POINTER:
++    case FFI_TYPE_UINT64:
++    case FFI_TYPE_SINT64:
++      return get_x_addr (context, n);
++    default:
++      FFI_ASSERT (0);
++      return NULL;
++    }
++}
++
++/* Return the alignment width for each of the basic types.  */
++
++static size_t
++get_basic_type_alignment (unsigned short type)
++{
++  switch (type)
++    {
++    case FFI_TYPE_FLOAT:
++    case FFI_TYPE_DOUBLE:
++      return sizeof (UINT64);
++    case FFI_TYPE_LONGDOUBLE:
++      return sizeof (long double);
++    case FFI_TYPE_UINT8:
++    case FFI_TYPE_SINT8:
++    case FFI_TYPE_UINT16:
++    case FFI_TYPE_SINT16:
++    case FFI_TYPE_UINT32:
++    case FFI_TYPE_INT:
++    case FFI_TYPE_SINT32:
++    case FFI_TYPE_POINTER:
++    case FFI_TYPE_UINT64:
++    case FFI_TYPE_SINT64:
++      return sizeof (UINT64);
++
++    default:
++      FFI_ASSERT (0);
++      return 0;
++    }
++}
++
++/* Return the size in bytes for each of the basic types.  */
++
++static size_t
++get_basic_type_size (unsigned short type)
++{
++  switch (type)
++    {
++    case FFI_TYPE_FLOAT:
++      return sizeof (UINT32);
++    case FFI_TYPE_DOUBLE:
++      return sizeof (UINT64);
++    case FFI_TYPE_LONGDOUBLE:
++      return sizeof (long double);
++    case FFI_TYPE_UINT8:
++      return sizeof (UINT8);
++    case FFI_TYPE_SINT8:
++      return sizeof (SINT8);
++    case FFI_TYPE_UINT16:
++      return sizeof (UINT16);
++    case FFI_TYPE_SINT16:
++      return sizeof (SINT16);
++    case FFI_TYPE_UINT32:
++      return sizeof (UINT32);
++    case FFI_TYPE_INT:
++    case FFI_TYPE_SINT32:
++      return sizeof (SINT32);
++    case FFI_TYPE_POINTER:
++    case FFI_TYPE_UINT64:
++      return sizeof (UINT64);
++    case FFI_TYPE_SINT64:
++      return sizeof (SINT64);
++
++    default:
++      FFI_ASSERT (0);
++      return 0;
++    }
++}
++
++extern void
++ffi_call_SYSV (unsigned (*)(struct call_context *context, unsigned char *,
++			    extended_cif *),
++               struct call_context *context,
++               extended_cif *,
++               unsigned,
++               void (*fn)(void));
++
++extern void
++ffi_closure_SYSV (ffi_closure *);
++
++/* Test for an FFI floating point representation.  */
++
++static unsigned
++is_floating_type (unsigned short type)
++{
++  return (type == FFI_TYPE_FLOAT || type == FFI_TYPE_DOUBLE
++	  || type == FFI_TYPE_LONGDOUBLE);
++}
++
++/* Test for a homogeneous structure.  */
++
++static unsigned short
++get_homogeneous_type (ffi_type *ty)
++{
++  if (ty->type == FFI_TYPE_STRUCT && ty->elements)
++    {
++      unsigned i;
++      unsigned short candidate_type
++	= get_homogeneous_type (ty->elements[0]);
++      for (i =1; ty->elements[i]; i++)
++	{
++	  unsigned short iteration_type = 0;
++	  /* If we have a nested struct, we must find its homogeneous type.
++	     If that fits with our candidate type, we are still
++	     homogeneous.  */
++	  if (ty->elements[i]->type == FFI_TYPE_STRUCT
++	      && ty->elements[i]->elements)
++	    {
++	      iteration_type = get_homogeneous_type (ty->elements[i]);
++	    }
++	  else
++	    {
++	      iteration_type = ty->elements[i]->type;
++	    }
++
++	  /* If we are not homogeneous, return FFI_TYPE_STRUCT.  */
++	  if (candidate_type != iteration_type)
++	    return FFI_TYPE_STRUCT;
++	}
++      return candidate_type;
++    }
++
++  /* Base case, we have no more levels of nesting, so we
++     are a basic type, and so, trivially homogeneous in that type.  */
++  return ty->type;
++}
++
++/* Determine the number of elements within a STRUCT.
++
++   Note, we must handle nested structs.
++
++   If ty is not a STRUCT this function will return 0.  */
++
++static unsigned
++element_count (ffi_type *ty)
++{
++  if (ty->type == FFI_TYPE_STRUCT && ty->elements)
++    {
++      unsigned n;
++      unsigned elems = 0;
++      for (n = 0; ty->elements[n]; n++)
++	{
++	  if (ty->elements[n]->type == FFI_TYPE_STRUCT
++	      && ty->elements[n]->elements)
++	    elems += element_count (ty->elements[n]);
++	  else
++	    elems++;
++	}
++      return elems;
++    }
++  return 0;
++}
++
++/* Test for a homogeneous floating point aggregate.
++
++   A homogeneous floating point aggregate is a homogeneous aggregate of
++   a half- single- or double- precision floating point type with one
++   to four elements.  Note that this includes nested structs of the
++   basic type.  */
++
++static int
++is_hfa (ffi_type *ty)
++{
++  if (ty->type == FFI_TYPE_STRUCT
++      && ty->elements[0]
++      && is_floating_type (get_homogeneous_type (ty)))
++    {
++      unsigned n = element_count (ty);
++      return n >= 1 && n <= 4;
++    }
++  return 0;
++}
++
++/* Test if an ffi_type is a candidate for passing in a register.
++
++   This test does not check that sufficient registers of the
++   appropriate class are actually available, merely that IFF
++   sufficient registers are available then the argument will be passed
++   in register(s).
++
++   Note that an ffi_type that is deemed to be a register candidate
++   will always be returned in registers.
++
++   Returns 1 if a register candidate else 0.  */
++
++static int
++is_register_candidate (ffi_type *ty)
++{
++  switch (ty->type)
++    {
++    case FFI_TYPE_VOID:
++    case FFI_TYPE_FLOAT:
++    case FFI_TYPE_DOUBLE:
++    case FFI_TYPE_LONGDOUBLE:
++    case FFI_TYPE_UINT8:
++    case FFI_TYPE_UINT16:
++    case FFI_TYPE_UINT32:
++    case FFI_TYPE_UINT64:
++    case FFI_TYPE_POINTER:
++    case FFI_TYPE_SINT8:
++    case FFI_TYPE_SINT16:
++    case FFI_TYPE_SINT32:
++    case FFI_TYPE_INT:
++    case FFI_TYPE_SINT64:
++      return 1;
++
++    case FFI_TYPE_STRUCT:
++      if (is_hfa (ty))
++        {
++          return 1;
++        }
++      else if (ty->size > 16)
++        {
++          /* Too large. Will be replaced with a pointer to memory. The
++             pointer MAY be passed in a register, but the value will
++             not. This test specifically fails since the argument will
++             never be passed by value in registers. */
++          return 0;
++        }
++      else
++        {
++          /* Might be passed in registers depending on the number of
++             registers required. */
++          return (ty->size + 7) / 8 < N_X_ARG_REG;
++        }
++      break;
++
++    default:
++      FFI_ASSERT (0);
++      break;
++    }
++
++  return 0;
++}
++
++/* Test if an ffi_type argument or result is a candidate for a vector
++   register.  */
++
++static int
++is_v_register_candidate (ffi_type *ty)
++{
++  return is_floating_type (ty->type)
++	   || (ty->type == FFI_TYPE_STRUCT && is_hfa (ty));
++}
++
++/* Representation of the procedure call argument marshalling
++   state.
++
++   The terse state variable names match the names used in the AARCH64
++   PCS. */
++
++struct arg_state
++{
++  unsigned ngrn;                /* Next general-purpose register number. */
++  unsigned nsrn;                /* Next vector register number. */
++  unsigned nsaa;                /* Next stack offset. */
++};
++
++/* Initialize a procedure call argument marshalling state.  */
++static void
++arg_init (struct arg_state *state, unsigned call_frame_size)
++{
++  state->ngrn = 0;
++  state->nsrn = 0;
++  state->nsaa = 0;
++}
++
++/* Return the number of available consecutive core argument
++   registers.  */
++
++static unsigned
++available_x (struct arg_state *state)
++{
++  return N_X_ARG_REG - state->ngrn;
++}
++
++/* Return the number of available consecutive vector argument
++   registers.  */
++
++static unsigned
++available_v (struct arg_state *state)
++{
++  return N_V_ARG_REG - state->nsrn;
++}
++
++static void *
++allocate_to_x (struct call_context *context, struct arg_state *state)
++{
++  FFI_ASSERT (state->ngrn < N_X_ARG_REG)
++  return get_x_addr (context, (state->ngrn)++);
++}
++
++static void *
++allocate_to_s (struct call_context *context, struct arg_state *state)
++{
++  FFI_ASSERT (state->nsrn < N_V_ARG_REG)
++  return get_s_addr (context, (state->nsrn)++);
++}
++
++static void *
++allocate_to_d (struct call_context *context, struct arg_state *state)
++{
++  FFI_ASSERT (state->nsrn < N_V_ARG_REG)
++  return get_d_addr (context, (state->nsrn)++);
++}
++
++static void *
++allocate_to_v (struct call_context *context, struct arg_state *state)
++{
++  FFI_ASSERT (state->nsrn < N_V_ARG_REG)
++  return get_v_addr (context, (state->nsrn)++);
++}
++
++/* Allocate an aligned slot on the stack and return a pointer to it.  */
++static void *
++allocate_to_stack (struct arg_state *state, void *stack, unsigned alignment,
++		   unsigned size)
++{
++  void *allocation;
++
++  /* Round up the NSAA to the larger of 8 or the natural
++     alignment of the argument's type.  */
++  state->nsaa = ALIGN (state->nsaa, alignment);
++  state->nsaa = ALIGN (state->nsaa, alignment);
++  state->nsaa = ALIGN (state->nsaa, 8);
++
++  allocation = stack + state->nsaa;
++
++  state->nsaa += size;
++  return allocation;
++}
++
++static void
++copy_basic_type (void *dest, void *source, unsigned short type)
++{
++  /* This is neccessary to ensure that basic types are copied
++     sign extended to 64-bits as libffi expects.  */
++  switch (type)
++    {
++    case FFI_TYPE_FLOAT:
++      *(float *) dest = *(float *) source;
++      break;
++    case FFI_TYPE_DOUBLE:
++      *(double *) dest = *(double *) source;
++      break;
++    case FFI_TYPE_LONGDOUBLE:
++      *(long double *) dest = *(long double *) source;
++      break;
++    case FFI_TYPE_UINT8:
++      *(ffi_arg *) dest = *(UINT8 *) source;
++      break;
++    case FFI_TYPE_SINT8:
++      *(ffi_sarg *) dest = *(SINT8 *) source;
++      break;
++    case FFI_TYPE_UINT16:
++      *(ffi_arg *) dest = *(UINT16 *) source;
++      break;
++    case FFI_TYPE_SINT16:
++      *(ffi_sarg *) dest = *(SINT16 *) source;
++      break;
++    case FFI_TYPE_UINT32:
++      *(ffi_arg *) dest = *(UINT32 *) source;
++      break;
++    case FFI_TYPE_INT:
++    case FFI_TYPE_SINT32:
++      *(ffi_sarg *) dest = *(SINT32 *) source;
++      break;
++    case FFI_TYPE_POINTER:
++    case FFI_TYPE_UINT64:
++      *(ffi_arg *) dest = *(UINT64 *) source;
++      break;
++    case FFI_TYPE_SINT64:
++      *(ffi_sarg *) dest = *(SINT64 *) source;
++      break;
++
++    default:
++      FFI_ASSERT (0);
++    }
++}
++
++static void
++copy_hfa_to_reg_or_stack (void *memory,
++			  ffi_type *ty,
++			  struct call_context *context,
++			  unsigned char *stack,
++			  struct arg_state *state)
++{
++  unsigned elems = element_count (ty);
++  if (available_v (state) < elems)
++    {
++      /* There are insufficient V registers. Further V register allocations
++	 are prevented, the NSAA is adjusted (by allocate_to_stack ())
++	 and the argument is copied to memory@the adjusted NSAA.  */
++      state->nsrn = N_V_ARG_REG;
++      memcpy (allocate_to_stack (state, stack, ty->alignment, ty->size),
++	      memory,
++	      ty->size);
++    }
++  else
++    {
++      int i;
++      unsigned short type = get_homogeneous_type (ty);
++      unsigned elems = element_count (ty);
++      for (i = 0; i < elems; i++)
++	{
++	  void *reg = allocate_to_v (context, state);
++	  copy_basic_type (reg, memory, type);
++	  memory += get_basic_type_size (type);
++	}
++    }
++}
++
++/* Either allocate an appropriate register for the argument type, or if
++   none are available, allocate a stack slot and return a pointer
++   to the allocated space.  */
++
++static void *
++allocate_to_register_or_stack (struct call_context *context,
++			       unsigned char *stack,
++			       struct arg_state *state,
++			       unsigned short type)
++{
++  size_t alignment = get_basic_type_alignment (type);
++  size_t size = alignment;
++  switch (type)
++    {
++    case FFI_TYPE_FLOAT:
++      /* This is the only case for which the allocated stack size
++	 should not match the alignment of the type.  */
++      size = sizeof (UINT32);
++      /* Fall through.  */
++    case FFI_TYPE_DOUBLE:
++      if (state->nsrn < N_V_ARG_REG)
++	return allocate_to_d (context, state);
++      state->nsrn = N_V_ARG_REG;
++      break;
++    case FFI_TYPE_LONGDOUBLE:
++      if (state->nsrn < N_V_ARG_REG)
++	return allocate_to_v (context, state);
++      state->nsrn = N_V_ARG_REG;
++      break;
++    case FFI_TYPE_UINT8:
++    case FFI_TYPE_SINT8:
++    case FFI_TYPE_UINT16:
++    case FFI_TYPE_SINT16:
++    case FFI_TYPE_UINT32:
++    case FFI_TYPE_SINT32:
++    case FFI_TYPE_INT:
++    case FFI_TYPE_POINTER:
++    case FFI_TYPE_UINT64:
++    case FFI_TYPE_SINT64:
++      if (state->ngrn < N_X_ARG_REG)
++	return allocate_to_x (context, state);
++      state->ngrn = N_X_ARG_REG;
++      break;
++    default:
++      FFI_ASSERT (0);
++    }
++
++    return allocate_to_stack (state, stack, alignment, size);
++}
++
++/* Copy a value to an appropriate register, or if none are
++   available, to the stack.  */
++
++static void
++copy_to_register_or_stack (struct call_context *context,
++			   unsigned char *stack,
++			   struct arg_state *state,
++			   void *value,
++			   unsigned short type)
++{
++  copy_basic_type (
++	  allocate_to_register_or_stack (context, stack, state, type),
++	  value,
++	  type);
++}
++
++/* Marshall the arguments from FFI representation to procedure call
++   context and stack.  */
++
++static unsigned
++aarch64_prep_args (struct call_context *context, unsigned char *stack,
++		   extended_cif *ecif)
++{
++  int i;
++  struct arg_state state;
++
++  arg_init (&state, ALIGN(ecif->cif->bytes, 16));
++
++  for (i = 0; i < ecif->cif->nargs; i++)
++    {
++      ffi_type *ty = ecif->cif->arg_types[i];
++      switch (ty->type)
++	{
++	case FFI_TYPE_VOID:
++	  FFI_ASSERT (0);
++	  break;
++
++	/* If the argument is a basic type the argument is allocated to an
++	   appropriate register, or if none are available, to the stack.  */
++	case FFI_TYPE_FLOAT:
++	case FFI_TYPE_DOUBLE:
++	case FFI_TYPE_LONGDOUBLE:
++	case FFI_TYPE_UINT8:
++	case FFI_TYPE_SINT8:
++	case FFI_TYPE_UINT16:
++	case FFI_TYPE_SINT16:
++	case FFI_TYPE_UINT32:
++	case FFI_TYPE_INT:
++	case FFI_TYPE_SINT32:
++	case FFI_TYPE_POINTER:
++	case FFI_TYPE_UINT64:
++	case FFI_TYPE_SINT64:
++	  copy_to_register_or_stack (context, stack, &state,
++				     ecif->avalue[i], ty->type);
++	  break;
++
++	case FFI_TYPE_STRUCT:
++	  if (is_hfa (ty))
++	    {
++	      copy_hfa_to_reg_or_stack (ecif->avalue[i], ty, context,
++					stack, &state);
++	    }
++	  else if (ty->size > 16)
++	    {
++	      /* If the argument is a composite type that is larger than 16
++		 bytes, then the argument has been copied to memory, and
++		 the argument is replaced by a pointer to the copy.  */
++
++	      copy_to_register_or_stack (context, stack, &state,
++					 &(ecif->avalue[i]), FFI_TYPE_POINTER);
++	    }
++	  else if (available_x (&state) >= (ty->size + 7) / 8)
++	    {
++	      /* If the argument is a composite type and the size in
++		 double-words is not more than the number of available
++		 X registers, then the argument is copied into consecutive
++		 X registers.  */
++	      int j;
++	      for (j = 0; j < (ty->size + 7) / 8; j++)
++		{
++		  memcpy (allocate_to_x (context, &state),
++			  &(((UINT64 *) ecif->avalue[i])[j]),
++			  sizeof (UINT64));
++		}
++	    }
++	  else
++	    {
++	      /* Otherwise, there are insufficient X registers. Further X
++		 register allocations are prevented, the NSAA is adjusted
++		 (by allocate_to_stack ()) and the argument is copied to
++		 memory at the adjusted NSAA.  */
++	      state.ngrn = N_X_ARG_REG;
++
++	      memcpy (allocate_to_stack (&state, stack, ty->alignment,
++					 ty->size), ecif->avalue + i, ty->size);
++	    }
++	  break;
++
++	default:
++	  FFI_ASSERT (0);
++	  break;
++	}
++    }
++
++  return ecif->cif->aarch64_flags;
++}
++
++ffi_status
++ffi_prep_cif_machdep (ffi_cif *cif)
++{
++  /* Round the stack up to a multiple of the stack alignment requirement. */
++  cif->bytes =
++    (cif->bytes + (AARCH64_STACK_ALIGN - 1)) & ~ (AARCH64_STACK_ALIGN - 1);
++
++  /* Initialize our flags. We are interested if this CIF will touch a
++     vector register, if so we will enable context save and load to
++     those registers, otherwise not. This is intended to be friendly
++     to lazy float context switching in the kernel.  */
++  cif->aarch64_flags = 0;
++
++  if (is_v_register_candidate (cif->rtype))
++    {
++      cif->aarch64_flags |= AARCH64_FFI_WITH_V;
++    }
++  else
++    {
++      int i;
++      for (i = 0; i < cif->nargs; i++)
++        if (is_v_register_candidate (cif->arg_types[i]))
++          {
++            cif->aarch64_flags |= AARCH64_FFI_WITH_V;
++            break;
++          }
++    }
++
++  return FFI_OK;
++}
++
++/* Call a function with the provided arguments and capture the return
++   value.  */
++void
++ffi_call (ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue)
++{
++  extended_cif ecif;
++
++  ecif.cif = cif;
++  ecif.avalue = avalue;
++  ecif.rvalue = rvalue;
++
++  switch (cif->abi)
++    {
++    case FFI_SYSV:
++      {
++        struct call_context context;
++	unsigned stack_bytes;
++
++	/* Figure out the total amount of stack space we need, the
++	   above call frame space needs to be 16 bytes aligned to
++	   ensure correct alignment of the first object inserted in
++	   that space hence the ALIGN applied to cif->bytes.*/
++	stack_bytes = ALIGN(cif->bytes, 16);
++
++	memset (&context, 0, sizeof (context));
++        if (is_register_candidate (cif->rtype))
++          {
++            ffi_call_SYSV (aarch64_prep_args, &context, &ecif, stack_bytes, fn);
++            switch (cif->rtype->type)
++              {
++              case FFI_TYPE_VOID:
++              case FFI_TYPE_FLOAT:
++              case FFI_TYPE_DOUBLE:
++              case FFI_TYPE_LONGDOUBLE:
++              case FFI_TYPE_UINT8:
++              case FFI_TYPE_SINT8:
++              case FFI_TYPE_UINT16:
++              case FFI_TYPE_SINT16:
++              case FFI_TYPE_UINT32:
++              case FFI_TYPE_SINT32:
++              case FFI_TYPE_POINTER:
++              case FFI_TYPE_UINT64:
++              case FFI_TYPE_INT:
++              case FFI_TYPE_SINT64:
++		{
++		  void *addr = get_basic_type_addr (cif->rtype->type,
++						    &context, 0);
++		  copy_basic_type (rvalue, addr, cif->rtype->type);
++		  break;
++		}
++
++              case FFI_TYPE_STRUCT:
++                if (is_hfa (cif->rtype))
++		  {
++		    int j;
++		    unsigned short type = get_homogeneous_type (cif->rtype);
++		    unsigned elems = element_count (cif->rtype);
++		    for (j = 0; j < elems; j++)
++		      {
++			void *reg = get_basic_type_addr (type, &context, j);
++			copy_basic_type (rvalue, reg, type);
++			rvalue += get_basic_type_size (type);
++		      }
++		  }
++                else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
++                  {
++                    unsigned size = ALIGN (cif->rtype->size, sizeof (UINT64));
++                    memcpy (rvalue, get_x_addr (&context, 0), size);
++                  }
++                else
++                  {
++                    FFI_ASSERT (0);
++                  }
++                break;
++
++              default:
++                FFI_ASSERT (0);
++                break;
++              }
++          }
++        else
++          {
++            memcpy (get_x_addr (&context, 8), &rvalue, sizeof (UINT64));
++            ffi_call_SYSV (aarch64_prep_args, &context, &ecif,
++			   stack_bytes, fn);
++          }
++        break;
++      }
++
++    default:
++      FFI_ASSERT (0);
++      break;
++    }
++}
++
++static unsigned char trampoline [] =
++{ 0x70, 0x00, 0x00, 0x58,	/* ldr	x16, 1f	*/
++  0x91, 0x00, 0x00, 0x10,	/* adr	x17, 2f	*/
++  0x00, 0x02, 0x1f, 0xd6	/* br	x16	*/
++};
++
++/* Build a trampoline.  */
++
++#define FFI_INIT_TRAMPOLINE(TRAMP,FUN,CTX,FLAGS)			\
++  ({unsigned char *__tramp = (unsigned char*)(TRAMP);			\
++    UINT64  __fun = (UINT64)(FUN);					\
++    UINT64  __ctx = (UINT64)(CTX);					\
++    UINT64  __flags = (UINT64)(FLAGS);					\
++    memcpy (__tramp, trampoline, sizeof (trampoline));			\
++    memcpy (__tramp + 12, &__fun, sizeof (__fun));			\
++    memcpy (__tramp + 20, &__ctx, sizeof (__ctx));			\
++    memcpy (__tramp + 28, &__flags, sizeof (__flags));			\
++    __clear_cache(__tramp, __tramp + FFI_TRAMPOLINE_SIZE);		\
++  })
++
++ffi_status
++ffi_prep_closure_loc (ffi_closure* closure,
++                      ffi_cif* cif,
++                      void (*fun)(ffi_cif*,void*,void**,void*),
++                      void *user_data,
++                      void *codeloc)
++{
++  if (cif->abi != FFI_SYSV)
++    return FFI_BAD_ABI;
++
++  FFI_INIT_TRAMPOLINE (&closure->tramp[0], &ffi_closure_SYSV, codeloc,
++		       cif->aarch64_flags);
++
++  closure->cif  = cif;
++  closure->user_data = user_data;
++  closure->fun  = fun;
++
++  return FFI_OK;
++}
++
++/* Primary handler to setup and invoke a function within a closure.
++
++   A closure when invoked enters via the assembler wrapper
++   ffi_closure_SYSV(). The wrapper allocates a call context on the
++   stack, saves the interesting registers (from the perspective of
++   the calling convention) into the context then passes control to
++   ffi_closure_SYSV_inner() passing the saved context and a pointer to
++   the stack at the point ffi_closure_SYSV() was invoked.
++
++   On the return path the assembler wrapper will reload call context
++   regsiters.
++
++   ffi_closure_SYSV_inner() marshalls the call context into ffi value
++   desriptors, invokes the wrapped function, then marshalls the return
++   value back into the call context.  */
++
++void
++ffi_closure_SYSV_inner (ffi_closure *closure, struct call_context *context,
++			void *stack)
++{
++  ffi_cif *cif = closure->cif;
++  void **avalue = (void**) alloca (cif->nargs * sizeof (void*));
++  void *rvalue = NULL;
++  int i;
++  struct arg_state state;
++
++  arg_init (&state, ALIGN(cif->bytes, 16));
++
++  for (i = 0; i < cif->nargs; i++)
++    {
++      ffi_type *ty = cif->arg_types[i];
++
++      switch (ty->type)
++	{
++	case FFI_TYPE_VOID:
++	  FFI_ASSERT (0);
++	  break;
++
++	case FFI_TYPE_UINT8:
++	case FFI_TYPE_SINT8:
++	case FFI_TYPE_UINT16:
++	case FFI_TYPE_SINT16:
++	case FFI_TYPE_UINT32:
++	case FFI_TYPE_SINT32:
++	case FFI_TYPE_INT:
++	case FFI_TYPE_POINTER:
++	case FFI_TYPE_UINT64:
++	case FFI_TYPE_SINT64:
++	case  FFI_TYPE_FLOAT:
++	case  FFI_TYPE_DOUBLE:
++	case  FFI_TYPE_LONGDOUBLE:
++	  avalue[i] = allocate_to_register_or_stack (context, stack,
++						     &state, ty->type);
++	  break;
++
++	case FFI_TYPE_STRUCT:
++	  if (is_hfa (ty))
++	    {
++	      unsigned n = element_count (ty);
++	      if (available_v (&state) < n)
++		{
++		  state.nsrn = N_V_ARG_REG;
++		  avalue[i] = allocate_to_stack (&state, stack, ty->alignment,
++						 ty->size);
++		}
++	      else
++		{
++		  switch (get_homogeneous_type (ty))
++		    {
++		    case FFI_TYPE_FLOAT:
++		      {
++			/* Eeek! We need a pointer to the structure,
++			   however the homogeneous float elements are
++			   being passed in individual S registers,
++			   therefore the structure is not represented as
++			   a contiguous sequence of bytes in our saved
++			   register context. We need to fake up a copy
++			   of the structure layed out in memory
++			   correctly. The fake can be tossed once the
++			   closure function has returned hence alloca()
++			   is sufficient. */
++			int j;
++			UINT32 *p = avalue[i] = alloca (ty->size);
++			for (j = 0; j < element_count (ty); j++)
++			  memcpy (&p[j],
++				  allocate_to_s (context, &state),
++				  sizeof (*p));
++			break;
++		      }
++
++		    case FFI_TYPE_DOUBLE:
++		      {
++			/* Eeek! We need a pointer to the structure,
++			   however the homogeneous float elements are
++			   being passed in individual S registers,
++			   therefore the structure is not represented as
++			   a contiguous sequence of bytes in our saved
++			   register context. We need to fake up a copy
++			   of the structure layed out in memory
++			   correctly. The fake can be tossed once the
++			   closure function has returned hence alloca()
++			   is sufficient. */
++			int j;
++			UINT64 *p = avalue[i] = alloca (ty->size);
++			for (j = 0; j < element_count (ty); j++)
++			  memcpy (&p[j],
++				  allocate_to_d (context, &state),
++				  sizeof (*p));
++			break;
++		      }
++
++		    case FFI_TYPE_LONGDOUBLE:
++			  memcpy (&avalue[i],
++				  allocate_to_v (context, &state),
++				  sizeof (*avalue));
++		      break;
++
++		    default:
++		      FFI_ASSERT (0);
++		      break;
++		    }
++		}
++	    }
++	  else if (ty->size > 16)
++	    {
++	      /* Replace Composite type of size greater than 16 with a
++		 pointer.  */
++	      memcpy (&avalue[i],
++		      allocate_to_register_or_stack (context, stack,
++						     &state, FFI_TYPE_POINTER),
++		      sizeof (avalue[i]));
++	    }
++	  else if (available_x (&state) >= (ty->size + 7) / 8)
++	    {
++	      avalue[i] = get_x_addr (context, state.ngrn);
++	      state.ngrn += (ty->size + 7) / 8;
++	    }
++	  else
++	    {
++	      state.ngrn = N_X_ARG_REG;
++
++	      avalue[i] = allocate_to_stack (&state, stack, ty->alignment,
++					     ty->size);
++	    }
++	  break;
++
++	default:
++	  FFI_ASSERT (0);
++	  break;
++	}
++    }
++
++  /* Figure out where the return value will be passed, either in
++     registers or in a memory block allocated by the caller and passed
++     in x8.  */
++
++  if (is_register_candidate (cif->rtype))
++    {
++      /* Register candidates are *always* returned in registers. */
++
++      /* Allocate a scratchpad for the return value, we will let the
++         callee scrible the result into the scratch pad then move the
++         contents into the appropriate return value location for the
++         call convention.  */
++      rvalue = alloca (cif->rtype->size);
++      (closure->fun) (cif, rvalue, avalue, closure->user_data);
++
++      /* Copy the return value into the call context so that it is returned
++         as expected to our caller.  */
++      switch (cif->rtype->type)
++        {
++        case FFI_TYPE_VOID:
++          break;
++
++        case FFI_TYPE_UINT8:
++        case FFI_TYPE_UINT16:
++        case FFI_TYPE_UINT32:
++        case FFI_TYPE_POINTER:
++        case FFI_TYPE_UINT64:
++        case FFI_TYPE_SINT8:
++        case FFI_TYPE_SINT16:
++        case FFI_TYPE_INT:
++        case FFI_TYPE_SINT32:
++        case FFI_TYPE_SINT64:
++        case FFI_TYPE_FLOAT:
++        case FFI_TYPE_DOUBLE:
++        case FFI_TYPE_LONGDOUBLE:
++	  {
++	    void *addr = get_basic_type_addr (cif->rtype->type, context, 0);
++	    copy_basic_type (addr, rvalue, cif->rtype->type);
++            break;
++	  }
++        case FFI_TYPE_STRUCT:
++          if (is_hfa (cif->rtype))
++	    {
++	      int i;
++	      unsigned short type = get_homogeneous_type (cif->rtype);
++	      unsigned elems = element_count (cif->rtype);
++	      for (i = 0; i < elems; i++)
++		{
++		  void *reg = get_basic_type_addr (type, context, i);
++		  copy_basic_type (reg, rvalue, type);
++		  rvalue += get_basic_type_size (type);
++		}
++	    }
++          else if ((cif->rtype->size + 7) / 8 < N_X_ARG_REG)
++            {
++              unsigned size = ALIGN (cif->rtype->size, sizeof (UINT64)) ;
++              memcpy (get_x_addr (context, 0), rvalue, size);
++            }
++          else
++            {
++              FFI_ASSERT (0);
++            }
++          break;
++        default:
++          FFI_ASSERT (0);
++          break;
++        }
++    }
++  else
++    {
++      memcpy (&rvalue, get_x_addr (context, 8), sizeof (UINT64));
++      (closure->fun) (cif, rvalue, avalue, closure->user_data);
++    }
++}
++
+diff --git a/src/aarch64/ffitarget.h b/src/aarch64/ffitarget.h
+new file mode 100644
+index 0000000..6f1a348
+--- /dev/null
++++ b/src/aarch64/ffitarget.h
+@@ -0,0 +1,59 @@
++/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
++
++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 SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
++EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
++
++#ifndef LIBFFI_TARGET_H
++#define LIBFFI_TARGET_H
++
++#ifndef LIBFFI_H
++#error "Please do not include ffitarget.h directly into your source.  Use ffi.h instead."
++#endif
++
++#ifndef LIBFFI_ASM
++typedef unsigned long ffi_arg;
++typedef signed long ffi_sarg;
++
++typedef enum ffi_abi
++  {
++    FFI_FIRST_ABI = 0,
++    FFI_SYSV,
++    FFI_LAST_ABI,
++    FFI_DEFAULT_ABI = FFI_SYSV
++  } ffi_abi;
++#endif
++
++/* ---- Definitions for closures ----------------------------------------- */
++
++#define FFI_CLOSURES 1
++#define FFI_TRAMPOLINE_SIZE 36
++#define FFI_NATIVE_RAW_API 0
++
++/* ---- Internal ---- */
++
++
++#define FFI_EXTRA_CIF_FIELDS unsigned aarch64_flags
++
++#define AARCH64_FFI_WITH_V_BIT 0
++
++#define AARCH64_N_XREG 32
++#define AARCH64_N_VREG 32
++#define AARCH64_CALL_CONTEXT_SIZE (AARCH64_N_XREG * 8 + AARCH64_N_VREG * 16)
++
++#endif
+diff --git a/src/aarch64/sysv.S b/src/aarch64/sysv.S
+new file mode 100644
+index 0000000..b8cd421
+--- /dev/null
++++ b/src/aarch64/sysv.S
+@@ -0,0 +1,307 @@
++/* Copyright (c) 2009, 2010, 2011, 2012 ARM Ltd.
++
++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 SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND,
++EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
++IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
++CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
++TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
++SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.  */
++
++#define LIBFFI_ASM
++#include <fficonfig.h>
++#include <ffi.h>
++
++#define cfi_adjust_cfa_offset(off)	.cfi_adjust_cfa_offset off
++#define cfi_rel_offset(reg, off)	.cfi_rel_offset reg, off
++#define cfi_restore(reg)		.cfi_restore reg
++#define cfi_def_cfa_register(reg)	.cfi_def_cfa_register reg
++
++        .text
++        .globl ffi_call_SYSV
++        .type ffi_call_SYSV, #function
++
++/* ffi_call_SYSV()
++
++   Create a stack frame, setup an argument context, call the callee
++   and extract the result.
++
++   The maximum required argument stack size is provided,
++   ffi_call_SYSV() allocates that stack space then calls the
++   prepare_fn to populate register context and stack.  The
++   argument passing registers are loaded from the register
++   context and the callee called, on return the register passing
++   register are saved back to the context.  Our caller will
++   extract the return value from the final state of the saved
++   register context.
++
++   Prototype:
++
++   extern unsigned
++   ffi_call_SYSV (void (*)(struct call_context *context, unsigned char *,
++			   extended_cif *),
++                  struct call_context *context,
++                  extended_cif *,
++                  unsigned required_stack_size,
++                  void (*fn)(void));
++
++   Therefore on entry we have:
++
++   x0 prepare_fn
++   x1 &context
++   x2 &ecif
++   x3 bytes
++   x4 fn
++
++   This function uses the following stack frame layout:
++
++   ==
++                saved x30(lr)
++   x29(fp)->    saved x29(fp)
++                saved x24
++                saved x23
++                saved x22
++   sp'    ->    saved x21
++                ...
++   sp     ->    (constructed callee stack arguments)
++   ==
++
++   Voila! */
++
++#define ffi_call_SYSV_FS (8 * 4)
++
++        .cfi_startproc
++ffi_call_SYSV:
++        stp     x29, x30, [sp, #-16]!
++	cfi_adjust_cfa_offset (16)
++        cfi_rel_offset (x29, 0)
++        cfi_rel_offset (x30, 8)
++
++        mov     x29, sp
++	cfi_def_cfa_register (x29)
++        sub     sp, sp, #ffi_call_SYSV_FS
++
++        stp     x21, x22, [sp, 0]
++        cfi_rel_offset (x21, 0 - ffi_call_SYSV_FS)
++        cfi_rel_offset (x22, 8 - ffi_call_SYSV_FS)
++
++        stp     x23, x24, [sp, 16]
++        cfi_rel_offset (x23, 16 - ffi_call_SYSV_FS)
++        cfi_rel_offset (x24, 24 - ffi_call_SYSV_FS)
++
++        mov     x21, x1
++        mov     x22, x2
++        mov     x24, x4
++
++        /* Allocate the stack space for the actual arguments, many
++           arguments will be passed in registers, but we assume
++           worst case and allocate sufficient stack for ALL of
++           the arguments.  */
++        sub     sp, sp, x3
++
++        /* unsigned (*prepare_fn) (struct call_context *context,
++				   unsigned char *stack, extended_cif *ecif);
++	 */
++        mov     x23, x0
++        mov     x0, x1
++        mov     x1, sp
++        /* x2 already in place */
++        blr     x23
++
++        /* Preserve the flags returned.  */
++        mov     x23, x0
++
++        /* Figure out if we should touch the vector registers.  */
++        tbz     x23, #AARCH64_FFI_WITH_V_BIT, 1f
++
++        /* Load the vector argument passing registers.  */
++        ldp     q0, q1, [x21, #8*32 +  0]
++        ldp     q2, q3, [x21, #8*32 + 32]
++        ldp     q4, q5, [x21, #8*32 + 64]
++        ldp     q6, q7, [x21, #8*32 + 96]
++1:
++        /* Load the core argument passing registers.  */
++        ldp     x0, x1, [x21,  #0]
++        ldp     x2, x3, [x21, #16]
++        ldp     x4, x5, [x21, #32]
++        ldp     x6, x7, [x21, #48]
++
++        /* Don't forget x8 which may be holding the address of a return buffer.
++	 */
++        ldr     x8,     [x21, #8*8]
++
++        blr     x24
++
++        /* Save the core argument passing registers.  */
++        stp     x0, x1, [x21,  #0]
++        stp     x2, x3, [x21, #16]
++        stp     x4, x5, [x21, #32]
++        stp     x6, x7, [x21, #48]
++
++        /* Note nothing useful ever comes back in x8!  */
++
++        /* Figure out if we should touch the vector registers.  */
++        tbz     x23, #AARCH64_FFI_WITH_V_BIT, 1f
++
++        /* Save the vector argument passing registers.  */
++        stp     q0, q1, [x21, #8*32 + 0]
++        stp     q2, q3, [x21, #8*32 + 32]
++        stp     q4, q5, [x21, #8*32 + 64]
++        stp     q6, q7, [x21, #8*32 + 96]
++1:
++        /* All done, unwind our stack frame.  */
++        ldp     x21, x22, [x29,  # - ffi_call_SYSV_FS]
++        cfi_restore (x21)
++        cfi_restore (x22)
++
++        ldp     x23, x24, [x29,  # - ffi_call_SYSV_FS + 16]
++        cfi_restore (x23)
++        cfi_restore (x24)
++
++        mov     sp, x29
++	cfi_def_cfa_register (sp)
++
++        ldp     x29, x30, [sp], #16
++	cfi_adjust_cfa_offset (-16)
++        cfi_restore (x29)
++        cfi_restore (x30)
++
++        ret
++
++        .cfi_endproc
++        .size ffi_call_SYSV, .-ffi_call_SYSV
++
++#define ffi_closure_SYSV_FS (8 * 2 + AARCH64_CALL_CONTEXT_SIZE)
++
++/* ffi_closure_SYSV
++
++   Closure invocation glue. This is the low level code invoked directly by
++   the closure trampoline to setup and call a closure.
++
++   On entry x17 points to a struct trampoline_data, x16 has been clobbered
++   all other registers are preserved.
++
++   We allocate a call context and save the argument passing registers,
++   then invoked the generic C ffi_closure_SYSV_inner() function to do all
++   the real work, on return we load the result passing registers back from
++   the call context.
++
++   On entry
++
++   extern void
++   ffi_closure_SYSV (struct trampoline_data *);
++
++   struct trampoline_data
++   {
++        UINT64 *ffi_closure;
++        UINT64 flags;
++   };
++
++   This function uses the following stack frame layout:
++
++   ==
++                saved x30(lr)
++   x29(fp)->    saved x29(fp)
++                saved x22
++                saved x21
++                ...
++   sp     ->    call_context
++   ==
++
++   Voila!  */
++
++        .text
++        .globl ffi_closure_SYSV
++        .cfi_startproc
++ffi_closure_SYSV:
++        stp     x29, x30, [sp, #-16]!
++	cfi_adjust_cfa_offset (16)
++        cfi_rel_offset (x29, 0)
++        cfi_rel_offset (x30, 8)
++
++        mov     x29, sp
++
++        sub     sp, sp, #ffi_closure_SYSV_FS
++	cfi_adjust_cfa_offset (ffi_closure_SYSV_FS)
++
++        stp     x21, x22, [x29, #-16]
++        cfi_rel_offset (x21, 0)
++        cfi_rel_offset (x22, 8)
++
++        /* Load x21 with &call_context.  */
++        mov     x21, sp
++        /* Preserve our struct trampoline_data *  */
++        mov     x22, x17
++
++        /* Save the rest of the argument passing registers.  */
++        stp     x0, x1, [x21, #0]
++        stp     x2, x3, [x21, #16]
++        stp     x4, x5, [x21, #32]
++        stp     x6, x7, [x21, #48]
++        /* Don't forget we may have been given a result scratch pad address.
++	 */
++        str     x8,     [x21, #64]
++
++        /* Figure out if we should touch the vector registers.  */
++        ldr     x0, [x22, #8]
++        tbz     x0, #AARCH64_FFI_WITH_V_BIT, 1f
++
++        /* Save the argument passing vector registers.  */
++        stp     q0, q1, [x21, #8*32 + 0]
++        stp     q2, q3, [x21, #8*32 + 32]
++        stp     q4, q5, [x21, #8*32 + 64]
++        stp     q6, q7, [x21, #8*32 + 96]
++1:
++        /* Load &ffi_closure..  */
++        ldr     x0, [x22, #0]
++        mov     x1, x21
++        /* Compute the location of the stack at the point that the
++           trampoline was called.  */
++        add     x2, x29, #16
++
++        bl      ffi_closure_SYSV_inner
++
++        /* Figure out if we should touch the vector registers.  */
++        ldr     x0, [x22, #8]
++        tbz     x0, #AARCH64_FFI_WITH_V_BIT, 1f
++
++        /* Load the result passing vector registers.  */
++        ldp     q0, q1, [x21, #8*32 + 0]
++        ldp     q2, q3, [x21, #8*32 + 32]
++        ldp     q4, q5, [x21, #8*32 + 64]
++        ldp     q6, q7, [x21, #8*32 + 96]
++1:
++        /* Load the result passing core registers.  */
++        ldp     x0, x1, [x21,  #0]
++        ldp     x2, x3, [x21, #16]
++        ldp     x4, x5, [x21, #32]
++        ldp     x6, x7, [x21, #48]
++        /* Note nothing usefull is returned in x8.  */
++
++        /* We are done, unwind our frame.  */
++        ldp     x21, x22, [x29,  #-16]
++        cfi_restore (x21)
++        cfi_restore (x22)
++
++        mov     sp, x29
++	cfi_adjust_cfa_offset (-ffi_closure_SYSV_FS)
++
++        ldp     x29, x30, [sp], #16
++	cfi_adjust_cfa_offset (-16)
++        cfi_restore (x29)
++        cfi_restore (x30)
++
++        ret
++        .cfi_endproc
++        .size ffi_closure_SYSV, .-ffi_closure_SYSV
+diff --git a/testsuite/lib/libffi.exp b/testsuite/lib/libffi.exp
+index 4a65ed1..8ee3f15 100644
+--- a/testsuite/lib/libffi.exp
++++ b/testsuite/lib/libffi.exp
+@@ -203,6 +203,10 @@ proc libffi_target_compile { source dest type options } {
+ 
+     lappend options "libs= -lffi"
+ 
++    if { [string match "aarch64*-*-linux*" $target_triplet] } {
++	lappend options "libs= -lpthread"
++    }
++
+     verbose "options: $options"
+     return [target_compile $source $dest $type $options]
+ }
+-- 
+1.7.9.5
+
-- 
1.7.9.5

^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox