41
Lowlevel-Coding / Re: globale Variablen im C++ Kernel funktionieren nicht
« am: 01. August 2013, 16:00 »
Neuere GCC Versionen erzeugen keine ctros-sections mehr sondern init_array und fini_array sections. D.h. deine ctors liste bleibt vermutlich leer (start/end-ctors sind gleich).
Du kannst dir die ctors / dtors etwa so in deinem linkscript zusammen sammeln. (statt dem .ctors* .*dtors zeug wie es im Tutorial steht)
Code: [Auswählen]
nm kernel.elf | grep ctors
Du kannst dir die ctors / dtors etwa so in deinem linkscript zusammen sammeln. (statt dem .ctors* .*dtors zeug wie es im Tutorial steht)
Code: [Auswählen]
__init_array = .;
KEEP(*( .init_array ));
KEEP(*(SORT_BY_INIT_PRIORITY( .init_array.* )));
__init_array_end = .;
/* List all Destructors here */
__fini_array = .;
KEEP(*( .fini_array ));
KEEP(*(SORT_BY_INIT_PRIORITY( .fini_array.* )));
__fini_array_end = .;
__init_array entspricht dann start_ctors etc.