This is the mail archive of the binutils@sourceware.org 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: relative GOT relocs in gold


>  Otherwise, my initial suggestion is that perhaps we should add a way
>  to point GOT entries at relocations, or parts of a relocation, and add
>  a new GOT type for that and assosciated ->write() methods.
>
>  Then I could register the GOT entry with ->add_local_with_rela()
>  or similar, and tell it "and BTW, put there gsym->value() in
>  this relocation addend over here instead of the GOT slot."
>
>  Alternatively, we could have a target fixup pass that can walk over
>  the dynamic relocs, and for this case the sparc target would
>  transfer the GOT slot values into the associated R_SPARC_RELATIVE
>  reloc addends, and clear the GOT slot.

If I understand correctly, you just need to call got->add_constant()
to create the GOT entry without an attached symbol (so that its slot
is initialized to zero). Then, separately, you can attach the
R_SPARC_RELATIVE relocation to it with rela_dyn->add_local_relative().
Output_reloc::write() will put the symbol value into the addend field
when the relocation is created with add_local_relative().

Forgive me if I'm misunderstanding something.

-cary


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