Forum: Compiler & IDEs Fehlermeldungen


von Pete (Gast)


Lesenswert?

Ich bekomme folgende Fehlermeldungen mit AVR Studio 4.12 SP3 Build 90
beim Linken:


C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fmod. 
o):
In function `fmod':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
`__divsf3' defined in .text section in
C:/WinAVR/lib/gcc/avr/3.4.5/avr5\libgcc.a(_div_sf.o)
C:/WinAVR/bin/../lib/gcc/avr/3.4.5/../../../../avr/lib/avr5\libc.a(fmod. 
o):
In function `fmod':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
[...(Rest gelöscht)]

Hat jemand eine Ahnung, was das Problem ist und wie es zu lösen ist?

von Isegrimm (Gast)


Lesenswert?

Hallo !

Habe ebenfalls die Fehlermeldung.
Das scheint ein Bug im gcc oder linker zu sein.

Ausgelöst wurde der Fehler bei mir durch eine einzige Zeile:

if(float==anotherFloat)
  ...

Weiß jemand wie man das fixen kann ?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Indem man beim Linken -lm mit angibt.

von Isegrimm (Gast)


Lesenswert?

Hallo !
Die option war drin. Hier die gesamte Fehlermeldung:

avr-c++.exe -mmcu=atmega32 -Wl,-u,vfprintf -lprintf_flt -lm foo.o -o
foo.elf
C:/Programmes/Atmel/WinAVR/bin/../lib/gcc/avr/3.4.6/../../../../avr/lib/ 
avr5\libm.a(modf.o):
In function `modf':
: relocation truncated to fit: R_AVR_13_PCREL against symbol
`__addsf3' defined in .text section in
C:/Programme/Atmel/WinAVR/lib/gcc/avr/3.4.6/avr5\libgcc.a(_addsub_sf.o)


Gruß

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Eine Bibliothek, die vor dem eigentlichen Objektfile angegeben
wird, dessen ungeklärte Externreferenzen eigentlich in der
Bibliothek aufgelöst werden sollen, ist umsonst.  (Ausnahme:
das vfprintf() wird aus der libprintf_flt.a genommen, da für
dieses Symbol mittels -u zwangsweise eine undefinierte Referenz
erzeugt worden ist.)

Schreib das -lm ganz ans Ende der Linkerkommandozeile, und es
wird funktionieren.

Dass es ohne -lm nicht funktioniert ist ein bekannter Bug:

https://savannah.nongnu.org/bugs/?func=detailitem&item_id=14855
https://savannah.nongnu.org/bugs/?func=detailitem&item_id=3485

(Einer von den beiden...)  Leider ist der praktisch nicht ohne
Neuschreiben der Mathematik-Bibliothek zu lösen.

von Isegrimm (Gast)


Lesenswert?

Danke, super !
Habe jetzt im AVR-Studio bei Project Options einfach bei "link with
these Objects" die libm.a angegeben.
Seitdem funktioniert es nicht nur, sondern der erzeugte code ist sogar
10% kleiner als vorher!!

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.