This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [davidm@napali.hpl.hp.com: Re: [PATCH] i386 vsyscall DSOimplementation]


On Sat, Jun 14, 2003 at 09:41:11PM -0700, Jim Wilson wrote:
> On Sat, 2003-06-14 at 21:19, H. J. Lu wrote: 
> > Under what condition will the offset between 2 segments change? Even
> > with shared library, I don't think the offset between 2 segments
> > will change.
> 
> I dunno.  I'm not an expert with this stuff.  However, I do believe that
> there are systems that will load segments and then relocate them.  If
> this happens, there is no guarantee that offsets between segments will

I am not sure if it will work for ia64 because of GP.

> remain the same.  This will not work if you have segrel relocs that span
> segment boundaries, as your example does.  I doubt that this is a
> problem for linux though.
> 
> I did say it was a technicality.  If the linux kernel wants to rely on a
> feature that violates the IA-64 ABI, then that is certainly their
> choice.  We should at least mention the problem to them though.  It
> might be reasonable to fix the IA-64 ABI to allow this.  Or it might be
> reasonable to change the linux kernel so that it doesn't do this, and
> modify bfd to give an error for invalid segrel relocs like the one in
> your example.

Linux kernel never uses the pure ia64 psABI. How about we allow it for
constant GP and issue an error otherwise?

# make
/export/build/linux/binutils-debug/build-ia64-linux/ld/ld-new -o normal -Tt.lds
normal.o
/export/build/linux/binutils-debug/build-ia64-linux/ld/ld-new: normal.o:
unsupported SEGREL64LSB relocation in section `.IA_64.unwind' against section
`.text'
normal.o(.IA_64.unwind+0x0): unsupported reloc
/export/build/linux/binutils-debug/build-ia64-linux/ld/ld-new: normal.o:
unsupported SEGREL64LSB relocation in section `.IA_64.unwind' against section
`.text'
normal.o(.IA_64.unwind+0x8): unsupported reloc
/export/build/linux/binutils-debug/build-ia64-linux/ld/ld-new: normal.o:
unsupported SEGREL64LSB relocation in section `.IA_64.unwind' against section
`.IA_64.unwind_info'
normal.o(.IA_64.unwind+0x10): unsupported reloc
make: *** [normal] Error 1


H.J.

Attachment: bfd-ia64-segrel.patch
Description: Text document

Attachment: bug.tar.gz
Description: GNU Zip compressed data


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]