[PATCH] Always inline system calls

Bernhard Fischer rep.dot.nop at gmail.com
Tue Dec 4 13:07:33 UTC 2007


On Tue, Dec 04, 2007 at 01:31:13PM +0100, Carmelo AMOROSO wrote:
> 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.

http://repo.or.cz/w/buildroot.git?a=tree;f=toolchain/uClibc;hb=HEAD



More information about the uClibc mailing list