sto ricevendo un errore di link:Memoria errore movimentazione sezione
WARNING: /home/gulevich/development/camac-fedorov/camac/linux/k0607-lsi6/camac-k0607-lsi6.o (.ctors): unexpected non-allocatable section.
Did you forget to use "ax"/"aw" in a .S file?
Note that for example <linux/init.h> contains
section definitions for use in .S files.
Il codice causa l'errore (assemblaggio in C source):
# if defined(__ELF__)
# define __SECTION_FLAGS ", \"aw\" , @progbits"
/* writable flag needed for ld ".[cd]tors" sections bug workaround) */
# elif defined(__COFF__)
# define __SECTION_FLAGS ", \"dr\""
/* untested, may be writable flag needed */
# endif
asm
(
".section .ctors" __SECTION_FLAGS "\n"
".globl __ctors_begin__\n"
"__ctors_begin__:\n"
".previous\n"
);
C'è un modo per risolvere questo problema? L'idea è di inserire un oggetto vistabile __ctors_begin__
all'inizio di una determinata sezione di memoria. Questo codice è legacy che ha funzionato bene usando un sistema di compilazione diverso e un compilatore più vecchio.
Significato di questo codice assembly spiegato in an answer to my previous question.
Quale compilatore C stai usando? – bdonlan
Come nota aggiuntiva, il codice esatto che hai postato viene compilato correttamente in GCC 4.4.1 su ubuntu a 64 bit – bdonlan
Questo è l'errore del tempo di collegamento, non uno di compilazione. Ecco le informazioni sulla versione: linker: GNU ld (GNU Binutils per Debian) 2.20.1-system.20100303; Compilatore : gcc (Debian 4.4.2-9) 4.4.3 20100108 (prerelease). – Basilevs