Correction: Makes no difference if I compile the types inside a program (or a module), rather than a unit, but if I change the definition of CandName to use a constant length, rather than a schema, the crash goes away.
Example:
const MaxCandName = 30;
type CandName = string(MaxCandName);
Eliminates the crash. Obviously, I'd rather use the schema.
--------------------------| John L. Ries | Salford Systems | Phone: (619)543-8880 x107 | or (435)867-8885 | --------------------------|
On Sun, 2 May 2010, John L. Ries wrote:
The attached example, produces the following highly informative error message when compiled:
gpcbug20100502.p:13: internal compiler error: Segmentation fault Please submit a full bug report, with preprocessed source if appropriate. See URL:http://www.gnu-pascal.de/todo.html for instructions.
I'm running GPC 20070904, based on gcc-4.1.2 under 64-bit Linux (Slamd64 12.2 to be exact). The error is also triggered on my 32-bit Linux (Debian 5.0.4) system running the same compiler, based on gcc-4.1.3.
The code (attached) is as follows:
unit example; interface
type CandName(MaxCandName:integer) = string(MaxCandName); CandStatus = (Elected, Eliminated, Neither); CandRecord = record Name : CandName; RawVote : integer; Allocation : integer; Status : CandStatus; end; CandArray(N:integer) = array[1..N] of CandRecord; end.
If I change the declaration on the array to "^CandRecord", the example compiles normally. The types also compile normally inside of a program (instead of a unit).
If there's a more recent version of the GPC codebase that I should be using instead, then please let me know.
--------------------------| John L. Ries | Salford Systems | Phone: (619)543-8880 x107 | or (435)867-8885 | --------------------------|