This is the mail archive of the crossgcc@sourceware.cygnus.com mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more infromation.
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Mark:
Indeed they do, at least for the m68k target (which I just built gcc for a few
moments ago):
*****
extern int foo_data;
extern void foo_function( void );
int foo( void )
{
foo_function();
return foo_data;
}
*****
.file "test.c"
gcc2_compiled.:
__gnu_compiled_c:
.text
.even
.globl foo
foo:
link.w %a6,#0
move.l %a5,-(%sp)
lea (%pc, _GLOBAL_OFFSET_TABLE_@GOTPC), %a5
bsr foo_function@PLTPC
move.l foo_data@GOT.w(%a5),%d0
move.l %d0,%a0
move.l (%a0),%d1
move.l %d1,%d0
jbra .L2
.even
.L2:
move.l -4(%a6),%a5
unlk %a6
rts
*****
You get something very similar for the x86 targets.
This is kind of the do-it-yourself approach, as it appears that you have to supply
the GLOBAL_OFFSET_TABLE, foo_function@PLTPC, and foo_data@GOT symbols yourself.
Maybe the linker helps out here-- I don't know yet.
Can anyone comment on this, or point me to a FAQ?
Curiously, the assembly code for the SH-2 target (my current platform) is unaffected
by the -fpic and -fPIC flags. I don't know whether it's because I don't understand
all the opcode subtleties, or because this flag isn't supported (I suspect the
latter, unfortunately).
I looked at the SH-2 code before I made my original posting on this subject. If
I had looked at m68k code first, I would have asked a slightly different question...
:^)
b.g.
Mark Phillips wrote:
> Did you try -fpic or -fPIC?
>
> They normally enable Position Independent Code, which may work out to be
> roughly what you want?
>
> Cheers
> Mark
>
> On Thu, 9 Sep 1999, William Gatliff wrote:
>
> > Oops!
> >
> > Note that foo_data is a global variable...
> >
> > b.g.
> >
> > William Gatliff wrote:
> >
> > > Guys:
> > >
> > > I have a need for register-relative data access, i.e. the data
> > > equivalent to PC-relative code addressing.
> > >
> > > I don't see right offhand the gcc switches to do this, although it seems
> > > like something that GNU would support...
> > >
> > > For example, when I do this:
> > >
> > > return foo_data;
> > >
> > > then, rather than this:
> > >
> > > mov.l _foo_data, d0
> > >
> > > I need this:
> > >
> > > mov.l 12(a4), d0
> > >
> > > [Note that I'm a bit rusty on my 68k asm. I hope my intent is at least
> > > clear, tho'.]
> > >
> > > Any ideas? I know the MRI 68k compiler can do this...
> > >
> > > Thanks!
> > >
> > > b.g.
> > >
> > > --
> > > William A. Gatliff
> > > Senior Design Engineer
> > > Komatsu Mining Systems
> > > To teach is to learn.
> > >
> > > ------
> > > Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
> > > Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
> >
> > --
> > William A. Gatliff
> > Senior Design Engineer
> > Komatsu Mining Systems
> > To teach is to learn.
> >
> >
> >
> >
> > ------
> > Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
> > Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
> >
>
> --
> Mark S. Phillips ESN 742 2461
> msp@nortelnetwork.co.uk Tel. +44 1279 402461
--
William A. Gatliff
Senior Design Engineer
Komatsu Mining Systems
To teach is to learn.
------
Want more information? See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sourceware.cygnus.com
| Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
|---|---|---|
| Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |