From 459626809a6ae62f17e0f86699fa525e21c09427 Mon Sep 17 00:00:00 2001 From: Lucas Schumacher Date: Sun, 13 Apr 2025 22:39:13 -0400 Subject: [PATCH] Add build test --- .gitignore | 5 +++++ Makefile | 28 ++++++++++++++++++++++++++-- buildtest.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+), 2 deletions(-) create mode 100644 buildtest.c diff --git a/.gitignore b/.gitignore index 5dfc50d..70fa0ca 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,9 @@ print print_aarch64 print_mips32 print_x64 +bldtst +bldtst_aarch64 +bldtst_mips32 +bldtst_x64 +bldtst_llvm a.out diff --git a/Makefile b/Makefile index d6aedd2..d8d0b3e 100644 --- a/Makefile +++ b/Makefile @@ -1,12 +1,19 @@ -all: print print_x64 print_aarch64 print_mips32 +all: print print_x64 print_aarch64 print_mips32 buildtest clean: if test -f print; then rm print; fi if test -f print_x64; then rm print_x64; fi if test -f print_aarch64; then rm print_aarch64; fi if test -f print_mips32; then rm print_mips32; fi + if test -f bldtst; then rm bldtst; fi + if test -f bldtst_llvm; then rm bldtst_llvm; fi + if test -f bldtst_x64; then rm bldtst_x64; fi + if test -f bldtst_aarch64; then rm bldtst_aarch64; fi + if test -f bldtst_mips32; then rm bldtst_mips32; fi -.PHONY: all clean +buildtest: bldtst bldtst_llvm bldtst_x64 bldtst_aarch64 bldtst_mips32 + +.PHONY: all buildtest clean print: gcc -static -nostdlib -Wno-builtin-declaration-mismatch -fno-stack-protector -o print print.c @@ -18,3 +25,20 @@ print_aarch64: print.c print_mips32: print.c clang --target=mips-linux-gnu -nostdlib -static -fuse-ld=lld -fno-stack-protector -fno-pic -o print_mips32 print.c + + + +bldtst: buildtest.c arch/*.c + gcc -static -nostdlib -Wno-builtin-declaration-mismatch -fno-stack-protector -o bldtst buildtest.c arch/*.c + +bldtst_llvm: buildtest.c arch/*.c + clang -nostdlib -static -fuse-ld=lld -fno-stack-protector -o bldtst_llvm buildtest.c arch/*.c + +bldtst_x64: buildtest.c arch/x86_64.c + clang --target=x86_64-linux-gnu -nostdlib -static -fuse-ld=lld -fno-stack-protector -o bldtst_x64 buildtest.c arch/x86_64.c + +bldtst_aarch64: buildtest.c + clang --target=aarch64-linux-gnu -nostdlib -static -fuse-ld=lld -fno-stack-protector -o bldtst_aarch64 buildtest.c arch/aarch64.c + +bldtst_mips32: buildtest.c + clang --target=mips-linux-gnu -nostdlib -static -fuse-ld=lld -fno-stack-protector -fno-pic -o bldtst_mips32 buildtest.c arch/mips.c diff --git a/buildtest.c b/buildtest.c new file mode 100644 index 0000000..e296c7f --- /dev/null +++ b/buildtest.c @@ -0,0 +1,48 @@ +#include +#include "sys.h" + + +int main() { +#if defined(__x86_64__) || defined(__aarch64__) || defined(__mips__) + uint64_t pid = fork(); + char msg[17] = {' '}; + msg[16] = '\n'; + for(int i = 0; i < 16; ++i) { + char nibble = (pid >> ((15 - i) * 4)) & 0xf; + char c; + if (nibble > 9) {c = nibble + '7';} + else {c = nibble + '0';} + msg[i] = c; + } + write(STDIO, msg, 17); + #else + char *msg = "Hello World!\n"; + write(STDIO, msg, 13); +#endif + return 69; +} +void __libc_start_main() {exit(main());} + +void _start() { + __libc_start_main(); +} + +void __start() { + _start(); +} +/* +#if defined(__x86_64__) + printf("Compiled for x86_64 architecture\n"); + #elif defined(__i386__) + printf("Compiled for x86 architecture\n"); + #elif defined(__arm__) + printf("Compiled for ARM architecture\n"); + #elif defined(__aarch64__) + printf("Compiled for ARM64 architecture\n"); + #elif defined(__mips__) + printf("Compiled for ARM architecture\n"); + #else + printf("Unknown architecture\n"); + #endif +*/ +