Test results gpc-20060325 on gcc-4.1.1 P.S.

Mirsad Todorovac mtodorov at alu.hr
Wed Feb 14 13:32:21 CET 2007

> Mirsad Todorovac wrote:
>> Here are the test results on my box.
>> Test Run By mtodorov on 2007-02-13 22:15:43
>> Native configuration is i686-pc-linux-gnu (domac)
>> gpc 20060325, based on gcc-4.1.1, flags: -g -O3 -W -Wall -Wno-unused
>> TEST	agettext2test.pas:	SKIPPED: could not set locale `de_DE'
>> TEST	aregextest.pas:	SKIPPED: librx not installed
>> TEST	backtracerr.pas:	14c14,71
>> < ./test_run: line 339: 20465 Killed                  ./"$A_OUT" "$1"
> <snip>
>> failed
>> TEST	fay.pas:	1c1,12
>> < ./test_run: line 339:   420 Killed                  ./"$A_OUT" "$1"
>> ---
> <snip>
>> failed
>> TEST	fjf165a.pas:	SKIPPED: German locale not installed
>> TEST	fjf206c.pas:	failed: ./fjf206c.pas:2: error: arithmetical overflow
>> ./fjf206c.pas:2: error: constant overflow in expression
>> TEST	fjf322.pas:	'result_0.length./fjf322.pas: In function `o':
>> gpc1: warnings being treated as errors
>> ./fjf322.pas:8: warning: ' is used uninitialized in this function
>> failed
>> TEST	fjf35.pas:	./test_run: line 339: 16467 Killed                  ./"$A_OUT" "$1"
>> TEST	fjf395a.pas:	a Value 2
>> TEST	fjf395b.pas:	a Value -128
>> TEST	fjf403b.pas:	failed: failed
>> TEST	fjf563e.pas:	failed: failed
>> TEST	fjf587b.pas:	'concat_0._p_Schema_[3]{lb: 1 sz: 1}./fjf587b.pas: In procedure `Foo':
>> gpc1: warnings being treated as errors
>> ./fjf587b.pas:5: warning: ' is used uninitialized in this function
>> failed
>> TEST	fjf779a.pas:	failed:
>> TEST	fjf779b.pas:	failed:
>> TEST	fjf779e.pas:	failed:
>> TEST	fjf779f.pas:	failed:
>> TEST	fjf779g.pas:	failed:
>> TEST	fproc.pas:	4c4,11
>> < Stack frame:  0   formal print =./test_run: line 339:  1897 Killed                  ./"$A_OUT" "$1"
> <snip>
>> failed
>> TEST	gmptest.pas:	SKIPPED: libgmp (>=3.x) not installed
>> TEST	knuth1.pas:	./test_run: line 339:   175 Killed                  ./"$A_OUT" "$1"
>> TEST	nicola4c.pas:	failed:
>> TEST	nlgpp.pas:	./test_run: line 339: 21147 Killed                  ./"$A_OUT" "$1"
>> TEST	nlgpp2.pas:	13c13,30
>> < ./test_run: line 339: 12038 Killed                  ./"$A_OUT" "$1"
> <snip>
>> TEST	t6334-2.pas:	./test_run: line 339: 27049 Killed                  ./"$A_OUT" "$1"
>> TEST	t6p6p3p4.pas:	./test_run: line 339:  7676 Killed                  ./"$A_OUT" "$1"
> That looks bad.  The 'Killed' messages shows that you have serious
> problem with nonlocal gotos. That is strange, as nonlocal gotos worked
> fine for me and other folks.  Are you sure that you correctly applied patches?
> Also, is it fresh build (just after patching) or you patched
> failed build and re-run make?

I have rerun tests, and I've run /sbin/chpax -pemrxs a.out after each 
compile, but clumsy, since it is hard for me to modify test_run code.

I used gpc wrapper shell script, but I did it clumsy as I said and created 
some "a.out: No such file or directory" errors.

BUT THE GOOD NEWS is that there are no longer "Killed" error messages, so 
I think we've found the murderer: it was Linux's PAX kernel extension!

chpax has following options, so you will see why it could have affected 
nonlocal gotos:

mtodorov at domac:~/pascal/gcc-4.1.1/gcc/p/test$ /sbin/chpax -v
/sbin/chpax 0.7 .::. Manage PaX flags for binaries
Usage: /sbin/chpax OPTIONS FILE1 FILE2 FILEN ...
   -P    enforce paging based non-executable pages
   -p    do not enforce paging based non-executable pages
   -E    emulate trampolines
   -e    do not emulate trampolines
   -M    restrict mprotect()
   -m    do not restrict mprotect()
   -R    randomize mmap() base [ELF only]
   -r    do not randomize mmap() base [ELF only]
   -X    randomize ET_EXEC base [ELF only]
   -x    do not randomize ET_EXEC base [ELF only]
   -S    enforce segmentation based non-executable pages
   -s    do not enforce segmentation based non-executable pages
   -v    view current flag mask
   -z    zero flag mask (next flags still apply)

The flags only have effect when running the patched Linux kernel.
mtodorov at domac:~/pascal/gcc-4.1.1/gcc/p/test$

The wrapper is simplistic, it still does something wrong. It does not work 
in all cases, and I can investigate, but I believe Frank will know 
immediatelly the solution, provided he has enough time ... The wrapper:

#/bin/bash -f

/usr/local/bin/gpc $*

if [ -x a.out ]; then
     /sbin/chpax -pemrxs a.out

This far we have located fault on PAX process killer, so I think the 
further work is the question whether to allow post-processing command to 
be executed in test_run script in a general manner, so chpax could be 
safely executed whenever $PC is.

I am waiting for further instructions. I saw some warnings about number of 
parms in format not matching parameter list, so I could concentrate on 


More information about the Gpc mailing list