aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksa Vučković <aleksav013@gmail.com>2022-01-13 01:17:04 +0100
committerAleksa Vučković <aleksav013@gmail.com>2022-01-13 01:17:19 +0100
commit8e377d9241ed4098b58d3531c80aa2c0cb285077 (patch)
treef358d47a143258902b6b4f54d284dce31b083518
parent0daf9be64d6e5ef7c3e2883254d4982120488566 (diff)
bugfixes and additions
-rw-r--r--files/aleksa-binutils-2.37.diff (renamed from scripts/aleksa-binutils-2.37.diff)0
-rw-r--r--files/aleksa-gcc-11.2.0.diff (renamed from scripts/aleksa-gcc-11.2.0.diff)0
-rw-r--r--files/crt0.s31
-rwxr-xr-xscripts/install_headers.sh10
-rwxr-xr-xscripts/setup.sh38
5 files changed, 57 insertions, 22 deletions
diff --git a/scripts/aleksa-binutils-2.37.diff b/files/aleksa-binutils-2.37.diff
index 79cde93..79cde93 100644
--- a/scripts/aleksa-binutils-2.37.diff
+++ b/files/aleksa-binutils-2.37.diff
diff --git a/scripts/aleksa-gcc-11.2.0.diff b/files/aleksa-gcc-11.2.0.diff
index 3373721..3373721 100644
--- a/scripts/aleksa-gcc-11.2.0.diff
+++ b/files/aleksa-gcc-11.2.0.diff
diff --git a/files/crt0.s b/files/crt0.s
new file mode 100644
index 0000000..8c735f1
--- /dev/null
+++ b/files/crt0.s
@@ -0,0 +1,31 @@
+.section .text
+
+.global _start
+_start:
+ # Set up end of the stack frame linked list.
+ movl $0, %ebp
+ pushl %ebp # rip=0
+ pushl %ebp # rbp=0
+ movl %esp, %ebp
+
+ # We need those in a moment when we call main.
+ pushl %esi
+ pushl %edi
+
+ # Prepare signals, memory allocation, stdio and such.
+# call initialize_standard_library
+
+ # Run the global constructors.
+ call _init
+
+ # Restore argc and argv.
+ popl %edi
+ popl %esi
+
+ # Run main
+ call main
+
+ # Terminate the process with the exit code.
+ movl %eax, %edi
+# call exit
+.size _start, . - _start
diff --git a/scripts/install_headers.sh b/scripts/install_headers.sh
index ae0e560..99e7266 100755
--- a/scripts/install_headers.sh
+++ b/scripts/install_headers.sh
@@ -1,14 +1,12 @@
#!/bin/sh
SYSROOT="/opt/aleksa"
-GCC_DIR=$(gcc --print-file-name=)
+SYSROOT_INCLUDE=$SYSROOT/usr/include
if [ ! -d mykernel ]; then
git clone "https://github.com/aleksav013/mykernel"
fi
-rm -rf "$SYSROOT/usr/include"
-mkdir -p "$SYSROOT/usr/include"
-cp -r "$GCC_DIR"include/* "$SYSROOT/usr/include"
-cp -r mykernel/src/include/* "$SYSROOT/usr/include"
-cp "$SYSROOT/usr/include/stdint-gcc.h" "$SYSROOT/usr/include/stdint.h"
+rm -rf "$SYSROOT_INCLUDE"
+mkdir -p "$SYSROOT_INCLUDE"
+cp -r mykernel/src/include/* "$SYSROOT_INCLUDE"
diff --git a/scripts/setup.sh b/scripts/setup.sh
index 38fc428..1340090 100755
--- a/scripts/setup.sh
+++ b/scripts/setup.sh
@@ -31,7 +31,7 @@ patch_gnu()
if [ ! -d "./binutils-2.37" ]; then
cp -r "../binutils-2.37" .
- patch -p0 < "../scripts/aleksa-binutils-2.37.diff"
+ patch -p0 < "../files/aleksa-binutils-2.37.diff"
cd "./binutils-2.37/ld" || exit
sed -i "s/2.69/2.71/" "Makefile.am"
aclocal
@@ -41,17 +41,23 @@ patch_gnu()
if [ ! -d "./gcc-11.2.0" ]; then
cp -r "../gcc-11.2.0" .
- patch -p0 < "../scripts/aleksa-gcc-11.2.0.diff"
+ patch -p0 < "../files/aleksa-gcc-11.2.0.diff"
cd "./gcc-11.2.0/libstdc++-v3" || exit
sed -i "s/2.69/2.71/" "../config/override.m4"
autoreconf
cd "../.." || exit
fi
+ cd ".." || exit
+}
+
+install_headers()
+{
+ ./scripts/install_headers.sh
}
build_binutils()
{
- cd "./binutils-2.37" || exit
+ cd "./mine/binutils-2.37" || exit
mkdir -p build
cd build || exit
@@ -66,17 +72,12 @@ build_binutils()
make -j4
make install
- cd "../.." || exit
-}
-
-install_headers()
-{
- ../scripts/install_headers.sh
+ cd "../../.." || exit
}
build_gcc()
{
- cd "./gcc-11.2.0" || exit
+ cd "./mine/gcc-11.2.0" || exit
mkdir -p build
cd build || exit
@@ -86,18 +87,22 @@ build_gcc()
--prefix="$SYSROOT/usr" \
--with-sysroot="$SYSROOT" \
--disable-nls \
+ --disable-plugin \
--enable-languages=c,c++
fi
- make -j4 all-gcc
- make -j4 all-target-libgcc
+ make -j4 all-gcc all-target-libgcc
+ make install-gcc install-target-libgcc
- make -k check || true
+ cd "../../.." || exit
+}
- make install-gcc
- make install-target-libgcc
+additions()
+{
+ GCC_INCLUDE=$(i686-aleksa-gcc --print-file-name=)
- cd "../.." || exit
+ i686-aleksa-as files/crt0.s -o "$GCC_INCLUDE/crt0.o"
+ touch "$GCC_INCLUDE/libc.a"
}
main()
@@ -108,6 +113,7 @@ main()
install_headers
build_binutils
build_gcc
+ additions
}
main