Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - OsDevNewbie

Seiten: 1 2 [3] 4 5 ... 15
41
Softwareentwicklung / Re: GCC für OS compilieren
« am: 25. July 2015, 15:31 »
Es hat soweit alles geklappt und ich habe jetzt mal versucht eine kleine Anwendung zu kompilieren und zwar so:
~/Dokumente/test/env/bin/x86_64-pc-youros-gcc -v -o main main.c
Und ich bekomme folgende Fehlermeldung:
/tmp/cci2MKYd.o: In function `thread':
main.c:(.text+0x5): relocation truncated to fit: R_X86_64_32 against `.rodata'
/tmp/cci2MKYd.o: In function `main':
main.c:(.text+0x30): relocation truncated to fit: R_X86_64_32 against `.rodata'
main.c:(.text+0x73): relocation truncated to fit: R_X86_64_32 against symbol `thread' defined in .text section in /tmp/cci2MKYd.o
main.c:(.text+0x7d): relocation truncated to fit: R_X86_64_32 against `.rodata'
main.c:(.text+0x82): relocation truncated to fit: R_X86_64_32 against `.rodata'
main.c:(.text+0x97): relocation truncated to fit: R_X86_64_32 against `.rodata'
/tmp/cci2MKYd.o: In function `parseFile':
main.c:(.text+0x11c): relocation truncated to fit: R_X86_64_32 against `.rodata'
main.c:(.text+0x18d): relocation truncated to fit: R_X86_64_32 against `.rodata'
main.c:(.text+0x1bc): relocation truncated to fit: R_X86_64_32 against `.rodata'
main.c:(.text+0x1cd): relocation truncated to fit: R_X86_64_32 against `.rodata'
collect2: error: ld returned 1 exit status
Ich verstehe aber nicht wieso die .text und die .rodata Sektionen soweit auseinander sein sollten. Bei Binutils habe ich einfach nur elf-x86-64.sh in mein Skript eingebunden und die TEXT_START_ADDRESS geändert. Muss ich da noch mehr ändern?
42
Softwareentwicklung / Re: GCC für OS compilieren
« am: 18. July 2015, 02:38 »
Habe ich das richtig verstanden, dass in "native_system_header_dir" die Headerdateien der Library meines OS's sein müssen?
Und welche Binaries muss ich jetzt benutzen zum kompilieren? Ich habe nämlich einen bin Ordner und dann und dort sind die Binaries mit dem Namen x86_64-pc-youros-* und dann hab ich noch einen Ordner mit dem Namen x86_64-pc-youros/bin und dort befinden sich nochmal einige Binaries (so wie ich das sehe vor allem von binutils).
Ich danke euch nochmals für eure Antworten.
43
Softwareentwicklung / Re: GCC für OS compilieren
« am: 12. July 2015, 14:05 »
Ist die fehlermeldung schon von diesem Code?
Ja die Fehlermeldung ist von diesem Code.
Danke für deinen Fix. Ich glaube es funktioniert jetzt. Auf jeden Fall kommt jetzt die nächste Fehlermeldung:
g++ -c   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -DGENERATOR_FILE -I. -Ibuild -I../.././gcc -I../.././gcc/build -I../.././gcc/../include  -I../.././gcc/../libcpp/include  \
-o build/genpreds.o ../.././gcc/genpreds.c
In file included from ./tm.h:24:0,
                 from ../.././gcc/genpreds.c:26:
../.././gcc/config/youros.h:13:8: error: attempt to use poisoned "STANDARD_INCLUDE_DIR"
 #undef STANDARD_INCLUDE_DIR
        ^
../.././gcc/config/youros.h:14:9: error: attempt to use poisoned "STANDARD_INCLUDE_DIR"
 #define STANDARD_INCLUDE_DIR ="/lib/include"
         ^
make[1]: *** [build/genpreds.o] Fehler 1
make[1]: Verzeichnis »/home/pascal/Dokumente/cross/src/gcc-5.1.0/host-x86_64-unknown-linux-gnu/gcc« wird verlassen
make: *** [all-gcc] Fehler 2
Was muss ich denn jetzt anstelle von STANDARD_INCLUDE_DIR verwenden? Kann man das irgendwo nachsehen, was man da alles für Makros definieren kann?
Ich danke vielmals für eure Antworten.
44
Softwareentwicklung / Re: GCC für OS compilieren
« am: 12. July 2015, 02:21 »
Hier ist ein git Repository mit den Änderungen von mir: https://github.com/Gurgel100/gcc
Hier ist noch der dazugehörige Patch:
diff --git a/config.sub b/config.sub
index 6d2e94c..71fcbe5 100755
--- a/config.sub
+++ b/config.sub
@@ -118,7 +118,7 @@ case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
   linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
   knetbsd*-gnu* | netbsd*-gnu* | \
-  kopensolaris*-gnu* | \
+  kopensolaris*-gnu* | youros* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
     os=-$maybe_os
     basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
@@ -1526,6 +1526,9 @@ case $os in
  -nacl*)
  ;;
  -none)
+ ;;
+ -youros*)
+ os=-youros
  ;;
  *)
  # Get rid of the `-' at the beginning of $os.
diff --git a/fixincludes/mkfixinc.sh b/fixincludes/mkfixinc.sh
index 6653fed..ef2f2ab 100755
--- a/fixincludes/mkfixinc.sh
+++ b/fixincludes/mkfixinc.sh
@@ -11,6 +11,7 @@ target=fixinc.sh
 
 # Check for special fix rules for particular targets
 case $machine in
+ *-youros* | \
     i?86-*-cygwin* | \
     i?86-*-mingw32* | \
     x86_64-*-mingw32* | \
diff --git a/gcc/config.gcc b/gcc/config.gcc
index cb08a5c..6bbcc00 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -868,6 +868,11 @@ case ${target} in
     *) echo 'Unknown thread configuration for VxWorks'; exit 1 ;;
   esac
   ;;
+*-*-youros*)
+  gas=yes
+  gnu_ld=yes
+  default_use_cxa_atexit=no
+  ;;
 *-*-elf|arc*-*-elf*)
   # Assume that newlib is being used and so __cxa_atexit is provided.
   default_use_cxa_atexit=yes
@@ -1739,6 +1744,8 @@ i[34567]86-*-interix[3-9]*)
  tm_file="${tm_file} dbxcoff.h"
  fi
  ;;
+x86_64-*-youros*)
+ tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h i386/i386elf.h i386/x86-64.h youros.h"
 ia64*-*-elf*)
  tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h ia64/sysv4.h ia64/elf.h"
  tmake_file="ia64/t-ia64"
diff --git a/libgcc/config.host b/libgcc/config.host
index 4b15895..cee3721 100644
--- a/libgcc/config.host
+++ b/libgcc/config.host
@@ -718,6 +718,10 @@ x86_64-*-mingw*)
  extra_parts="$extra_parts vtv_start.o vtv_end.o vtv_start_preinit.o vtv_end_preinit.o"
  fi
  ;;
+x86_64-*-youros*)
+ extra_parts="$extra_parts crtbegin.o crtend.o"
+ tmake_file="$tmake_file i386/t-crtstuff t-crtstuff-pic t-libgcc-pic"
+ ;;
 i[34567]86-*-interix[3-9]*)
  tmake_file="$tmake_file i386/t-interix i386/t-chkstk"
  ;;
diff --git a/libstdc++-v3/crossconfig.m4 b/libstdc++-v3/crossconfig.m4
index 10247f9..8c5ffac 100644
--- a/libstdc++-v3/crossconfig.m4
+++ b/libstdc++-v3/crossconfig.m4
@@ -269,6 +269,12 @@ case "${host}" in
     AC_DEFINE(HAVE_TANF)
     AC_DEFINE(HAVE_TANHF)
     ;;
+  *-youros*)
+ GLIBCXX_CHECK_COMPILER_FEATURES
+ GLIBCXX_CHECK_LINKER_FEATURES
+ GLIBCXX_CHECK_MATH_SUPPORT
+ GLIBCXX_CHECK_STDLIB_SUPPORT
+ ;;
   *)
     AC_MSG_ERROR([No support for this host/target combination.])
    ;;
45
Softwareentwicklung / Re: GCC für OS compilieren
« am: 11. July 2015, 02:47 »
Also in i386/att.h werden zwar ASM_BYTE und ASM_SHORT definiert, aber warum gibt es dann die Meldung, dass es nicht definiert ist. Was macht denn eigentlich diese .md Datei?
Vielen Dank für deine rasche Antwort, auch wenn sie mir nicht sehr viel weiterhilft.
46
Softwareentwicklung / Re: GCC für OS compilieren
« am: 10. July 2015, 22:27 »
Nachdem ich die binutils endlich kompilieren konnte habe ich jetzt veruscht gcc zu kompilieren. Leider kommen irgendwann folgende Meldungen:
/bin/bash ../.././gcc/../move-if-change tmp-output.c insn-output.c
echo timestamp > s-output
g++ -c   -g -O2 -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE  -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings   -DHAVE_CONFIG_H -I. -I. -I../.././gcc -I../.././gcc/. -I../.././gcc/../include -I../.././gcc/../libcpp/include  -I../.././gcc/../libdecnumber -I../.././gcc/../libdecnumber/dpd -I../libdecnumber -I../.././gcc/../libbacktrace   -o insn-output.o -MT insn-output.o -MMD -MP -MF ./.deps/insn-output.TPo insn-output.c
../.././gcc/config/i386/i386.md: In function ‘const char* output_774(rtx_def**, rtx_insn*)’:
../.././gcc/config/i386/i386.md:13225:12: error: ‘ASM_BYTE’ was not declared in this scope
     fputs (ASM_BYTE "0x66\n", asm_out_file);
            ^
../.././gcc/config/i386/i386.md:13228:10: error: ‘ASM_SHORT’ was not declared in this scope
   fputs (ASM_SHORT "0x6666\n", asm_out_file);
          ^
../.././gcc/config/i386/i386.md: In function ‘const char* output_775(rtx_def**, rtx_insn*)’:
../.././gcc/config/i386/i386.md:13225:12: error: ‘ASM_BYTE’ was not declared in this scope
     fputs (ASM_BYTE "0x66\n", asm_out_file);
            ^
../.././gcc/config/i386/i386.md:13228:10: error: ‘ASM_SHORT’ was not declared in this scope
   fputs (ASM_SHORT "0x6666\n", asm_out_file);
          ^
make[1]: *** [insn-output.o] Fehler 1
make[1]: Verzeichnis »/home/pascal/Dokumente/cross/src/gcc-5.1.0/host-x86_64-unknown-linux-gnu/gcc« wird verlassen
make: *** [all-gcc] Fehler 2
Ich habe alles nach Vorlage gemacht und im Internet habe ich auch nichts hilfreiches zu diesem Fehler gefunden. Anscheinend fehlen aber die Definitionen von ASM_BYTE und ASM_SHORT. Wo sollten diese definiert sein? Ich hoffe es kann mir jemand von euch helfen.
47
Softwareentwicklung / Re: GCC für OS compilieren
« am: 01. May 2015, 00:43 »
Ich habe jetzt mal versucht binutils-2.25 zu kompilieren mit target mein os.
Leider schlägt es irgendwo fehl und ich weiss nicht wo. Vielleicht wisst ihr ja was das Problem ist. Hier der log des Befehls make:
make[1]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie« wird betreten
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/libiberty« wird betreten
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/libiberty/testsuite« wird betreten
make[3]: Für das Ziel »all« ist nichts zu tun.
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/libiberty/testsuite« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/libiberty« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/intl« wird betreten
make[2]: Für das Ziel »all« ist nichts zu tun.
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/intl« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird betreten
Making info in doc
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/doc« wird betreten
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/doc« wird verlassen
Making info in po
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/po« wird betreten
make[3]: Für das Ziel »info« ist nichts zu tun.
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/po« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird betreten
make[3]: Für das Ziel »info-am« ist nichts zu tun.
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird verlassen
make  all-recursive
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird betreten
Making all in doc
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/doc« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/doc« wird verlassen
Making all in po
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/po« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd/po« wird verlassen
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird betreten
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/bfd« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes« wird betreten
make  all-recursive
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes« wird betreten
Making all in .
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes« wird betreten
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes« wird verlassen
Making all in po
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes/po« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes/po« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/opcodes« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas« wird betreten
make  all-recursive
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas« wird betreten
Making all in doc
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas/doc« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas/doc« wird verlassen
Making all in po
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas/po« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas/po« wird verlassen
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas« wird betreten
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gas« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird betreten
Making info in doc
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/doc« wird betreten
make[3]: Für das Ziel »info« ist nichts zu tun.
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/doc« wird verlassen
Making info in po
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/po« wird betreten
make[3]: Für das Ziel »info« ist nichts zu tun.
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/po« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird betreten
make[3]: Für das Ziel »info-am« ist nichts zu tun.
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird verlassen
make  all-recursive
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird betreten
Making all in doc
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/doc« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/doc« wird verlassen
Making all in po
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/po« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils/po« wird verlassen
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird betreten
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/binutils« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/etc« wird betreten
make[2]: Für das Ziel »all« ist nichts zu tun.
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/etc« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof« wird betreten
make  all-recursive
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof« wird betreten
Making all in po
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof/po« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof/po« wird verlassen
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof« wird betreten
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof« wird verlassen
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/gprof« wird verlassen
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld« wird betreten
make  all-recursive
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld« wird betreten
Making all in po
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld/po« wird betreten
make[4]: Für das Ziel »all« ist nichts zu tun.
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld/po« wird verlassen
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld« wird betreten
/bin/bash ./libtool --tag=CC   --mode=link gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2  -static-libstdc++ -static-libgcc  -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o plugin.o ldbuildid.o eelf_x86_64_youros.o eelf_x86_64.o  ../bfd/libbfd.la ../libiberty/libiberty.a  -lz -ldl -ldl
libtool: link: gcc -W -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -g -O2 -static-libstdc++ -static-libgcc -o ld-new ldgram.o ldlex-wrapper.o lexsup.o ldlang.o mri.o ldctor.o ldmain.o ldwrite.o ldexp.o ldemul.o ldver.o ldmisc.o ldfile.o ldcref.o plugin.o ldbuildid.o eelf_x86_64_youros.o eelf_x86_64.o  ../bfd/.libs/libbfd.a ../libiberty/libiberty.a -lz -ldl
ldemul.o:(.data+0x0): undefined reference to `ld_elf_x86_64_youros_emulation'
collect2: error: ld returned 1 exit status
make[4]: *** [ld-new] Fehler 1
make[4]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld« wird verlassen
make[3]: *** [all-recursive] Fehler 1
make[3]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld« wird verlassen
make[2]: *** [all] Fehler 2
make[2]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie/ld« wird verlassen
make[1]: *** [all-ld] Fehler 2
make[1]: Verzeichnis »/home/pascal/Dokumente/cross/src/binutils-2.25_Kopie« wird verlassen
make: *** [all] Fehler 2

Ich würde mich enorm freuen wenn jemand den Grund für diesen Fehler findet.
48
Softwareentwicklung / Re: GCC für OS compilieren
« am: 20. April 2015, 12:42 »
Die libc mit der man gcc compiliert, ist die dann auch die libc, mit der gcc dann die Programme compiliert?
49
Softwareentwicklung / Re: GCC für OS compilieren
« am: 19. April 2015, 00:15 »
Also könnte ich auch meine eigene libc verwenden?
50
Softwareentwicklung / Re: GCC für OS compilieren
« am: 17. April 2015, 12:13 »
Das heisst, wenn meine libc posix conform wäre, dann bräuchte ich die newlib nicht?
51
Softwareentwicklung / Re: GCC für OS compilieren
« am: 16. April 2015, 09:14 »
Ich habe jetzt von Martin Erhardt ein tool gefunden, welches gcc für ein beliebiges OS einrichtet (mit ein bisschen Vorarbeit). Was ich dabei nicht verstehe ist, für was werden die newlib-files verwendet?
Funktioniert dieses Tool auch für neuere GCC Versionen (5.1) oder nur für die für die es erstellt wurde (4.5.0)?
Ich danke für alle bisherigen Antworten.
52
OS-Design / Re: Konsolen
« am: 07. April 2015, 15:02 »
Unter Linux kann man ja tty1 bis tty6 anzeigen lassen. Was ist den mit den anderen? Wie werden die angezeigt?
53
OS-Design / Re: Konsolen
« am: 04. April 2015, 13:32 »
Mir ist noch eine Frage eingefallen.
Wie wird das unter Linux gehandelt, wenn mehr Programme etwas ausgeben, wie Konsolen vorhanden sind. Und woher weiß ein Programm, dass die Konsole, die es öffnet frei ist?
54
Lowlevel-Coding / Debbuging auf realer Hardware
« am: 24. March 2015, 17:10 »
Hallo,
ich möchte hier mal vorstellen, wie ich auf echter Hardware debugge.
Ich habe mir dazu einen kleinen Debugger in den Kernel eingebaut, der ähnlich aussieht, wie der von Bochs. Er unterstützt folgende Befehle:
  • s: Singlestep
  • c: Ausführung fortsetzen, bis zum nächsten Breakpoint
  • lb: Breakpoint setzen
  • d: Breakpoint löschen
  • info b: Breakpoints anzeigen
  • x: Inhalt an einer bestimmten Adresse anzeigen

Zusätzlich wird bei einer Exception auch der Debugger aufgerufen. Für den Debugger wird der Debuginterrupt (int 1) benutzt. Der Debugger wird dabei wie ein Task behandelt. Beim Debuginterrupt wird einfach ein Taskswitch vorgenommen. Dies ist notwendig, damit Interrupts aktiviert sind.
Ich hatte es mal anders ausprobiert und die Interrupts im Handler aktiviert, aber das hat nicht funktioniert.
Um Breakpoints zu setzen, werden die Debugregister der CPU verwendet. Der Singlestep wird durch ein Flag im Flagregister realisiert.
Was ich noch einbauen möchte ist ein Disassembler. Ich habe aber keinen gefunden und deshalb begonnen selber einen zu schreiben. Er ist aber noch nicht funktionstüchtig. Vielleicht kennt ja einer von euch einen opensource Disassembler.

Wenn ihr euch mal meinen Debugger anschauen möchtet, so könnt ihr das hier tun. Momentan wird einfach nur ein Breakpoint unterstützt. Wie der Interrupthandler aufgebaut ist könnt ihr hier (Zeile 200) einsehen.

Wie debugged ihr auf echter Hardware?
Ich hoffe ich konnte euch einen Lösungsvorschlag geben.

P.S.: Der Debugger hat manchmal seine Problemchen (z.B. wenn man über den x-Befehl auf eine Speicherstelle zugreift, die nicht gemappt ist, dann gibt es einen Page Fault und dann muss man neustarten) also sollte man aufpassen was man macht. Und ich habe ihn bissher auch nur für Kerneldebugging eingesetzt also weiss ich nicht, ob man damit auch Tasks debuggen könnte. Theoretisch sollte es aber möglich sein.
55
Lowlevel-Coding / CDI Treiber auf realer Hardware
« am: 24. March 2015, 14:55 »
Hallo zusammen,
zwischendurch teste ich mein OS immer auf einer realen Maschine. Aber was bissher nie funktioniert hat, waren die CDI-Hardware-Treiber. Ich habe mein OS auf 4 verschiedenen Maschinen getestet. Auf jeder Maschine erkennt er weder das CD-Laufwerk noch irgendein anderes Gerät, das via S-ATA angebunden ist.
Die PCI-Geräte werden von meinem OS richtig erkannt und auch alles andere Funktioniert einwandfrei (Tastatur, usw.).
In meinem OS befinden sich der ATA/ATAPI und AHCI Treiber des CDI. Wurden diese denn schonmal auf realer Hardware getestet oder warum erkennen diese keine Geräte?
56
Softwareentwicklung / Re: GCC für OS compilieren
« am: 17. March 2015, 12:21 »
Achso jetzt verstehe ich.
Aber ich verstehe noch nicht wie die Dateien in /gcc/config/i386 und /gcc/config aufgebaut sein muss, denn dort steht überall etwas anderes drin. Gibt es dort eine Art Vorlage?
Und wie kann ich dann einen GCC bauen, der auf meinem OS lauffähig ist? Welche Funktionen muss meine Library bereitstellen?
57
Softwareentwicklung / Re: GCC für OS compilieren
« am: 17. March 2015, 00:21 »
Danke für deine Antwort.
Muss ich dann einfach die Anweisungen in diesem Artikel befolgen?
58
Softwareentwicklung / GCC für OS compilieren
« am: 16. March 2015, 15:12 »
Hallo liebe Community,
ich möchte gerne den GCC für mein OS compilieren, so dass man mit ihm dann Programme auf meinem OS compilieren kann. Nur wie sage ich dem configure Skript, dass es meine Library verwenden soll?
Ich habe jetzt einfach mal die neueste GCC Version heruntergeladen. Kann man dann überhaupt das configure-Skript verwenden, welches sich im Ordner befindet oder muss man alles selber machen?
Was muss ich sonst noch beachten?

Das ist das erste Programm, das ich portiere und somit mache ich hiermit erste Erfahrungen.

Ich freue mich jetzt schon auf Rückmeldungen. Danke.
59
OS-Design / Re: Konsolen
« am: 03. March 2015, 23:18 »
Danke für die Antworten, das hat mir sehr geholfen.
60
OS-Design / Konsolen
« am: 02. March 2015, 23:57 »
Hallo liebe Community,
ich implementiere gerade die Konsole(n). Mein Ziel ist es 12 sichtbare Konsolen zu haben und die restlichen sind sogenannte virtuelle Konsolen. Nur weiss ich jetzt nicht, wie man einem (Kind-)Prozess sagen soll, dass er jetzt auf einer anderen Konsole laufen soll.
Wie wird das z.B. bei Linux oder bei Tyndur gemacht?
Seiten: 1 2 [3] 4 5 ... 15

Einloggen