Hallo zusammen,
Ich habe folgender Linker Text (ein kleiner Auszug):
DATA (rw) : ORIGIN = 0x40000000, LENGTH = 0x00002400 /*
Internal memory */
DISP_DATA (rw): ORIGIN = 0x40002400, LENGTH = 0x00000800 /* Copy
of display RAM */
...
.data : AT (_etext)
{
_data = . ;
*(.data)
SORT(CONSTRUCTORS) /* Sort constructors (C++) */
} >DATA /* Region is DATA */
. = ALIGN(4);
...
.bss :
{
__bss_start = . ; /* __bss_start(__) can be accessed by user code
*/
_bss_start_ = . ;
*(.bss)
*(COMMON)
} >DATA
. = ALIGN(4);
...
.DISPLAY_RAM (NOLOAD) : /* Display data RAM must not be included in
flash memory */
{ /* (not included in HEX file) */
*(.DISP_DATA)
} >DISP_DATA
Nun folgende Frage:
Wenn ich folgenden Code habe:
static char_t dispData[10] _attribute_ ((section (".DISP_DATA")));
dann wird in DISP_DATA geschrieben
Allerdings wenn ich
static char_t dispData[10] _attribute_ ((section (".DsdISP_DATA")));
habe, dann schreibt es diesen Bereich in .data
Ich möchte aber eine Fehlermeldung vom Linker, wenn ich zB.
Schreibfehler habe. Wie kann ich das bewerkstelligen?
Hilfe schrieb: > Ich möchte aber eine Fehlermeldung vom Linker, wenn ich zB. > Schreibfehler habe. Wie kann ich das bewerkstelligen? Würde ich nicht über den Linker. Mach doch ein passendes Define, das macht es dann auch lesbarer:
1 | #define __displayram __attribute__((section(".DISP_DATA")))
|
Zudem auch noch leichter zu warten, wenn mal doch die Implementierung geändert wird. Die Möglichkeit, solche Defines zu erstellen, ist einer der Gründe warum beim GCC Einstellungen über Pragmas vermieden wurden.
Das ist schon gut. Nur habe ich sehr viele Sections. Hatte mal was falsch geschrieben und der Linker hatte nichts dagegen gehabt und die deklarierte Variable in .data gespeichert. Habe ziemlich lange gebraucht bis ich den Fehler gefunden hatte. Ich möchte nur solche Effekte vermeiden. Auch wenn mal später jemand die Memory-Bereiche im *.ld File ändert bzw. umbenennt, dann wird im WorstCase Fall so ein Fehler gar nie erkannt. Darum möchte ich gerne dass der Linker zumindest ein Warning herausgibt nach dem Compilieren. Ist denn das nicht möglich?
Es wäre schön, wenn jemand dazu noch was wüsste. :-)
Mit dem Linker geht das nicht. Er hat keine Option um bei verwaisten Sections (also solchen die im Linker script nicht erwähnt sind) zu warnen. Ich würde mir einen eigenen Perl-Script schreiben, der im Makefile aufgerufen wird. Wenn Du das alleine nicht hinbekommst, könnte ich Dir so einen Script gegen Bezahlung zu schreiben.
Oops. Das einloggen hatte nicht geklappt. Also noch ein Post, damit Du mir evtl. per PM antworten kannst.
Ok, vielen Dank. Nein, ich brauche keine kostenpflichtige Lösung. Werde halt damit leben müssen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.