Hallo,
Hm, nein, so direkt nicht. Du kannst entweder ein Programm hernehmen, das Patches in entsprechender Form darstellt (ich glaube, Kompare kann das beispielsweise) oder halt das Programm zweimal entpacken und einmal die Patches anwenden und einmal nicht.
In beiden Fällen benötige ich aber den
passenden Original-Code und darauf hab ich keinen deutlichen Hinweis gesehen, okay ich kenne mich mit patches im Allgemeinen und git im Speziellen auch überhaupt nicht aus. Gibt es da irgendwo eine Liste der zu verwendenden Originale (exakte Version)?
weil es uns meistens zu blöd war und wir die Software dann lieber erstmal wieder zur Seite gelegt haben bis die libc soweit ist.
Aha, auch eine Methode vorwärts zu kommen.
Compilerfehler, wegen nicht vorhandener (Library-)Funktionen, waren sicher eher die Ausnahme, zumindest ab einen gewissen Reifegrad der Librarys.
Du irrst dich. Compilerfehler sind die Regel und die POSIX-Bibliothek wächst mit fast jedem neuen portierten Programm.
Das ist gut, da irre ich mich gerne.
Wobei Compilerfehler die angenehmere Variante sind als suchen zu müssen, welcher der Stubs jetzt schuld ist, dass das Programm nicht läuft.
Da schreibst Du wahr.
Das ist vielleicht eine Empfehlung, die man festhalten könnte: Wenn man eine Funktion implementiert, sollte man es richtig tun oder gar nicht. Solche Stubs nützen niemandem und führen nur dazu, dass der Compiler nicht meckert obwohl es nicht funktionieren kann.
Das klingt aber ungewöhnlich "bodenständig". Ein paar Zeilen höher (und vor 1,5 Monaten) klingt das noch ganz anders.
Außerdem kann man festhalten: Was der Standard erlaubt, ist im Zweifelsfall egal, wenn sich Linux für eine bestimmte Implementierung entschieden hat und die Programme das jetzt eben erwarten.
Im Endeffekt ist es IMHO egal ob irgendein Standard oder irgendein OS den Weg vorgibt, man muss diesen Weg nur finden und auch gehen.
Und mit den Buildsystemen kann man beim Crosskompilieren auf sein System auch sehr viel Spaß haben.
Die Gewissheit das es mir mit meinem Vorhaben ganz sicher nicht langweilig wird beruhigt mich sehr.
Meine neueste Errungenschaft dahingehend ist ein Kernellog, in das von Stubs eine Fehlermeldung geschrieben wird. Dann kann man über dmesg sehen wer der Schuldige sein könnte. Kernellog (im Ggs. zu direktem printf) eben va. wegen curses Programmen wie nano oder ähnlichem.
Das ist eine hervorragend gute Idee, nur leider wird die von der PC-Plattform nicht sonderlich gut unterstützt, vor allem wenn es um Meldungen des Kernel selber geht. Gerade ein Micro-Kernel weiß ja gar nicht das es eine Konsole oder Serielle Schnittstelle gibt und hat eigentlich keine Möglichkeit selbstständig Debug-Meldungen auszugeben. Nach einem Absturz nützt ein Log im RAM nur wenig. Aus diesem Grund habe ich für meine Plattform einen speziellen Logging-NVRAM (mit FRAM realisiert) geplant der
immer zur Verfügung steht und per Hardware verwaltet wird. Dieser soll auch bei einem hängendem System (ober bei gedrücktem Reset-Knopf) von Außen per JTAG auslesbar sein. Der mickrige und unzugängliche CMOS-RAM der klassischen PC-Plattform ist für sowas wertlos. Ich möchte fürs Logging 256kByte als Ringpuffer, mit hardwareverwaltetem Schreibpointer (ebenfalls im NVRAM), zur Verfügung stellen. Das ist mehr als ausreichend um mehrere Startversuche des OS aufzuzeichnen bis zu dem Zeitpunkt wo ein beschreibbares Filesystem zur Verfügung steht und der neue NVRAM-Inhalt an eine Log-Datei angehängt werden kann.
Grüße
Erik