[fpc-devel] Compiling for libgdb, and using make -j on larger SPARC systems

Mark Morgan Lloyd markMLl.fpc-devel at telemetry.co.uk
Thu Aug 8 17:56:16 CEST 2013


Pierre Free Pascal wrote:

>> -----Message d'origine-----
>> De : fpc-devel-bounces at lists.freepascal.org [mailto:fpc-devel-
>> bounces at lists.freepascal.org] De la part de Mark Morgan Lloyd
>> Envoyé : jeudi 8 août 2013 11:02
>> À : fpc-devel at lists.freepascal.org
>> Objet : [fpc-devel] Compiling for libgdb, and using make -j on larger
> SPARC
>> systems
>>
>> I'm having one of my periodic attempts to check FPC trunk on various
>> architectures, this was going to be a question about an exception when
>> trying to link libgdb into 2.6.2 but I find the behaviour has changed so
>> I mention that for information only. Also for information only, when I
>> used -j 8 for 2.6.2 there was a message about left-over directories, I
>> similarly don't get that with trunk (or it's intermittent) so let's
>> leave it.
>>
>> So the current situation is this: when building FPC trunk on Debian
>> Linux on SPARC, everything is fine if I use NOGDB=1. However, if I try
>> to use libgdb (which has in the past but not particularly recently
>> worked OK on this system) I get this
>>
>> make GDB_V603=1 OPT='-O- -gl' all
>> ..
>> ./fpmake compile --localunitdir=.. --globalunitdir=../packages
>> --os=linux --cpu=sparc -o -Ur -o -Xs -o -O2 -o -n -o
>> -Fu/usr/local/src/fpc/fpc-trunk/rtl/units/sparc-linux -o
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/paszlib/units/sparc-linux -o
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-process/units/sparc-linux
>> -o -Fu/usr/local/src/fpc/fpc-trunk/packages/hash/units/sparc-linux -o
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/libtar/units/sparc-linux -o
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fpmkunit/units/sparc-linux -o
>> -O- -o -gl -o -vt -o -dRELEASE
>> --compiler=/usr/local/src/fpc/fpc-trunk/compiler/ppcsparc -bu
>> Start compiling package ide for target sparc-linux.
>> LibGDB was found, build IDE with debugger support
>> Warning: Unable to determine the libgcc path.
>>         Compiling compiler/compunit.pas
>>         Compiling /usr/local/src/fpc/fpc-trunk/compiler/ppheap.pas
>>         Compiling /usr/local/src/fpc/fpc-trunk/compiler/cutils.pas
>> ..
>>         Compiling /usr/local/src/fpc/fpc-trunk/compiler/dbgdwarf.pas
>>         Compiling /usr/local/src/fpc/fpc-trunk/compiler/browcol.pas
>> Warning: Unable to determine the libgcc path.
>>         Compiling fp.pas
>>         Compiling fpcatch.pas
>>         Compiling fpcompil.pas
>> ..
>>         Compiling fpcodtmp.pas
>>         Compiling fptemplt.pas
>>         Linking bin/sparc-linux/fp
>> The installer encountered the following error:
>> External command "/usr/local/src/fpc/fpc-trunk/compiler/ppcsparc -Tlinux
>> -FEbin/sparc-linux -FUunits/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/rtl/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fv/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/chm/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-xml/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-base/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-res/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/iconvenc/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/regexpr/units/sparc-linux/
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/gdbint/units/sparc-linux/ -Fl
>> -Ur -Xs -O2 -n -Fu/usr/local/src/fpc/fpc-trunk/rtl/units/sparc-linux
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/paszlib/units/sparc-linux
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-process/units/sparc-linux
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/hash/units/sparc-linux
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/libtar/units/sparc-linux
>> -Fu/usr/local/src/fpc/fpc-trunk/packages/fpmkunit/units/sparc-linux -O-
>> -gl -vt -dRELEASE -Ur -dNOCATCH -dBrowserCol -dGDB -dsparc
>> -Fu../compiler -Fu../compiler/sparc -Fu../compiler/targets
>> -Fu../compiler/systems -Fi../compiler/sparc -Fi../compiler -Sg
>> -Fl../libgdb/linux/sparc/ -viq fp.pas" failed with exit code 1. Console
>> output:
>> Target OS: Linux for SPARC
>> Compiling fp.pas
>> fp.pas(27,2)  (2004) Start reading includefile globdir.inc
>> Compiling fpcatch.pas
>> ..
>> Writing Resource String Table file: fpcatch.rst
>> Assembling fpcatch
>> Writing Resource String Table file: fp.rst
>> Assembling fp
>> Linking bin/sparc-linux/fp
>> fp.pas(554) Error: Error while linking
>> fp.pas(554) Fatal: There were 1 errors compiling module, stopping
>> Fatal: Compilation aborted
>>
>> make[2]: Leaving directory `/usr/local/src/fpc/fpc-trunk/ide'
>> make[1]: Leaving directory `/usr/local/src/fpc/fpc-trunk'
>>
>> The obvious first question is: are those references to libgcc
>> significant, and what file is being looked for? The normal binary
>> installer hasn't been run on this system since FPC's been built on it
>> from source since something like 2.0.
>>
>> Any and all suggestions appreciated.

 >   Hi Mark,
 >
 > this is one of the problems with fpmake, sometimes we seems to loose
 > the output of the calls to the assembler or the linker :(
 >
 >   Could you try to run make inside ide directory
 > and add -Xd option to OPT?
 > Does this solve your problem?
 >
 > I get the same kind of error on i386-linux system because
 > the compiler chooses  a system library for libreadline.a
 > instead of the one that is in GDBLIBDIR...
 >
 >
 > Pierre Muller

That looks like it fixes the problem I described earlier, and takes me 
back to the one I saw on 2.6.2 (plus possibly some slightly older ones).

../fpc-trunk/ide$ make GDB_V603=1 OPT='-O- -gl -Xd' all
./fpmake compile --localunitdir=.. --globalunitdir=../packages 
--os=linux --cpu=sparc -o -Fu../rtl/units/sparc-linux -o 
-Fu../packages/paszlib/units/sparc-linux -o 
-Fu../packages/fcl-process/units/sparc-linux -o 
-Fu../packages/hash/units/sparc-linux -o 
-Fu../packages/libtar/units/sparc-linux -o 
-Fu../packages/fpmkunit/units/sparc-linux -o -O- -o -gl -o -Xd 
--compiler=/usr/local/bin/ppcsparc -bu
Start compiling package ide for target sparc-linux.
LibGDB was found, build IDE with debugger support
Warning: Unable to determine the libgcc path.
        Compiling fp.pas
..
        Compiling fpcalc.pas
The installer encountered the following error:
External command "/usr/local/bin/ppcsparc -Tlinux -FEbin/sparc-linux 
-FUunits/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/rtl/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/fv/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/chm/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-xml/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-base/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/fcl-res/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/iconvenc/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/regexpr/units/sparc-linux/ 
-Fu/usr/local/src/fpc/fpc-trunk/packages/gdbint/units/sparc-linux/ -Fl 
-Fu../rtl/units/sparc-linux -Fu../packages/paszlib/units/sparc-linux 
-Fu../packages/fcl-process/units/sparc-linux 
-Fu../packages/hash/units/sparc-linux 
-Fu../packages/libtar/units/sparc-linux 
-Fu../packages/fpmkunit/units/sparc-linux -O- -gl -Xd -Ur -dNOCATCH 
-dBrowserCol -dGDB -dsparc -Fu../compiler -Fu../compiler/sparc 
-Fu../compiler/targets -Fu../compiler/systems -Fi../compiler/sparc 
-Fi../compiler -Sg -Fl../libgdb/linux/sparc/ -viq fp.pas" failed with 
exit code 217. Console output:
Free Pascal Compiler version 2.6.2 [2013/08/05] for sparc
Copyright (c) 1993-2012 by Florian Klaempfl and others
Target OS: Linux for SPARC
Compiling fp.pas
..
Compiling /usr/local/src/fpc/fpc-trunk/compiler/sparc/itcpugas.pas
Assembling itcpugas
Compiling fpswitch.pas
Compiling fpvars.pas
Compiling fpdebug.pas
Compiling fpregs.pas
Compiling fpvars.pas
Compiling fputils.pas
Compiling fpvars.pas
Compiling fpcalc.pas
fpcalc.pas(236,3) Note: Local variable "fpucw" not used
Writing Resource String Table file: fpcalc.rst
Assembling fpcalc
Assembling fpvars
fputils.pas(239,5) Note: Local variable "C" is assigned but never used
Assembling fputils
fpregs.pas(281,8) Note: Local variable "code" is assigned but never used
fpregs.pas(822,12) Note: Local variable "value" not used
fpregs.pas(825,8) Note: Local variable "res" is assigned but never used
fpregs.pas(827,8) Note: Local variable "err" is assigned but never used
fpregs.pas(997,8) Note: Local variable "top" not used
fpregs.pas(1002,7) Note: Local variable "TypeStr" not used
fpregs.pas(1251,8) Note: Local variable "reg" is assigned but never used
fpregs.pas(1251,12) Note: Local variable "value" not used
fpregs.pas(1254,8) Note: Local variable "res" is assigned but never used
fpregs.pas(1256,8) Note: Local variable "err" is assigned but never used
fpregs.pas(1381,8) Note: Local variable "top" not used
fpregs.pas(1382,8) Note: Local variable "color" is assigned but never used
fpregs.pas(1384,8) Note: Local variable "i" not used
fpregs.pas(1386,7) Note: Local variable "TypeStr" not used
Fatal: Compilation aborted
An unhandled exception occurred at $001E61C0 :
EDivByZero : Division by zero
   $001E61C0  TCGASSIGNMENTNODE__PASS_GENERATE_CODE,  line 785 of ncgld.pas

At this point: what's actually running, i.e. what command should I apply 
gdb to to get a decent backtrace?

-- 
Mark Morgan Lloyd
markMLl .AT. telemetry.co .DOT. uk

[Opinions above are the author's, not those of his employers or colleagues]



More information about the fpc-devel mailing list