On 10/30/2014 03:19 PM, David Edelsohn wrote:
> AIX has been unable to bootstrap since the match-and-simplify merge.
> Richard Biener and I tracked this back to a bad interaction between a
> GCC optimization and the AIX linker -G option to allow for SVR4-style
> runtime linking.

As the -G linker option is the equivalent of specifying the options
"-berok -brtl -bnortllib -bnosymbolic -bnoautoexp -bM:SRE", did you
track down which one exactly interacts with that GCC optimization?

Background is that I do rely on the "-brtl" linker flag actually, to
allow Linux-like filename-based sharedlib versioning, using plain text
"Import Files" as member of the libstdc++.so archive. We talked about
that years ago, and I do plan to redo "aix-soname" for gcc-trunk.

> The following patch removes the linker option from the libstdc++
> build.  This will prevent runtime function interposition, e.g.
> overriding operator new, when using libstdc++, but that is rarely
> needed.

While I agree things like overriding operator new is rarely needed, I
doubt it is acceptable to prevent this deliberately on an otherwise
fully supportable platform. As far as I can see, even IBM is after
getting as many Linux-known features as possible into AIX...

Would it work to use sth. like "-G -bsymbolic" instead?

Thanks!
/haubi/

> 
> This patch also uses the default atomic support
> 
> Bootstrapped on powerpc-ibm-aix7.1.0.0
> 
> 2014-10-30  David Edelsohn  <dje....@gmail.com>
> 
>         * configure.host (aix5+): New stanza.
>         (aix4.3+): Do not use -G in link command.
> 
> Index: configure.host
> ===================================================================
> --- configure.host      (revision 216851)
> +++ configure.host      (working copy)
> @@ -212,14 +212,20 @@
>  # CPU-specifc, set those here too.
>  # THIS TABLE IS SORTED.  KEEP IT THAT WAY.
>  case "${host_os}" in
> -  aix4.[3456789]* | aix[56789]*)
> +  aix[56789]*)
> +    # Newer versions of AIX only support PowerPC architecture, so use
> +    # atomic instructions directly.
> +    os_include_dir="os/aix"
> +    atomicity_dir="cpu/generic"
> +    atomic_word_dir="os/aix"
> +    ;;
> +  aix4.[3456789]*)
>      # We set os_include_dir to os/aix only on AIX 4.3 and newer, but
>      # os/aix/atomicity.h works on earlier versions of AIX 4.*, so we
>      # explicitly duplicate the directory for 4.[<3].
>      os_include_dir="os/aix"
>      atomicity_dir="os/aix"
>      atomic_word_dir="os/aix"
> -    OPT_LDFLAGS="-Wl,-G"
>      ;;
>    aix4.*)
>      os_include_dir="os/generic"
> 

Reply via email to