Bug 13131 - internal error in ppc64_elf_edit_toc when linking 416.gamess
Summary: internal error in ppc64_elf_edit_toc when linking 416.gamess
Status: RESOLVED WONTFIX
Alias: None
Product: binutils
Classification: Unclassified
Component: ld (show other bugs)
Version: 2.21
: P2 normal
Target Milestone: ---
Assignee: Alan Modra
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-24 21:48 UTC by Bill Schmidt
Modified: 2011-09-07 13:56 UTC (History)
0 users

See Also:
Host: powerpc64-linux
Target: powerpc64-linux
Build: powerpc64-linux
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Bill Schmidt 2011-08-24 21:48:00 UTC
The following error occurs when linking 416.gamess during the first pass of a feedback-directed optimization build of SPEC CPU2006.  This occurs on GCC mainline using binutils 2.21.1.

Alan, I'll send you an email with information about where to find relevant build logs and so forth.  Thanks!

Bill


/home/wschmidt/gcc/install/gcc-mainline-base/bin/gfortran  -g -save-temps=obj -ffast-math -O3 -mveclibabi=mass -mcpu=power7 -mrecip=rsqrt -fpeel-loops -funroll-loops -ftree-vectorize -fvect-cost-model -O3 -mvsx -maltivec -mpopcntd -m64 -ftree-loop-linear        -static -Wl,-q -Wl,--wrap,atan2 -Wl,-Map=link.map,--cref -g -save-temps=obj -ffast-math -O3 -mveclibabi=mass -mcpu=power7 -mrecip=rsqrt -fpeel-loops -funroll-loops -ftree-vectorize -fvect-cost-model -O3 -mvsx -maltivec -mpopcntd -m64 -ftree-loop-linear -L %{BASE_DIR}/lib64 -L /opt/ibmcmp/xlmass/6.1/lib64 -L /home/wschmidt/gcc/install/gcc-mainline-base/lib64/power7 -fprofile-generate  aldeci.fppized.o algnci.fppized.o basecp.fppized.o basext.o bashuz.o bashz2.o basn21.fppized.o basn31.o bassto.fppized.o blas.fppized.o ccaux.o ccsdt.fppized.o chgpen.fppized.o cisgrd.fppized.o cosmo.fppized.o cphf.fppized.o cpmchf.o cprohf.fppized.o ddi.fppized.o delocl.fppized.o dft.fppized.o dftaux.fppized.o dftexc.fppized.o dftfun.o dftgrd.fppized.o dftint.fppized.o dgeev.o dmulti.fppized.o drc.fppized.o dummygetenv.fppized.o ecp.fppized.o ecpder.fppized.o ecplib.fppized.o ecppot.o efdrvr.fppized.o efelec.o efgrd2.fppized.o efgrda.fppized.o efgrdb.fppized.o efgrdc.fppized.o efinp.fppized.o efinta.fppized.o efintb.fppized.o efpaul.fppized.o efpcm.fppized.o efpcov.fppized.o eigen.fppized.o eomcc.fppized.o ffield.fppized.o frfmt.fppized.o fsodci.fppized.o gamess.fppized.o globop.fppized.o gradex.fppized.o grd1.fppized.o grd2a.fppized.o grd2b.o grd2c.fppized.o guess.fppized.o gugdga.fppized.o gugdgb.fppized.o gugdm.fppized.o gugdm2.fppized.o gugdrt.fppized.o gugem.fppized.o gugsrt.fppized.o gvb.fppized.o hess.fppized.o hss1a.fppized.o hss1b.fppized.o hss2a.fppized.o hss2b.fppized.o inputa.fppized.o inputb.fppized.o inputc.fppized.o int1.fppized.o int2a.fppized.o int2b.o iolib.fppized.o lagran.fppized.o local.fppized.o loccd.fppized.o locpol.fppized.o mccas.fppized.o mcjac.o mcpinp.fppized.o mcpint.fppized.o mcplib.o mcqdpt.fppized.o mcqdwt.o mcqud.fppized.o mcscf.fppized.o mctwo.fppized.o morokm.fppized.o mp2.fppized.o mp2ddi.fppized.o mp2grd.fppized.o mpcdat.o mpcgrd.fppized.o mpcint.fppized.o mpcmol.fppized.o mpcmsc.fppized.o mthlib.fppized.o nameio.fppized.o nmr.fppized.o olix.o ordint.fppized.o ormas1.fppized.o parley.fppized.o pcm.fppized.o pcmcav.o pcmcv2.fppized.o pcmder.fppized.o pcmdis.fppized.o pcmief.fppized.o pcmpol.fppized.o pcmvch.fppized.o prpel.fppized.o prplib.fppized.o prppop.fppized.o qeigen.fppized.o qfmm.fppized.o qmfm.fppized.o qmmm.fppized.o qrel.fppized.o raman.fppized.o rhfuhf.fppized.o rxncrd.fppized.o ryspol.o scflib.fppized.o scfmi.fppized.o scrf.fppized.o sobrt.fppized.o soffac.fppized.o solib.fppized.o sozeff.fppized.o statpt.fppized.o surf.fppized.o symorb.fppized.o symslc.fppized.o tdhf.fppized.o trans.fppized.o trfdm2.fppized.o trnstn.fppized.o trudge.fppized.o umpddi.fppized.o unport.fppized.o vibanl.fppized.o vscf.fppized.o zheev.fppized.o zmatrx.fppized.o             -lm     /home/meissner/tools/ppc64/lib/libfastmath-atan2.a -lmassvp7_64 -lmass_simdp7_64 -lmass_64 -lm   -o gamess
/home/wschmidt/binutils/install/bin/ld: BFD (GNU Binutils) 2.21.1 internal error, aborting at /home/wschmidt/binutils/binutils-2.21.1/bfd/elf64-ppc.c line 8431 in ppc64_elf_edit_toc
/home/wschmidt/binutils/install/bin/ld: Please report this bug.
collect2: error: ld returned 1 exit status
Comment 1 Alan Modra 2011-08-25 12:10:12 UTC
This turns out to be an utterly weird .debug_loc reference into the TOC.  I think gcc var tracking had a seizure.

I cannot see why we would ever want a TOC reference in debug info, so I'm closing this as wontfix.  I suppose the linker could edit the DW_OP_addr <toc entry>, DW_OP_deref to DW_OP_addr <what the toc entry pointed to>, DW_OP_nop, but that's just silly when gcc shouldn't be generating this garbage in the first place.

(insn 269 7857 8303 5 (set (reg/f:DI 9 9 [1981])
        (const:DI (plus:DI (reg:DI 2 2)
                (high:DI (const:DI (unspec:DI [
                                (symbol_ref/u:DI ("*.LC7") [flags 0x2])
                            ] UNSPEC_TOCREL)))))) 513 {largetoc_high}
     (expr_list:REG_EQUIV (const:DI (plus:DI (reg:DI 2 2)
                (high:DI (const:DI (unspec:DI [
                                (symbol_ref/u:DI ("*.LC7") [flags 0x2])
                            ] UNSPEC_TOCREL)))))
        (nil)))

(debug_insn 8303 269 8128 5 (var_location:DI D#146 (reg/f:DI 9 9 [1981])) -1
     (nil))

(debug_insn 8124 278 8123 5 (var_location:DI D#143 (plus:DI (reg/f:DI 20 20 [5416])
        (const_int 32 [0x20]))) -1
     (nil))


(debug_insn 8123 8124 7848 5 (var_location:DI D#142 (mem/u/c:DI (lo_sum:DI (debug_expr:DI D#146)
            (const:DI (unspec:DI [
                        (symbol_ref/u:DI ("*.LC7") [flags 0x2])
                    ] UNSPEC_TOCREL))) [23 S8 A8])) -1
     (nil))

(debug_insn 7848 8123 7852 5 (var_location:SI iznuc (fix:SI (plus:DF (float:DF (mem:SI (debug_expr:DI D#142) [0 MEM[base: D.8528_3216, offset: 0B]+0 S4 A32]))
            (mem:DF (debug_expr:DI D#143) [0 MEM[base: D.8527_3225, offset: 0B]+0 S8 A64])))) chgpen.fppized.f:416 -1
     (nil))
Comment 2 Sourceware Commits 2011-09-06 07:41:29 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	amodra@sourceware.org	2011-09-06 07:41:25

Modified files:
	bfd            : ChangeLog elf64-ppc.c 

Log message:
	PR ld/13131
	* elf64-ppc.c (adjust_toc_syms): Delete redundant code.
	(ppc64_elf_edit_toc): Fix style nit.  Report some details
	on linker failure due to reference in debug or non-alloc
	sections to optimized away toc entry, and don't abort.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&r1=1.5464&r2=1.5465
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf64-ppc.c.diff?cvsroot=src&r1=1.361&r2=1.362
Comment 3 Sourceware Commits 2011-09-07 13:56:14 UTC
CVSROOT:	/cvs/src
Module name:	src
Changes by:	amodra@sourceware.org	2011-09-07 13:56:09

Modified files:
	bfd            : ChangeLog elf64-ppc.c 

Log message:
	PR ld/13131
	* bfd/elf64-ppc.c (adjust_toc_syms): Ensure ppc64_elf_howto_table
	is initialized.

Patches:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/ChangeLog.diff?cvsroot=src&r1=1.5465&r2=1.5466
http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf64-ppc.c.diff?cvsroot=src&r1=1.362&r2=1.363