feat: x86_64-montauk userspace cross toolchain
Add build-montauk-toolchain.sh: builds an OS-aware cross GCC/binutils (same versions and prefix as the bare-metal x86_64-elf toolchain) whose x86_64-montauk target links static ET_EXEC binaries against the Montauk libc sysroot with no special flags: 4 KiB max page size for the kernel ELF loader, -mno-red-zone by default, crt1/crti/crtn + -lc from the sysroot, __montauk__ defined. Target patches are checked into toolchain/patches/, the GCC target header into toolchain/files/. sys/types.h now includes <stdint.h> so hosted code (libgcov and friends) sees intptr_t via the stdio include chain. Co-Authored-By: Claude Fable 5 <[email protected]>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
--- a/config.sub
|
||||
+++ b/config.sub
|
||||
@@ -1768,7 +1768,7 @@
|
||||
| onefs* | tirtos* | phoenix* | fuchsia* | redox* | bme* \
|
||||
| midnightbsd* | amdhsa* | unleashed* | emscripten* | wasi* \
|
||||
| nsk* | powerunix* | genode* | zvmoe* | qnx* | emx* | zephyr* \
|
||||
- | fiwix* | mlibc* | cos* | mbr* | ironclad* )
|
||||
+ | fiwix* | mlibc* | cos* | mbr* | ironclad* | montauk* )
|
||||
;;
|
||||
# This one is extra strict with allowed versions
|
||||
sco3.2v2 | sco3.2v[4-9]* | sco5v6*)
|
||||
--- a/bfd/config.bfd
|
||||
+++ b/bfd/config.bfd
|
||||
@@ -681,6 +681,11 @@
|
||||
targ_selvecs="i386_elf32_vec iamcu_elf32_vec"
|
||||
want64=true
|
||||
;;
|
||||
+ x86_64-*-montauk*)
|
||||
+ targ_defvec=x86_64_elf64_vec
|
||||
+ targ_selvecs=i386_elf32_vec
|
||||
+ want64=true
|
||||
+ ;;
|
||||
x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia | x86_64-*-genode*)
|
||||
targ_defvec=x86_64_elf64_vec
|
||||
targ_selvecs="i386_elf32_vec iamcu_elf32_vec x86_64_elf32_vec"
|
||||
--- a/gas/configure.tgt
|
||||
+++ b/gas/configure.tgt
|
||||
@@ -229,6 +229,7 @@
|
||||
i386-*-beos*) fmt=elf ;;
|
||||
i386-*-elfiamcu) fmt=elf arch=iamcu ;;
|
||||
i386-*-elf*) fmt=elf ;;
|
||||
+ i386-*-montauk*) fmt=elf ;;
|
||||
i386-*-fuchsia*) fmt=elf ;;
|
||||
i386-*-haiku*) fmt=elf em=haiku ;;
|
||||
i386-*-genode*) fmt=elf ;;
|
||||
--- a/ld/configure.tgt
|
||||
+++ b/ld/configure.tgt
|
||||
@@ -1036,6 +1036,9 @@
|
||||
tdir_elf_i386=`echo ${targ_alias} | \
|
||||
sed -e 's/x86_64/i386/' -e 's/aout//'`
|
||||
;;
|
||||
+x86_64-*-montauk*) targ_emul=elf_x86_64
|
||||
+ targ_extra_emuls=elf_i386
|
||||
+ ;;
|
||||
x86_64-*-elf* | x86_64-*-rtems* | x86_64-*-fuchsia* | x86_64-*-genode*)
|
||||
targ_emul=elf_x86_64
|
||||
targ_extra_emuls="elf_i386 elf_iamcu elf32_x86_64"
|
||||
Reference in New Issue
Block a user