[Bug target/61577] [4.9.0] can't compile on hp-ux v3 ia64
bugzilla-gcc at thewrittenword dot com
gcc-bugzilla@gcc.gnu.org
Fri Jul 5 11:31:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61577
--- Comment #41 from The Written Word <bugzilla-gcc at thewrittenword dot com> ---
(In reply to The Written Word from comment #39)
> (In reply to EML from comment #25)
> > I have applied the patch and tried your other suggestions, still the stage1
> > compiler has the same problems generating executables.
> >
> > In analyzing the intermediate files between working (gcc 4.93) and not
> > (bootstrap 8.3), the intermediate files seem similar until the "mach" stage
> >
> > The problem seems to be in out the compiler decides to reference a string in
> > the source.
> >
> > My program is:
> >
> > #include <stdio.h>
> >
> > int main()
> > {
> > printf("Hellos World\n");
> > return 0;
> > }
> >
> > The generated .s file for Working does this:
> >
> > .LC0:
> > stringz "Hellos World"
> >
> > <edited for breivity>
> >
> > addl r36 = @ltoffx(.LC0), r1
> > ;;
> > ld8.mov r36 = [r36], .LC0
> >
> > The non-working .s file does this:
> >
> > .LC0:
> > stringz "Hellos World"
> >
> > <edited for breivity>
> >
> > movl r36 = @gprel(.LC0)
> > ;;
> > add r36 = r1, r36
> >
> >
> > If I replace those 3 lines and run the assembler+linker by hand - the
> > non-working foo.s will run correctly
>
> I can now duplicate what you're seeing:
> $ diff -u gcc-4.9.4/hello.s gcc-8.3.0/hello.s
> --- gcc-4.9.3/hello.s 2019-07-05 04:55:49 +0000
> +++ gcc-8.3.0/hello.s 2019-07-05 04:55:44 +0000
> @@ -1,5 +1,6 @@
> .file "hello.c"
> .pred.safe_across_calls p1-p5,p16-p63
> + .section .text, "ax", "progbits"
> .section .rodata, "a", "progbits"
> .align 8
> .LC0:
> @@ -19,9 +20,9 @@
> mov r32 = b0
> mov r35 = r1
> .body
> - addl r36 = @ltoffx(.LC0), r1
> + movl r36 = @gprel(.LC0)
> ;;
> - ld8.mov r36 = [r36], .LC0
> + add r36 = r1, r36
> br.call.sptk.many b0 = puts#
> mov r1 = r35
> mov r14 = r0
>
> $ grep LTOFF <objdir>/gcc/config.status
> D["HAVE_AS_LTOFFX_LDXMOV_RELOCS"]=" 1"
If I revert the patch for PR60465 (added as an attachment), then looking at the
difference between gcc-4.9.4/hello.s and gcc-8.3.0/hello.s gives:
--- gcc-4.9.4/hello.s 2019-07-05 04:55:49 +0000
+++ gcc-8.3.0/hello.s 2019-07-05 11:25:09 +0000
@@ -1,5 +1,6 @@
.file "hello.c"
.pred.safe_across_calls p1-p5,p16-p63
+ .section .text, "ax", "progbits"
.section .rodata, "a", "progbits"
.align 8
.LC0:
Reverting the patch doesn't bring us any closer to the segfault in libstdc++-v3
though.
More information about the Gcc-bugs
mailing list