Walter T. schrieb:
> Im Map-File sehe ich.... nichts. Außer dass alle "verdächtigen"
> Funktionen aus der libc stammen (libg_s.a).
Da sollte doch zumindest das Modul autauchen? Hier mal einen Auszug (für
anderes Target, was aber keine Rolle spielt):
1 | Archive member included to satisfy reference by file (symbol)
|
2 |
|
3 | .../bin/../lib/gcc/avr/8.0.1/avr5/libgcc.a(_exit.o)
|
4 | .../bin/../lib/gcc/avr/8.0.1/../../../../avr/lib/avr5/crtatmega168.o (exit)
|
Von Modul crtatmega168.o wurde also Symbol "exit" referenziert, das noch
nicht aufgelöst war. Die Auflösung / Definition des Symbols "exit"
geschah dadurch, dass gegen Modul _exit.o aus libgcc.a gelinkt wurde.
Einzelne Funktionen sieht man auf dieser Ebene nicht mehr, sondern nur
noch Module oder Input-Sections. Da libc/libm üblicherweise so
übersetzt werden, dass jede Funktion in einem eigenen, entsprechend
benannten Modul landet, kann man die Funktion hier einfach raten: Es ist
_exit aus der libgcc.
Oder
1 | $ target-nm ...libgcc.a | grep -A4 '^_exit.o'
|
2 | _exit.o:
|
3 | 00000002 t __stop_program
|
4 | 00000000 T _exit
|
5 | 00000000 W exit
|