This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: Allow copy relocations with pie links
- From: Alan Modra <amodra at gmail dot com>
- To: Cary Coutant <ccoutant at google dot com>
- Cc: Sriraman Tallam <tmsriram at google dot com>, David Miller <davem at davemloft dot net>, walt at tilera dot com, Doug Kwan <dougkwan at google dot com>, binutils <binutils at sourceware dot org>, Ian Lance Taylor <iant at google dot com>, David Li <davidxl at google dot com>
- Date: Fri, 9 May 2014 10:38:30 +0930
- Subject: Re: Allow copy relocations with pie links
- Authentication-results: sourceware.org; auth=none
- References: <CAAs8HmxwPuH7_s1yLxeW_6qkMCB+_kYSzB6yYG85QZS6yVHpZg at mail dot gmail dot com> <CAHACq4q9qP_h=PuwhJkE6KMt_xf6_Ne3unGRdQpvFqaXL=OxPw at mail dot gmail dot com> <CAAs8HmxkGVYAyq4wf1FChqowmQRTO9POve8Ve5f4kb3DXPfywQ at mail dot gmail dot com> <CAHACq4qx-C-W06-2oYtHz6uVuF3WHyFfp7AO9epk84Y9_6PLOA at mail dot gmail dot com> <20140508231602 dot GC5162 at bubble dot grove dot modra dot org> <CAHACq4oTU7tV+8_5Z_iJ=J2=8tWObXKRP1KL=sSpM-vhbHsnaw at mail dot gmail dot com>
On Thu, May 08, 2014 at 04:29:20PM -0700, Cary Coutant wrote:
> >> I ran the i386 tests. David, Alan, Walt, and Doug, can you help test
> >> this patch on your respective targets?
> >
> > The change isn't appropriate for powerpc. We don't have pc-relative
> > addressing modes, so must use the GOT in PIEs.
>
> case elfcpp::R_PPC64_REL64:
> case elfcpp::R_POWERPC_REL32:
> // Make a dynamic relocation if necessary.
> if (gsym->needs_dynamic_reloc(Scan::get_reference_flags(r_type, target)))
> {
> if (gsym->may_need_copy_reloc())
> {
> target->copy_reloc(symtab, layout, object,
> data_shndx, output_section, gsym,
> reloc);
> }
>
> What should this code do, then? Add a COPY reloc only for
> position-dependent executables?
Yes. If we're building a PIE then we should be using -fpic/PIC
compiled code and won't have the relocs that would hit this code. If
we do try to build a PIE with non-PIC code, then we'll get dynamic
relocs in text. Enabling copy relocs for PIEs would still give
us DT_TEXTREL. (Of course, ppc64 gcc is PIC by default, so the
foregoing mostly applies to ppc32.)
--
Alan Modra
Australia Development Lab, IBM