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

Waldek Hebisch hebisch at math.uni.wroc.pl
Wed Feb 14 14:35:54 CET 2007

Mirsad Todorovac wrote:

> 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:
>    -E    emulate trampolines
>    -e    do not emulate trampolines
>    -M    restrict mprotect()
>    -m    do not restrict mprotect()

I wrote previously about nonlocal gotos.  But now I think that the
problem is with trampolines (problems with nonlocal gotos and trampolines
are frequently related).  Description of PAX extension makes clear
that by default trampolines do not work if the extension is active,
and the affected tests use trampolines.  On other (non-Linux) platforms
the compiler emits 'mprotect' calls to allows trampolines to work
(on Linux trampolines are supposed to work even without 'mprotect' call).
So, the best solution would be to modify gcc so that  'mprotect' gets
called and to tell PAX to respect 'mprotect' calls.

> 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.

Some time ago I modified test_run script to allow a runner program: instead
of running test directly we would call runner program giving it the
name of executable and the argument list.  This was needed for testing
cross-compilers (so that runner could launch apropriate emulator), in
particular I used this to test djgpp and mingw ports (using dosemu and
wine).  I could probably dig out (or recreate) the patch, but I am
not sure if such change is worth including in the standard version.
                              Waldek Hebisch
hebisch at math.uni.wroc.pl 

More information about the Gpc mailing list