arm-elf-gcc shared flat support
Richard Earnshaw
rearnsha@arm.com
Fri Mar 30 14:18:00 GMT 2007
On Fri, 2007-03-30 at 17:57 +0530, vivek tyagi wrote:
> Hi ,
>
This is the wrong list for these sorts of questions, you should really
be asking on gcc-help.
> I am working on Shared flat file support for uClinux (No MMU ARM ).The
> gcc version
> I am using is 2.95 and 3.4.0.Theory of operation is similar to that
> implemented for m68k.One of the major requirement is to call functions
> via GOT.
> so a code
>
> ******c-code**************
> foo()
> {}
> main()
> {
> foo();
> }
>
> ******************************
>
> is to be called as
>
> ****compiler output***********
>
> ldr r3, .L4
> mov lr,pc
> ldr pc[sl,r3]
>
> .L4:
> .word foo(GOT)
>
> ******************************
>
> as opposed to
> bl foo(PLT)
>
> where sl holds the address of GOT.(binfmt_flat loader ensures that
> before the program start)
>
> in gcc 3.4.0 this is some how achived if the function attribute
> __attribute__((weak)) is specified.But no idea for 2.95
>
That weak calls have this property is really due to a bug in the
compiler (some day I might even fix it :-). You can probably make
things work the way you want with more recent compilers if you use
-mlong-calls, but it's not really designed for this purpose, so some
local definitions may be short-circuited.
Is there some reason why linker-generated PLT sequences aren't a
reasonable solution?
R.
More information about the Gcc
mailing list