AVRGCC porblem linkovani

Milan B. milan na bastl.sk
Úterý Květen 13 22:32:43 CEST 2014


On 13. 5. 2014 21:10, Jan Waclawek wrote:
>   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).

Tak toto je myslim uplne zle. Ulohou libm - a ani ziadnej dalsej 
kniznice - *nie je* prebijat funkcie z libgcc - aj v tom vasom prvom 
linku to naznacene aspon dvakrat. [1][2]

libgcc je specialna interna kniznica, ktora poskytuje funkcie pre 
elementarne operacie, ktore nie su realizovatelne jednou alebo niekolko 
malo strojovymi instrukciami [3]. V pripade, ze je k dispozicii viac 
architektur, tak maju byt k dispozicii libgcc vo viacerych verziach, s 
vyuzitim potencialu tej-ktorej architektury (multilib). GCC zrejme 
neriesi, kam libgcc prida, lebo s nejakym prebijanim sa proste by design 
nepocita.

To ale nic nemeni na skutocnosti, ze implementacia AVR portu je v tomto 
ohlade urobena nekorektne - aj ked motivacia sa da domysliet - a 
spominany problem tam naozaj existuje.

-m-

[1] I know that the current situation for the AVR is suboptimal, there 
really are overrides in libm.a for functions that are already present in 
libgcc.a.
[2] Also libm is not supposed to be overriding stuff in libgcc really...
[3] V tomto pripade __mulsf3 sa vola v pripade vyskytu operacie float*float




Další informace o konferenci Hw-list