Hosted Binutils for x86_64-luna

This commit is contained in:
apio 2022-10-02 10:33:34 +02:00
parent fcf5923cc0
commit 85d4268b01
5 changed files with 132 additions and 6 deletions

117
tools/binutils.patch Normal file
View File

@ -0,0 +1,117 @@
diff --color -rN -u binutils-2.38/bfd/config.bfd build/binutils-2.38/bfd/config.bfd
--- a/binutils-2.38/bfd/config.bfd 2022-01-22 13:14:07.000000000 +0100
+++ b/binutils-2.38/bfd/config.bfd 2022-10-01 22:12:16.914033792 +0200
@@ -651,6 +651,11 @@
targ_selvecs="iamcu_elf32_vec i386_pei_vec"
targ64_selvecs="x86_64_elf64_vec x86_64_elf32_vec x86_64_pe_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
;;
+ i[3-7]86-*-luna*)
+ targ_defvec=i386_elf32_vec
+ targ_selvecs=
+ targ64_selvecs=x86_64_elf64_vec
+ ;;
i[3-7]86-*-redox*)
targ_defvec=i386_elf32_vec
targ_selvecs=
@@ -706,6 +711,11 @@
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec i386_pei_vec x86_64_pe_vec x86_64_pei_vec l1om_elf64_vec k1om_elf64_vec"
want64=true
;;
+ x86_64-*-luna*)
+ targ_defvec=x86_64_elf64_vec
+ targ_selvecs=i386_elf32_vec
+ want64=true
+ ;;
x86_64-*-mingw* | x86_64-*-pe | x86_64-*-pep | x86_64-*-cygwin)
targ_defvec=x86_64_pe_vec
targ_selvecs="x86_64_pe_vec x86_64_pei_vec x86_64_pe_big_vec x86_64_elf64_vec l1om_elf64_vec k1om_elf64_vec i386_pe_vec i386_pei_vec i386_elf32_vec iamcu_elf32_vec"
diff --color -rN -u binutils-2.38/gas/configure.tgt build/binutils-2.38/gas/configure.tgt
--- a/binutils-2.38/gas/configure.tgt 2022-01-22 13:14:08.000000000 +0100
+++ b/binutils-2.38/gas/configure.tgt 2022-10-01 22:12:38.115093972 +0200
@@ -238,6 +238,7 @@
x86_64*-linux-gnux32) arch=x86_64:32 ;;
esac ;;
i386-*-lynxos*) fmt=elf em=lynx ;;
+ i386-*-luna*) fmt=elf em=gnu ;;
i386-*-redox*) fmt=elf ;;
i386-*-solaris*) fmt=elf em=solaris ;;
i386-*-freebsd* \
diff --color -rN -u binutils-2.38/ld/configure.tgt build/binutils-2.38/ld/configure.tgt
--- a/binutils-2.38/ld/configure.tgt 2022-01-22 15:19:36.000000000 +0100
+++ b/binutils-2.38/ld/configure.tgt 2022-10-01 22:15:04.853571062 +0200
@@ -329,6 +329,11 @@
targ64_extra_emuls="elf_x86_64 elf32_x86_64 elf_l1om elf_k1om"
targ64_extra_libpath="elf_x86_64 elf32_x86_64"
;;
+i[3-7]86-*-luna*)
+ targ_emul=elf_i386_luna
+ targ_extra_emuls=elf_i386
+ targ64_extra_emuls="elf_x86_64_luna elf_x86_64"
+ ;;
i[3-7]86-*-redox*) targ_emul=elf_i386
targ_extra_emuls=elf_x86_64
;;
@@ -967,6 +972,10 @@
targ_extra_libpath="elf_i386 elf32_x86_64 elf_l1om elf_k1om"
tdir_elf_i386=`echo ${targ_alias} | sed -e 's/x86_64/i386/'`
;;
+x86_64-*-luna*)
+ targ_emul=elf_x86_64_luna
+ targ_extra_emuls="elf_i386_luna elf_x86_64 elf_i386"
+ ;;
x86_64-*-redox*) targ_emul=elf_x86_64
targ_extra_emuls=elf_i386
;;
diff --color -rN -u binutils-2.38/ld/emulparams/elf_i386_luna.sh build/binutils-2.38/ld/emulparams/elf_i386_luna.sh
--- a/dev/null 1970-01-01 01:00:00.000000000 +0100
+++ b/binutils-2.38/ld/emulparams/elf_i386_luna.sh 2022-10-01 21:52:12.394068335 +0200
@@ -0,0 +1,3 @@
+source_sh ${srcdir}/emulparams/elf_i386.sh
+TEXT_START_ADDR=0x08000000
+MAXPAGESIZE=0x1000
\ No newline at end of file
diff --color -rN -u binutils-2.38/ld/emulparams/elf_x86_64_luna.sh build/binutils-2.38/ld/emulparams/elf_x86_64_luna.sh
--- a/dev/null 1970-01-01 01:00:00.000000000 +0100
+++ b/binutils-2.38/ld/emulparams/elf_x86_64_luna.sh 2022-10-01 21:53:00.411200592 +0200
@@ -0,0 +1,2 @@
+source_sh ${srcdir}/emulparams/elf_x86_64.sh
+MAXPAGESIZE=0x1000
\ No newline at end of file
diff --color -rN -u binutils-2.38/ld/Makefile.am build/binutils-2.38/ld/Makefile.am
--- a/binutils-2.38/ld/Makefile.am 2022-01-22 13:14:09.000000000 +0100
+++ b/binutils-2.38/ld/Makefile.am 2022-10-01 22:18:02.660263017 +0200
@@ -278,6 +278,7 @@
eelf32xtensa.c \
eelf32z80.c \
eelf_i386.c \
+ eelf_i386_luna.c \
eelf_i386_be.c \
eelf_i386_fbsd.c \
eelf_i386_haiku.c \
@@ -464,6 +465,7 @@
eelf_x86_64_fbsd.c \
eelf_x86_64_haiku.c \
eelf_x86_64_sol2.c \
+ eelf_x86_64_luna.c \
ehppa64linux.c \
ei386pep.c \
emmo.c
diff --color -rN -u binutils-2.38/ld/Makefile.in build/binutils-2.38/ld/Makefile.in
--- a/binutils-2.38/ld/Makefile.in 2022-02-09 12:49:03.000000000 +0100
+++ b/binutils-2.38/ld/Makefile.in 2022-10-01 22:17:46.740196925 +0200
@@ -769,6 +769,7 @@
eelf32xtensa.c \
eelf32z80.c \
eelf_i386.c \
+ eelf_i386_luna.c \
eelf_i386_be.c \
eelf_i386_fbsd.c \
eelf_i386_haiku.c \
@@ -954,6 +955,7 @@
eelf_x86_64_fbsd.c \
eelf_x86_64_haiku.c \
eelf_x86_64_sol2.c \
+ eelf_x86_64_luna.c \
ehppa64linux.c \
ei386pep.c \
emmo.c

View File

@ -1,3 +1,3 @@
#!/bin/sh #!/bin/sh
export LUNA_ROOT=$(realpath $(dirname $0)/..) export LUNA_ROOT=$(realpath $(dirname $0)/..)
export PATH=$LUNA_ROOT/toolchain/x86-64-elf/bin:$LUNA_ROOT/toolchain/dist:$PATH export PATH=$LUNA_ROOT/toolchain/x86-64-luna/bin:$LUNA_ROOT/toolchain/dist:$PATH

View File

@ -17,13 +17,21 @@ echo Extracting Binutils...
tar xf toolchain/tarballs/binutils-$LUNA_BINUTILS_VERSION_REQUIRED.tar.xz -C toolchain/build/ tar xf toolchain/tarballs/binutils-$LUNA_BINUTILS_VERSION_REQUIRED.tar.xz -C toolchain/build/
echo Patching Binutils...
cd toolchain
patch -u -i $LUNA_ROOT/tools/binutils.patch -p 1 -d build
cd -
echo Configuring Binutils... echo Configuring Binutils...
mkdir -p toolchain/build/binutils mkdir -p toolchain/build/binutils
cd toolchain/build/binutils cd toolchain/build/binutils
../binutils-$LUNA_BINUTILS_VERSION_REQUIRED/configure --prefix="$PREFIX" --target=$TARGET --disable-nls --with-sysroot --disable-werror ../binutils-$LUNA_BINUTILS_VERSION_REQUIRED/configure --prefix="$BUILD_PREFIX" --target=$BUILD_TARGET --disable-nls --with-sysroot=$BUILD_SYSROOT --disable-werror
echo Building Binutils... echo Building Binutils...

View File

@ -4,5 +4,6 @@ source $(dirname $0)/env.sh
export LUNA_GCC_VERSION_REQUIRED=12.1.0 export LUNA_GCC_VERSION_REQUIRED=12.1.0
export LUNA_BINUTILS_VERSION_REQUIRED=2.38 export LUNA_BINUTILS_VERSION_REQUIRED=2.38
export PREFIX=$LUNA_ROOT/toolchain/x86-64-elf export BUILD_PREFIX=$LUNA_ROOT/toolchain/x86-64-luna
export TARGET=x86_64-elf export BUILD_TARGET=x86_64-luna
export BUILD_SYSROOT=$LUNA_ROOT/base

View File

@ -2,9 +2,9 @@
set -e set -e
source $(dirname $0)/setup-env.sh source $(dirname $0)/setup-env.sh
if [ -x "$(command -v x86_64-elf-ar)" ] if [ -x "$(command -v x86_64-luna-ar)" ]
then then
if [ "$(x86_64-elf-ar --version | head -n 1 | awk '{ print $5 }')" == "$LUNA_BINUTILS_VERSION_REQUIRED" ] if [ "$(x86_64-luna-ar --version | head -n 1 | awk '{ print $5 }')" == "$LUNA_BINUTILS_VERSION_REQUIRED" ]
then then
exit 0 exit 0
else else