From 85d4268b0153090492cdc34d31088460bec5c705 Mon Sep 17 00:00:00 2001 From: apio Date: Sun, 2 Oct 2022 10:33:34 +0200 Subject: [PATCH] Hosted Binutils for x86_64-luna --- tools/binutils.patch | 117 ++++++++++++++++++++++++++++++++++++++++ tools/env.sh | 2 +- tools/setup-binutils.sh | 10 +++- tools/setup-env.sh | 5 +- tools/test-binutils.sh | 4 +- 5 files changed, 132 insertions(+), 6 deletions(-) create mode 100644 tools/binutils.patch diff --git a/tools/binutils.patch b/tools/binutils.patch new file mode 100644 index 00000000..d375e06f --- /dev/null +++ b/tools/binutils.patch @@ -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 diff --git a/tools/env.sh b/tools/env.sh index 879ab559..3849e8c9 100755 --- a/tools/env.sh +++ b/tools/env.sh @@ -1,3 +1,3 @@ #!/bin/sh export LUNA_ROOT=$(realpath $(dirname $0)/..) -export PATH=$LUNA_ROOT/toolchain/x86-64-elf/bin:$LUNA_ROOT/toolchain/dist:$PATH \ No newline at end of file +export PATH=$LUNA_ROOT/toolchain/x86-64-luna/bin:$LUNA_ROOT/toolchain/dist:$PATH \ No newline at end of file diff --git a/tools/setup-binutils.sh b/tools/setup-binutils.sh index 5ff288cc..0b4e16ea 100755 --- a/tools/setup-binutils.sh +++ b/tools/setup-binutils.sh @@ -17,13 +17,21 @@ echo Extracting Binutils... 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... mkdir -p 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... diff --git a/tools/setup-env.sh b/tools/setup-env.sh index 4b38b9be..bd23ce23 100755 --- a/tools/setup-env.sh +++ b/tools/setup-env.sh @@ -4,5 +4,6 @@ source $(dirname $0)/env.sh export LUNA_GCC_VERSION_REQUIRED=12.1.0 export LUNA_BINUTILS_VERSION_REQUIRED=2.38 -export PREFIX=$LUNA_ROOT/toolchain/x86-64-elf -export TARGET=x86_64-elf \ No newline at end of file +export BUILD_PREFIX=$LUNA_ROOT/toolchain/x86-64-luna +export BUILD_TARGET=x86_64-luna +export BUILD_SYSROOT=$LUNA_ROOT/base \ No newline at end of file diff --git a/tools/test-binutils.sh b/tools/test-binutils.sh index c8b52acd..84041a80 100755 --- a/tools/test-binutils.sh +++ b/tools/test-binutils.sh @@ -2,9 +2,9 @@ set -e source $(dirname $0)/setup-env.sh -if [ -x "$(command -v x86_64-elf-ar)" ] +if [ -x "$(command -v x86_64-luna-ar)" ] 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 exit 0 else