Forum: Mikrocontroller und Digitale Elektronik AVR32 -mrelax GCC Bug?


von Leonhard W. (konradw)


Lesenswert?

Hallo,


ich bin mir nicht sicher ob es sich wirklich um einen Bug handelt, aber 
bei der aktuellen AVR32 GCC Version(3.4.0.332 - GCC  4.4.3), die mit dem 
Atmel Studio 6 ausgeliefert wird, scheint bei mir nicht automatisch die 
Option -mrelax an den Linker weitergegeben zu werden. Laut der Atmel 
Note AVR32006 sollte diese Option automatisch bei -O2 oder -O3 gesetzt 
sein. Nach längern Tests konnte ich das aber nicht bestätigen. Auch die 
Angabe von -mrelax bei den Compileroptimierungsoptionen brachte 
(beabsichtigt, da kein Linker?) keinen Erfolg. Erst wenn man die Option 
bei der Linkeroptimierung angiebt scheint sie Wirkung zu zeigen.

Ich hab bereits seit längernen nach diesem Bug auf verschiedenen Foren 
gesucht und nichts dazu gefunden. Es wäre schön wenn jemand diesen Bug 
bestätigen könnte oder mich aufklären könnte ob ich etwas übersehen 
habe. Vieleicht dieser Post aber auch schon anderen falls Sie über 
dieses Problem stolpern sollten.

Gruß Leonhard

Weitere Daten:
- Atmel Studio 6 (Version: 6.0.1938 - Service Pack 1)
- uC: AT32UC3A1512 (sollte aber nichts zur Sache tun)

P.S: Sehe gerade, dass ich im falschen Subforum bin...kann man den 
Beitrag irgendwie verschieben?

von Bissinger (Gast)


Lesenswert?

Im Atmel-forum meine ich, was ähnliches gelesen zu haben.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Ob die Option vom Treiber an dem Linker gereicht wird, sieht du anhand 
der Ausgabe zusammen mit -v. Damit wird (neben anderen Infos) angezeigt, 
mit welchen Optionen die Subtools (Compiler, Assembler, Linker) 
aufgerufen werden.

von Leonhard W. (konradw)


Lesenswert?

Nachdem ich dem Fehler über -v versucht habe auf den Grund zu gehen, ist 
mir aufgefallen, dass das Atmel Studio beim Aufruf des Linkers die 
Optimierungsstufe nicht übergibt. Man muss z.B. -O2 bei den 
Linkeroptionen extra angeben. Scheint also ein Bug vom Atmel Studio zu 
sein und nicht von GCC.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Das gehört so.  -O2 ist eine Compiler-Option, d.h. für cc1 bzw. cc1plus 
bestimmt und keine Linker-Option und damit nicht für ld.

Für die unterstützten Optionen der Subtools geht z.B. -v --help

von Leonhard W. (konradw)


Lesenswert?

Aber ld wird ja nicht direkt von Atmel Studio aufgerufen, sondern 
implizit über den Compiler (avr32-gcc).

Ferner würde ich erwarten, dass wenn ich dort als Optimierungslevel O2 
angebe, dass auch der Linker optimiert, zumal es keine extra Option für 
die Linkeroptimierung gibt (also kein schönes Kästchen / Dropdownmenü 
etc.). Wenn das gewollt ist, dann OK. Für mich perönlich ist dieses 
Verhalten nicht intuitiv.
Aber Danke für die Hilfe!

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
Noch kein Account? Hier anmelden.