Thu 31 Jan 2013 02:14:01 PM UTC, original submission:
The Free Pazscal cycles for powerpc64 target fails to compelte
after system upgrade.
Acccording to Jonas Maebe, this is probably due to issues with recent binutils linker.
Jonas filed a bug report: https://bugzilla.redhat.com/show_bug.cgi?id=906273
Pierre Muller
Content of the email first sent to free pascal core mailing list:
gcc1-powerpc7 has been upgraded,
but the new Binutils seem to have problems with our compiler:
Assembling compiler
Assembling pp
Linking ./pp
/usr/bin/ld: warning: ./link.res contains output sections; did you forget
-T?
/usr/bin/ld: dynreloc miscount for
/home/muller/pas/trunk/fpcsrc/rtl/units/powerpc64-linux/system.o, section
.opd
/usr/bin/ld: can not edit opd: Bad value
pp.pas(241) Error: Error while linking
pp.pas(241) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
make[3]: *** [ppcppc64] Error 1
make[3]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make[2]: *** [next] Error 2
make[2]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make[1]: *** [ppc2] Error 2
make[1]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make: *** [cycle] Error 2
[muller@gcc1-power7 compiler]$ ld --version
GNU ld version 2.23.51.0.1-3.fc18 20120806
Copyright 2012 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later
version.
This program has absolutely no warranty.
Note that ppc1 is compiled with 2.6.0 ppcppc64 compiler here.
if I use current trunk 2.7.1 ppcppc64, I already get the error
when linking ppc1.
It seems like we are doing things recent GNU ld doesn't like...
The problem is that I have no idea what .opd is :(
So don't count on me to solve that problem...
Pierre
[muller@gcc1-power7 compiler]$ objdump -h
../rtl/units/powerpc64-linux/system.o | head -40
../rtl/units/powerpc64-linux/system.o: file format elf64-powerpc
Sections:
Idx Name Size VMA LMA File off
Algn
0 .text 00000000 0000000000000000 0000000000000000 00000040
2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
1 .data 00000000 0000000000000000 0000000000000000 00000040
2**0
CONTENTS, ALLOC, LOAD, DATA
2 .bss 000020d0 0000000000000000 0000000000000000 00000040
2**3
ALLOC
3 .debug_line 00011c3d 0000000000000000 0000000000000000 00000040
2**0
CONTENTS, RELOC, READONLY, DEBUGGING
4 .debug_abbrev 00000248 0000000000000000 0000000000000000 00011c7d
2**0
CONTENTS, READONLY, DEBUGGING
5 .text.b_DEBUGSTART_$SYSTEM 00000000 0000000000000000 0000000000000000
00011ec5 2**0
CONTENTS, ALLOC, LOAD, READONLY, CODE
6 .text.n_system_$$_geterrno$$longint 0000009c 0000000000000000
- 00011ec8 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
7 .opd 00007d28 0000000000000000 0000000000000000 00011f68
2**3
CONTENTS, ALLOC, LOAD, RELOC, DATA
8 .text.n_system_$$_seterrno$longint 0000009c 0000000000000000
- 00019c90 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
9 .text.n_system_$$_fpsyscall$int64$$int64 000000ac 0000000000000000
- 00019d30 2**3
CONTENTS, ALLOC, LOAD, RELOC, READONLY, CODE
-----Message d'origine-----
De : -unavailable- [mailto:pierre@freepascal.org]
Envoyé : jeudi 31 janvier 2013 01:24
À : -unavailable-
Objet : Free Pascal compilation failed gcc1-power7
Starting /home/muller/bin/linux-fpctrunkup
Start ppcppc64 version is 2.7.1 2013/01/27
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: Working copy '/home/muller/pas/trunk' is too old (format 10,
created by Subversion 1.6)
svn: E155036: Please see the 'svn upgrade' command
svn: E155036: Working copy '/home/muller/pas/trunk' is too old (format 10,
created by Subversion 1.6)
Starting make distclean all
Ending make distclean all; result=2
/usr/bin/rm -rf units
/usr/bin/rm -f .o .ppu .rst .s .a .so *.ppl
/usr/bin/rm -rf *.sl
/usr/bin/rm -f fpcmade.* Package.fpc ppas.sh script.res link.res
/usr/bin/rm -f *_ppas.sh
make[2]: Leaving directory `/home/muller/pas/trunk/fpcsrc/ide/compiler'
make -C compiler clean
make[2]: Entering directory `/home/muller/pas/trunk/fpcsrc/ide/compiler'
/usr/bin/rm -f
/home/muller/pas/trunk/fpcsrc/ide/units/powerpc64-linux/compunit.ppu
/usr/bin/rm -rf units
/usr/bin/rm -f .o .ppu .rst .s .a .so *.ppl
/usr/bin/rm -rf *.sl
/usr/bin/rm -f fpcmade.* Package.fpc ppas.sh script.res link.res
/usr/bin/rm -f *_ppas.sh
make[2]: Leaving directory `/home/muller/pas/trunk/fpcsrc/ide/compiler'
make[1]: Leaving directory `/home/muller/pas/trunk/fpcsrc/ide'
make -C installer distclean
make[1]: Entering directory `/home/muller/pas/trunk/fpcsrc/installer'
/usr/bin/rm -f installer writeidx installer.o writeidx.o libpinstaller.a
libpwriteidx.a libimpinstaller.a libimpwriteidx.a
/usr/bin/rm -f units/powerpc64-linux/scroll.ppu
units/powerpc64-linux/insthelp.ppu
/usr/bin/rm -f installer.pas
/usr/bin/rm -rf units
/usr/bin/rm -f .o .ppu .rst .s .a .so *.ppl
/usr/bin/rm -rf *.sl
/usr/bin/rm -f fpcmade.* Package.fpc ppas.sh script.res link.res
/usr/bin/rm -f *_ppas.sh
make[1]: Leaving directory `/home/muller/pas/trunk/fpcsrc/installer'
/usr/bin/rm -f build-stamp.*
/usr/bin/rm -f base.build-stamp.*
Makefile:2717: *** The only supported starting compiler version is 2.6.0.
You are trying to build with 2.7.1. If you are absolutely sure that the
current compiler is built from the exact same version/revision, you can try
to use OVERRIDEVERSIONCHECK=1 to override . Stop.
Starting make distclean all, using /home/muller/pas/fpc-2.6.0/bin/ppcppc64
Ending make distclean all with release binary; result=2
/usr/bin/rm -f units/powerpc64-linux/ppu.ppu units/powerpc64-linux/crc.ppu
units/powerpc64-linux/usubst.ppu
/usr/bin/rm -rf units
/usr/bin/rm -f .o .ppu .rst .s .a .so *.ppl
/usr/bin/rm -rf *.sl
/usr/bin/rm -f fpcmade.* Package.fpc ppas.sh script.res link.res
/usr/bin/rm -f *_ppas.sh
make[6]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler/utils'
/usr/bin/rm -rf powerpc64/units
/usr/bin/rm -f powerpc64/.o powerpc64/.ppu powerpc64/.rst powerpc64/.s
powerpc64/.a powerpc64/.so powerpc64/*.ppl
/usr/bin/rm -f powerpc64/ppc386 powerpc64/ppc68k powerpc64/ppcx64
powerpc64/ppcppc powerpc64/ppcsparc powerpc64/ppcppc64 powerpc64/ppcarm
powerpc64/ppcmips powerpc64/ppcmipsel powerpc64/ppcjvm powerpc64/ppcppc64
/usr/bin/rm -f ppcppc64
/usr/bin/mkdir -p powerpc64/units/powerpc64-linux
/home/muller/pas/trunk/fpcsrc/compiler/ppc1 -gl -Ur -Xs -O2 -n -Fupowerpc64
-Fusystems -Fu/home/muller/pas/trunk/fpcsrc/rtl/units/powerpc64-linux
-Fipowerpc64 -FE. -FUpowerpc64/units/powerpc64-linux -dDEBUG -dRELEASE
-dpowerpc64 -dGDB -dBROWSERLOG -Fuppcgen -Sew pp.pas
/usr/bin/ld: warning: ./link.res contains output sections; did you forget
-T?
/usr/bin/ld: dynreloc miscount for
/home/muller/pas/trunk/fpcsrc/rtl/units/powerpc64-linux/system.o, section
.opd
/usr/bin/ld: can not edit opd: Bad value
pp.pas(241) Error: Error while linking
pp.pas(241) Fatal: There were 1 errors compiling module, stopping
Fatal: Compilation aborted
make[5]: *** [ppcppc64] Error 1
make[5]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make[4]: *** [next] Error 2
make[4]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make[3]: *** [ppc2] Error 2
make[3]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make[2]: *** [cycle] Error 2
make[2]: Leaving directory `/home/muller/pas/trunk/fpcsrc/compiler'
make[1]: *** [compiler_cycle] Error 2
make[1]: Leaving directory `/home/muller/pas/trunk/fpcsrc'
make: *** [build-stamp.powerpc64-linux] Error 2
make all failed to create new binary
|