diff options
| author | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-13 01:17:04 +0100 |
|---|---|---|
| committer | Aleksa Vučković <aleksav013@gmail.com> | 2022-01-13 01:17:19 +0100 |
| commit | 8e377d9241ed4098b58d3531c80aa2c0cb285077 (patch) | |
| tree | f358d47a143258902b6b4f54d284dce31b083518 | |
| parent | 0daf9be64d6e5ef7c3e2883254d4982120488566 (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.s | 31 | ||||
| -rwxr-xr-x | scripts/install_headers.sh | 10 | ||||
| -rwxr-xr-x | scripts/setup.sh | 38 |
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 |
