Angelo Fumagalli wrote:
Running the gpc20060215 Test Suite (based on gcc-3.4.4) under the Red Hat environment, in particular:
Red Hat Enterprise Linux ES release 3 (Taroon Update 6)
as "uname -a" :
Linux tlvqpe 2.4.21-37.ELsmp #1 SMP Sep 7 13:28:55 EDT 2005 i686 i686 i386 GNU/Linux
we got some internal compiler error ...
Test Run By 4grpm on 2006-02-27 11:53:22 Native configuration is i686-pc-linux-gnu (tlvqpe) gpc 20060215, based on gcc-3.4.4, flags: -g -O3 -W -Wall -Wno-unused
=== gpc tests ===
Running target any Running testsuite ...
UNSUPPORTED: aregextest.pas FAIL: fjf932a.pas FAIL: fjf932b.pas
=== gpc Summary ===
# of tests 5057 # of expected passes 5054
TEST fjf932a.pas: p/types.c:1887:find_field: failed assertion `unreachable code' ./fjf932a.pas: In main program: ./fjf932a.pas:73: error: Internal compiler error. Please submit a full bug report to the GPC mailing list gpc@gnu.de. See URL:http://www.gnu-pascal.de/todo.html for details. failed TEST fjf932b.pas: p/types.c:1887:find_field: failed assertion `unreachable code' ./fjf932b.pas: In main program: ./fjf932b.pas:62: error: Internal compiler error. Please submit a full bug report to the GPC mailing list gpc@gnu.de. See URL:http://www.gnu-pascal.de/todo.html for details.
Thank you for the info. I have too quickly assumed that line 1887 in p/types.c will never be executed. The following should fix the problem:
--- p/types.c 15 Feb 2006 02:03:12 -0000 1.10 +++ p/types.c 27 Feb 2006 21:51:28 -0000 @@ -1884,7 +1884,6 @@ tree field2 = sorted_fields[i], ret; if (DECL_NAME (field2) == component) { - gcc_unreachable (); field = field2; break; }
Anyway, we tried to build our gpc application: no gpc compilation error found, but we got a segmentation fault when running out application:
-bash-2.05b$ ./grfc.exe GRF>cc_gra_sc.smt /out=cc_gra_sc.c Segmentation fault
then trying to use gbd:
-bash-2.05b$ gdb grfc.exe GNU gdb Red Hat Linux (6.3.0.0-1.62rh) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".
(gdb) run Starting program: /dktlvqpe1/grfdev/ags/grfpkglnxv12/grfc.exe GRF>cc_gra_sc.smt /out=cc_gra_sc.c Die: DW_TAG_set_type (abbrev = 32, offset = 81793) has children: FALSE attributes: DW_AT_type (DW_FORM_ref4) constant ref: 81665 (adjusted) Dwarf Error: Cannot find type of die [in module /dktlvqpe1/grfdev/ags/grfpkglnxv12/grfc.exe] (gdb) where Die: DW_TAG_set_type (abbrev = 32, offset = 81793) has children: FALSE attributes: DW_AT_type (DW_FORM_ref4) constant ref: 81665 (adjusted) Dwarf Error: Cannot find type of die [in module /dktlvqpe1/grfdev/ags/grfpkglnxv12/grfc.exe] (gdb)
it seems to me that the our gdb versin (6.3.0.0-1.62rh) isn't compatibel with gpc20060215. Which is the proper gdb version for gpc20060215 based on gcc-3.4.4 ?
Waiting for suggestions.
Thank you very much in advance.
Angelo Fumagalli
This in a known problem with gdb -- all released gdb versions have problem with Pascal DWARF-2 debug info. You can try `-gstabs+' to choose stabs debug format. Or you may try patching gdb to get better Pascal DWARF-2 support:
http://www.math.uni.wroc.pl/~hebisch/gpc/gdb-6.3.diff