Thanks. I'm working to port gcc to our chip. I use mips-elf as the start. Yet,
we don't have pc-region branch instructions such as 'j target'. So I'm
confused how to solve the function call translation. Thanks again.

Eric.

2006/2/14, Mike Stump <[EMAIL PROTECTED]>:
> On Feb 13, 2006, at 7:28 PM, Eric Fisher wrote:
> > Suppose I have only pc-relative branch instructions such as 'b offset'
>
>
> > and don't have pc-region branch instructions such as 'j target'. So
> > what the function call should be translated? Do I have to always use
> > two instructions such as 'la reg, func' and 'b reg'? Especially when
> > call a shared pic object file.
> >
> > The problem I've got is that when I link with a shared pic object
> > file, there is a  'relocation truncated to fit' error.
>
> If you're a user, gcc-help is the appropriate list.  If not, then
> usually naming the chip, the options used, the rtl generated and
> assembly used and so on would make the question easier to answer and
> make the answer more accurate.
>
> The general answer is that -fPIC and -mlong-call should generate code
> that uses the full width of a pointer without overflowing any fields,
> getting relocation errors and so on.  A port maintainer then can
> choose _when_ to flip from medium code to large code, and that will
> then drive what size objects one can link without -mlong-call.  How
> many bits can you go in medium mode on your port?  How far did the
> linker want to go?  If less then the first, then, it's an as or
> linker bug, if farther and you're not compiling with -mlong-call,
> then, you'll need to.  If you are, then you have a bug in -mlong-call
> mode, you have to generate instructions that operate on the full
> width of a pointer.
>
>

Reply via email to