RE: ELF instruction for section and branch.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



MAIL:
-----

We have been analyzing the information you had sent, regarding:

> It sounds like you're asking about code such as:
> 
>         .section .text1
> foo:    b        bar
> 
>         .section .text2
> bar:
>
> Is that right?  If so, then no, this isn't supported.  The
> assembler can't calculate the branch offset because the 
> distance between foo and bar isn't known until link time.  
> And unfortunately, due to an infamous problem with the MIPS 
> ELF spec, there's no relocation that the assembler can use either.
> 
> (The R_MIPS_PC16 relocation was probably designed for
> branches, but the ELF spec says it gives a byte offset, 
> whereas branch instructions need a word offset.)


We have come to a conclusion that if we branch to a label local to the
section in which the branch is invoked and then jump to the desired
location in the other section it should solve the problem. 

	.section .text1
foo:	
	b	L1

L1:
	j	bar


	.section .text2
bar:
	add	r4, r5, r6


Are we correct in assuming this?






> -----Original Message-----
> From: Richard Sandiford [mailto:rsandifo@xxxxxxxxxx] 
> Sent: Friday, 19 December, 2003 20:34 PM
> To: gagneet@xxxxxxxxx
> Cc: gcc-help@xxxxxxxxxxx; gcc@xxxxxxxxxxx
> Subject: Re: ELF instruction for section and branch.
> 
> 
> "Gagneet Singh" <gagneet@xxxxxxxxx> writes:
> > I wish to enquire what is the equivalent for a assembly language 
> > section in the GCC ELF format?
> 
> I'm not quite sure what you mean here, but...
> 
> > Also, we have a problem of getting the output in ELF format where a 
> > branch instruction is accessing a label in the second section.
> >
> > Is this possible?
> 
> It sounds like you're asking about code such as:
> 
>         .section .text1
> foo:    b        bar
> 
>         .section .text2
> bar:
> 
> Is that right?  If so, then no, this isn't supported.  The 
> assembler can't calculate the branch offset because the 
> distance between foo and bar isn't known until link time.  
> And unfortunately, due to an infamous problem with the MIPS 
> ELF spec, there's no relocation that the assembler can use either.
> 
> (The R_MIPS_PC16 relocation was probably designed for 
> branches, but the ELF spec says it gives a byte offset, 
> whereas branch instructions need a word offset.)
> 
> Richard
> 


[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux