| Zeile 45: | Zeile 45: | ||
G++ erstellt eine "ctors*" Sektion, welche ein Array aus Funktionszeigern ist. Diese Funktionszeiger zeigen jeweils auf einen Konstruktor. Man muss nun nur dieses Array durchgehen und alle Funktionen aufrufen und schon hat man alle globalen/statischen Objekte initialisiert. | G++ erstellt eine "ctors*" Sektion, welche ein Array aus Funktionszeigern ist. Diese Funktionszeiger zeigen jeweils auf einen Konstruktor. Man muss nun nur dieses Array durchgehen und alle Funktionen aufrufen und schon hat man alle globalen/statischen Objekte initialisiert. | ||
| − | In neueren Version von GCC wurde die Sektion .ctors* in .init_array umbenannt und muss | + | In neueren Version von GCC wurde die Sektion .ctors* in .init_array umbenannt und muss gegebenenfalls im Linkerscript geändert werden. |
<cpp> | <cpp> | ||
| Zeile 71: | Zeile 71: | ||
G++ erstellt eine "dtors*" Sektion, analog zur "ctors*" Sektion und speicher dort wiederum ein Array aus Funktionszeigern. Diesmal zeigen diese Funktionszeiger aber auf Destruktoren. | G++ erstellt eine "dtors*" Sektion, analog zur "ctors*" Sektion und speicher dort wiederum ein Array aus Funktionszeigern. Diesmal zeigen diese Funktionszeiger aber auf Destruktoren. | ||
| − | In neueren Version von GCC wurde die Sektion .dtors* in .fini_array umbenannt und muss | + | In neueren Version von GCC wurde die Sektion .dtors* in .fini_array umbenannt und muss gegebenenfalls im Linkerscript geändert werden. |
==== Destruktoren (mit --enable-__cxa_atexit oder mit -fuse-cxa-atexit) ==== | ==== Destruktoren (mit --enable-__cxa_atexit oder mit -fuse-cxa-atexit) ==== | ||