From 46af98aa4327633d1509d728b3b85e0a4da39c9b Mon Sep 17 00:00:00 2001 From: Waldemar Brodkorb Date: Tue, 25 Mar 2014 12:05:56 +0100 Subject: add support for x86_64 toolchain with 32 bit abi --- toolchain/binutils/Makefile | 2 +- toolchain/gcc/Makefile | 4 +-- toolchain/gcc/patches/4.8.2/abi32.patch | 54 +++++++++++++++++++++++++++++++++ toolchain/glibc/Makefile.inc | 2 +- 4 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 toolchain/gcc/patches/4.8.2/abi32.patch (limited to 'toolchain') diff --git a/toolchain/binutils/Makefile b/toolchain/binutils/Makefile index 6490c19aa..4d34e3566 100644 --- a/toolchain/binutils/Makefile +++ b/toolchain/binutils/Makefile @@ -16,7 +16,7 @@ ifeq ($(ADK_TARGET_SYSTEM_RASPBERRY_PI),y) CONFOPTS+= --with-arch=armv6 endif -ifneq ($(strip $(ADK_LINUX_64)$(ADK_TARGET_KERNEL64)),) +ifneq ($(ADK_LINUX_64),) CONFOPTS+= --enable-64-bit-bfd endif diff --git a/toolchain/gcc/Makefile b/toolchain/gcc/Makefile index 5595f82dd..611de97bf 100644 --- a/toolchain/gcc/Makefile +++ b/toolchain/gcc/Makefile @@ -45,10 +45,10 @@ endif ifeq ($(ADK_LINUX_X86_64),y) ifeq ($(ADK_x32),y) -GCC_FINAL_CONFOPTS+= --enable-multilib --with-multilib-list=mx32 +GCC_FINAL_CONFOPTS+= --with-abi=x32 endif ifeq ($(ADK_32),y) -GCC_FINAL_CONFOPTS+= --enable-multilib --with-multilib-list=m32 +GCC_FINAL_CONFOPTS+= --with-abi=32 endif ifeq ($(ADK_64),y) GCC_FINAL_CONFOPTS+= --disable-biarch --disable-multilib diff --git a/toolchain/gcc/patches/4.8.2/abi32.patch b/toolchain/gcc/patches/4.8.2/abi32.patch new file mode 100644 index 000000000..856d608bd --- /dev/null +++ b/toolchain/gcc/patches/4.8.2/abi32.patch @@ -0,0 +1,54 @@ +diff -Nur gcc-4.8.2.orig/gcc/config/i386/biarch32.h gcc-4.8.2/gcc/config/i386/biarch32.h +--- gcc-4.8.2.orig/gcc/config/i386/biarch32.h 1970-01-01 01:00:00.000000000 +0100 ++++ gcc-4.8.2/gcc/config/i386/biarch32.h 2014-03-23 20:33:52.000000000 +0100 +@@ -0,0 +1,27 @@ ++/* Make configure files to produce biarch compiler defaulting to 32bit mode. ++ This file must be included very first, while the OS specific file later ++ to overwrite otherwise wrong defaults. ++ Copyright (C) 2001-2014 Free Software Foundation, Inc. ++ ++This file is part of GCC. ++ ++GCC is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GCC is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++You should have received a copy of the GNU General Public License and ++a copy of the GCC Runtime Library Exception along with this program; ++see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++. */ ++ ++#define TARGET_64BIT_DEFAULT 0 +diff -Nur gcc-4.8.2.orig/gcc/config.gcc gcc-4.8.2/gcc/config.gcc +--- gcc-4.8.2.orig/gcc/config.gcc 2013-10-03 02:47:24.000000000 +0200 ++++ gcc-4.8.2/gcc/config.gcc 2014-03-22 13:15:18.000000000 +0100 +@@ -522,6 +522,9 @@ + 64 | m64) + tm_file="i386/biarch64.h ${tm_file}" + ;; ++ 32 | m32) ++ tm_file="i386/biarch32.h ${tm_file}" ++ ;; + x32 | mx32) + tm_file="i386/biarchx32.h ${tm_file}" + ;; +@@ -1343,6 +1346,9 @@ + x32 | mx32) + x86_multilibs="mx32" + ;; ++ 32 | m32) ++ x86_multilibs="m32" ++ ;; + *) + x86_multilibs="m64,m32" + ;; diff --git a/toolchain/glibc/Makefile.inc b/toolchain/glibc/Makefile.inc index 6671f1e2d..3a9f24e33 100644 --- a/toolchain/glibc/Makefile.inc +++ b/toolchain/glibc/Makefile.inc @@ -6,7 +6,7 @@ PKG_VERSION:= 2.19 PKG_RELEASE:= 1 PKG_MD5SUM:= 5374d29864b583622b62bfc6b8429418 PKG_SITES:= ${MASTER_SITE_GNU:=glibc/} -ifeq ($(ADK_TARGET_ABI_32),y) +ifeq ($(ADK_32),y) GLIBC_TARGET_NAME:= i686-openadk-linux-gnu else GLIBC_TARGET_NAME:= $(GNU_TARGET_NAME) -- cgit v1.2.3