[Patch,avr] PR54461: Better AVR-Libc integration
Georg-Johann Lay
avr@gjlay.de
Tue Sep 4 06:56:00 GMT 2012
Gabriel Dos Reis schrieb:
> Georg-Johann Lay wrote:
>> Gabriel Dos Reis schrieb:
>>> Georg-Johann Lay wrote:
>>>> Gabriel Dos Reis schrieb:
>>>>> Georg-Johann Lay wrote:
>>>>>> AVR-Libc comes with hand-optimized float support functions
>>>>>> written in assembler. These functions use the same naming
>>>>>> conventions like libgcc. There are situations where this
>>>>>> name clashed lead to performance regression because the
>>>>>> functions from libgcc are linked. One example are the new
>>>>>> fixed-point support that convert fixed-point to/from float
>>>>>> and reference float/int conversion functions from within
>>>>>> libgcc.
>>>>>>
>>>>>> The float implementation in libm.a have been discussed
>>>>>> several times with the only result that it is very unlikely
>>>>>> that the code will ever be integrated into libgcc because
>>>>>> the original authors are no more around. And is is much
>>>>>> less work to add a new configure switch than to port and
>>>>>> integrate the code, given there were no license issues. One
>>>>>> point against such an extension was that such change to the
>>>>>> compiler establishes a dependency between the compiler and
>>>>>> AVR-Libc, but this decision has been made long ago by
>>>>>> accepting code that actually should had been added to
>>>>>> libgcc -- but was not for whatever reason.
>>>>>>
>>>>>> This patch removes that performance regressions by removing
>>>>>> the doubly implemented functions from libgcc by means of a
>>>>>> new configure option --with-avrlibc.
>>>>>
>>>>> as I stated yesterday, I do not understand why there needs to
>>>>> be yet another configure option. The NATURAL libc for ARV
>>>>> targets is ARV-libc. We should not need a switch for that.
>>>>
>>>> There is also newlib that is used with avr-gcc. I know this
>>>> because some bugs are only triggered for newlib. If there are
>>>> users that report bugs if avr-gcc is build for newlib, I'd
>>>> guess these users are actually interested in using newlib.
>>>
>>> I did not say there was no other libc library. I said that the
>>> *natural* libc appears to be AVR-libc.
>>>
>>> We don't configure GCC/g++ saying --with-libstdc++.
>>
>> That's a different story because these libraries support in-tree
>> build just like newlib does. This is not true for AVR-Libc which
>> does not support in-tree builds.
>>
>> I agree that AVR-Libc is the most common libc implementation used
>> with avr-gcc and is has many advantages over other libc
>> implementation (except that it does not support in-tree builds).
>
> I think the "in-tree builds" thing is a red herring.
I don't think so. If there was an in-tree build gcc could detect
itself whether or not AVR-Libc is present or not. With the
current setup the user has to specify that -- in whatever
direction: that libc is there or that libc is not there depending
on whatever is default.
>> However, a --with-avrlibc is not needed to *get* the support from
>> AVR-Libc, it's just used to fix some problems that arise in certain
>> use cases.
>
> so, let's make it the default -- see below.
>
>> Besides that, the proposed arrangement does not affect the
>> configuration if the switch is *not* specified, thus the patch is
>> appropriate to be backported.
>>
>> My intention is to backport it to 4.7 as indicated by the
>> milestone, but if the change was unconditionally I don't think the
>> change is appropriate for a backport.
>
> It is perfectly reasonable and OK to to make the backport more
> guarded (e.g. by the configure option) than on mainline.
>
>> And after all it's just a *configure* option that some distribution
>> maintainers can set if they want to.
>
> yes, but it is still one more configure option.
hmm. The configure machinery was not changed, it automatically sets
with_foo if --with-foo is specified. It's just about who is to
be blamed if he does not read the release notes ;-)
Whatever, I think we two are stuck now and enough arguments passed
back and forth. Let the port maintainers decide.
And Jörg, would you check the excludes list in t-avrlibc?
Johann
>> The tool chain user is not bothered at all by the new option and
>> won't even notice it. From the user perspective it's just as if
>> some optimizations had been added to the tool chain.
>>
>> What do you propose?
>>
>> Use the setting per default and support a --with-avrlibc=no if the
>> user want full libgcc support and nothing removed from it?
>
> Yes. Let's make the "sane" behaviour the default.
>
> -- Gaby
More information about the Gcc-patches
mailing list