Also ich bin jetzt kein Profi und beschäftige mich erst seit ein paar
Monaten mit der M3-Programmierung, aber ich denke, daß die Ursache und
der Unterschied wie folgt sind:
In Deinem Skript hast Du in der Section .text sowohl *(.text*) als auch
*(.rodata*), legst .data aber an die Adresse
1 | ADDR(.text) + SIZEOF(.text).
|
Meiner Meinung nach müßte das aber
1 | ADDR(.text) + SIZEOF(.text) + SIZEOF(.rodata).
|
heißen. Sobald Konstanten im Programm genutzt werden, müßte dann der
Fehler kommen.
Mit dem Ausdruck von Linus
überläßt Du dem Linker die korrekte Berechnung.
In Deinem Fall ist die manuelle Berechnung ja auch nicht nötig.
Eleganter ist dann in der Tat der Ausdruck von Linus.
Das Ganze aber ohne Gewähr.
Wäre aber schön, wenn Du das mal ausprobierst, mich würde das Ergebnis
interssieren ;)