This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [RFC] PowerPC select_section / unique_section
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: David Edelsohn <dje at watson dot ibm dot com>
- Cc: Richard Henderson <rth at redhat dot com>, Franz Sirl <Franz dot Sirl-kernel at lauterbach dot com>, Geoff Keating <geoffk at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Sat, 31 Aug 2002 09:19:30 +0930
- Subject: Re: [RFC] PowerPC select_section / unique_section
- References: <amodra@bigpond.net.au> <200208301527.LAA26424@makai.watson.ibm.com>
On Fri, Aug 30, 2002 at 11:27:25AM -0400, David Edelsohn wrote:
> >>>>> Alan Modra writes:
>
> Alan> Uh, oh. If I understand binds_local_p and mark_constant_function
> Alan> correctly, setting flag_pic is actually a bug-fix when compiling
> Alan> powerpc64-linux shared libs. We have the standard ELF binding of
> Alan> global syms. That is, global functions may be overridden by functions
> Alan> in another shared library or by the main application.
>
> Alan> So powerpc64-linux-gcc should allow -fpic/PIC to twiddle flag_pic for
> Alan> binds_local_p, and users should set -fPIC when compiling shared libs
> Alan> as is common on other ELF targets. We could use another flag, because
> Alan> like that annoying rs6000.c warning says "all code is position
> Alan> independent" on ppc64, but that would make powerpc64-linux just that
> Alan> more odd. Lots of packages set -fPIC to mean "compile me code for a
> Alan> shared library".
>
> This is what the patch that I applied to both gcc-3.2 and the
> trunk already does, without utilizing the generic infrastructure. The
> PowerPC port currently does not use the targetm.binds_local_p. We can
> discuss evolving to the generic infrastructure for GCC 3.4.
The PowerPC back-end code doesn't use binds_local_p, but
mark_constant_function does.
I think I'm correct in claiming that powerpc64-linux-gcc lacks a way
to say "I want this code compiled for a shared library; Don't try to
analyze global functions for pure/const as the function in this file
may not be the one called at runtime."
--
Alan Modra
IBM OzLabs - Linux Technology Centre