AVRGCC porblem linkovani

Jan Waclawek konfera na efton.sk
Úterý Květen 13 21:10:02 CEST 2014


Tych problemov veducich k "relocation truncated to fit" je viacero, takze
sa to blbo gugli. Niektore z nich boli priamo v linkeri, napr.
https://sourceware.org/bugzilla/show_bug.cgi?id=13410 , tie su uz zvacsa
fixnute, aj ked Vy zrejme pouzivate starsiu verziu linkera; ale podla
prejavov tieto nie su Vas problem.

Vas problem ma hlbsie, a takmer neodstranitelne korene
(http://savannah.nongnu.org/bugs/?func=detailitem&item_id=33698) : v
knizniciach projektu avr-libc, kam patri aj libm, sa rozsiahlo pouziva
explicitne rjmp/rcall na volanie/skakanie na ine funkcie v ramci tej istej
kniznice. Tieto instrukcie "nedociahnu" mimo rozsah +-4kB. To by nevadilo,
kedze kniznica je mensia ako 4kB, kebyze sa nemohlo stat niekolko veci:

- za urcitych okolnosti linker volne poprehadzuje funkcie a premiesa ich aj
s funkciami z inych kniznic resp. s uzivatelskymi funkciami; toto suvisi s
individualnymi sections pre jednotlive funkcie a nie je to Vas pripad

- linkeru nevadi existencia viacerych funkcii s rovnakym menom a pouzije
prvu, na ktoru narazi, a ak sa pred kniznicou linkuje nejaka ina kniznica,
ktora obsahuje funkciu s rovnakym menom ako je ciel rjmp/rcall, tento sa
linkuje na tuto "cudziu" funkciu ktora moze byt "pridaleko". Toto je prave
Vas pripad - avr-g++ sa pokusa linkovat stdlib++, ktory vsak pre avr
neexistuje, a je z nie prilis pochopitelnych dovodov nahradzana libgcc (to
je vstavana kniznica do gcc), v ktorom sa prave nachadzaju
neoptimalizovane verzie niektorych funkcii, ktore su v libm (uloha libm je
prave ta, "prebit" tie neoptimalne "defaultne" implementacie z libgcc).

>Díky za pomoc, i kdy¾ samotný parametr -lm nepomohl. Na nìjakém foru jsem dohledal, ¾e je nutné je¹tì pou¾ít
>avr-gcc místo avr-g++.

avr-gcc linkuje ako prve kniznice, ktore su mu explicitne predpisane, preto
to pomohlo. Sice len symptomaticky (lebo hore popisana pricina ostava),
ale splna to ucel - funkcny program... ;-)
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=28718
("zabudovany", ale tiez symptomaticky fix je v
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54461 )

wek




Další informace o konferenci Hw-list