This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [gold commit] PR 19823: Don't allow COPY relocs to protected symbols
- From: Cary Coutant <ccoutant at gmail dot com>
- To: Alan Modra <amodra at gmail dot com>
- Cc: Binutils <binutils at sourceware dot org>
- Date: Mon, 27 Jun 2016 10:40:45 -0700
- Subject: Re: [gold commit] PR 19823: Don't allow COPY relocs to protected symbols
- Authentication-results: sourceware.org; auth=none
- References: <CAJimCsFDm4e4cXdTdJpMdu1KnM3CwD42Mj5wwgJ8ig6=CjKUVw at mail dot gmail dot com> <20160627145549 dot GA3665 at bubble dot grove dot modra dot org>
> Cary, this test fails on powerpc64 and powerpc64le because no copy
> relocs are needed with a PIC executable, and powerpc64 is PIC by
> default.
>
> One way to force a non-PIC reference to the protected visibility
> variable in a read-only section, and thus require a copy reloc is:
>
> int* __attribute__ ((section (".rodata"))) ipp = &ip;
>
> It isn't really clean though, and results in assembler warnings about
> attributes of .rodata. Using
>
> int* const ipp = &ip;
>
> doesn't work because even at -O1 gcc looks through a *ipp reference
> and omits ipp.
>
> Do you have any suggestions?
Is there any reason we shouldn't just skip that test case for targets
that don't normally use copy relocs?
-cary