[PATCH] Always inline system calls

Carmelo AMOROSO carmelo.amoroso at st.com
Tue Dec 4 12:31:13 UTC 2007


Bernhard Fischer wrote:
> On Tue, Dec 04, 2007 at 08:36:31AM +0100, Carmelo AMOROSO wrote:
>   
>> Paul Mundt wrote:
>>     
>>> On Mon, Dec 03, 2007 at 10:33:39PM +0100, Carmelo Amoroso wrote:
>>>   
>>>       
>>>> Carmelo Amoroso wrote:
>>>> while doing some test for SH4 to measure size increase for 'always inline' changes,
>>>> doscovered suddenly that gcc-4.1.1 (cross sh4) fails with the following error:
>>>>
>>>> ../ldso/ldso/dl-elf.c: In function '_dl_dprintf':
>>>> ../ldso/ldso/dl-elf.c:858: error: unable to find a register to spill in class 'R0_REGS'
>>>> ../ldso/ldso/dl-elf.c:858: error: this is the insn:
>>>> (insn 916 917 24 1 (set (reg/f:SI 1 r1 [219])
>>>>          (mem/u/c:SI (plus:SI (reg:SI 12 r12)
>>>>                  (reg/f:SI 1 r1 [220])) [0 S4 A32])) 172 {movsi_ie} (nil)
>>>>      (expr_list:REG_DEAD (reg/f:SI 1 r1 [220])
>>>>          (expr_list:REG_EQUIV (symbol_ref:SI ("_dl_pagesize") <var_decl 0x313a720 _dl_pagesize>)
>>>>              (nil))))
>>>>
>>>> either running with -Os or -O0.
>>>> I'll test tomorrow with gcc-4.2.1 to see if it makes difference,
>>>> otherwise I suspect we should go back on my proposal in using always inline
>>>> only for arch strictly requiring it.
>>>>
>>>>     
>>>>         
>>> We've noticed this with some versions in buildroot also, so it seems to
>>> be a more common issue:
>>>
>>>   
>>>       
>> Indeed at home I have gcc from buildroot. Tested just now at office 
>> using gcc-4.2.1 from STMicro toolchain
>> and it works fine, either using -O0 or -Os.
>> I'll try to update buildroot at home with gcc 4.2.1 as well and see if 
>> it solves.
>> I'll keep you informed.
>>
>> Cheers,
>> Carmelo
>>     
>>> 	 CC ldso/ldso/ldso.oS
>>> 	  In file included from ./libpthread/linuxthreads.old/sysdeps/sh/tls.h:23,
>>> 	from ./include/bits/uClibc_errno.h:35,
>>> 	from ./include/errno.h:62,
>>> 	from ./include/bits/syscalls.h:16,
>>> 	from ./include/sys/syscall.h:34,
>>> 	from ./ldso/ldso/sh/dl-syscalls.h:3,
>>> 	from ./ldso/include/dl-syscall.h:12,
>>> 	from ./ldso/include/ldso.h:36,
>>> 	from ldso/ldso/ldso.c:33:
>>> 	./libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h:36: warning: C99 inline functions are not supported; using GNU89
>>> 	./libpthread/linuxthreads.old/sysdeps/sh/pt-machine.h:36: warning: to disable this warning use -fgnu89-inline or the gnu_inline function attribute
>>>       
>
> This needs fixing anyway. See the patch in my buildroot repo.
>
>   
Hi Bernd,
could you provide the link... searching among gcc4.1.1 patches from 
buildroot svn
I did find something related to this.

Carmelo



More information about the uClibc mailing list