This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: -flto / -flto-partition=none question on ia64-hp-hpux11.23
On Sat, 2011-02-26 at 18:45 +0100, Richard Guenther wrote:
> On Sat, Feb 26, 2011 at 12:22 AM, Steve Ellcey <sje@cup.hp.com> wrote:
> >
> > I am looking at an lto bug on ia64-hp-hpux11.23. If I compile
> > g++.dg/torture/pr33572.C with -flto on this platform I get:
> >
> > ld: Unsatisfied symbol "__gcc_personality_v0" in file /var/tmp//ccYlpGzO.ltrans0.ltrans.o
> > 1 errors.
> > collect2: ld returned 1 exit status
> >
> > (This is using the HP linker which I do for all my GCC builds.)
>
> so you do not have the linker-plugin?
Correct.
> I think this hints at an issue with the collect2 LTO path. It would
> be interesting
> to see where references to the missing symbols appear / vanish - just look
> at all intermediate files generated.
>
> Richard.
This is interesting, there seem to be two different variables at play
here. __gcc_personality_v0 and __gxx_personality_v0. When I compile
with '-flto -O2' the error I get is about __gcc_personality_v0. When I
look at the two assembly files created during this compililation I see:
ccG1Elhg.ltrans0.s: .global __gcc_personality_v0#
ccG1Elhg.ltrans0.s: .type __gcc_personality_v0#, @function
ccG1Elhg.ltrans0.s: .personality __gcc_personality_v0#
pr33572.s: stringz "\0014__gxx_personality_v0"
pr33572.s: .global __gxx_personality_v0#
pr33572.s: .type __gxx_personality_v0#, @function
pr33572.s: .personality __gxx_personality_v0#
When I add -flto-partition=none to the compilation, I do not get the
ltrans file and I do not get any reference to __gcc_personality_v0.
I don't think GCC has a __gcc_personality_v0 function, does it? This is
probably why the linker is complaining, if you declare a function as
external the HP linker will complain even if there are no uses of that
function. I think the GNU linker would ignore the external declaration
if there are no uses of it.
Steve Ellcey
sje@cup.hp.com