| Zeile 301: | Zeile 301: | ||
{ | { | ||
start_ctors = .; | start_ctors = .; | ||
| − | *(. | + | KEEP(*( .init_array )); |
| + | KEEP(*(SORT_BY_INIT_PRIORITY( .init_array.* ))); | ||
end_ctors = .; | end_ctors = .; | ||
| Zeile 312: | Zeile 313: | ||
} | } | ||
| − | /DISCARD/ : { *(. | + | /DISCARD/ : { *(.fini_array*) *(.comment) } |
} | } | ||
</pre> | </pre> | ||
| − | Wir teilen dem Linker mit, dass wir die Labels start_ctors, end_ctors | + | Wir teilen dem Linker mit, dass wir die Labels start_ctors, end_ctors in der Datei Startup.cpp haben und er diese beim Linken berücksichtigen soll. Außerdem wird die Liste der Destruktoren aus dem Kernel entfernt, da sie wie oben erklärt nicht verwendet werden. |
Nur noch ein kurzer Aufruf von LD, und wir haben unseren fertigen Kernel: | Nur noch ein kurzer Aufruf von LD, und wir haben unseren fertigen Kernel: | ||