On IRIX, libsigsegv compiles, tests, and installs correctly on IRIX. However, when gawk-3.1.7 is built with USE="libsigsegv" (which is an RDEPEND of the gawk ebuild) the gawk build process tries to rebuild an internal libsigsegv rather than using the external library. Despite libsigsegv-2.6 building cleanly, however the version bundled with gawk (which appears to be 2.7) gets as far as: ... Optional Platform Environment: ... checking whether a signal handler can be left through siglongjmp and setcontext... ... and then never gets any further.
Created attachment 201708 [details] Failing 'conftest.c' from configure This code gets stuck in an infinite loop: $ /usr/sbin/par -sSSld -a 128 ./conftest 0mS[ 1] (101387016): was sent signal SIGUSR1 by pid 101343478 0mS[ 1] par(101387016): received signal SIGUSR1 (handler 0x10002ac8) 0mS[ 1] par(101387016): END-pause() errno = 4 (Interrupted function call) 0mS[ 1] par(101387016): sigreturn(0x7ffb7a90) 0mS[ 1] par(101387016): END-sigreturn() OK 0mS[ 1] conftest(101387016): execve("./conftest", 0x7ffb7f04, 0x7ffb7f0c) 2mS[ 1] conftest(101387016): END-execve() OK 3mS[ 1] conftest(101387016): sysconf(_SC_CAP) 3mS[ 1] conftest(101387016): END-sysconf() = 1 3mS[ 1] conftest(101387016): syssgi(SGI_PROC_ATTR_GET, 0xfb3daf0, 0x7ffb7e80, 0, 0, 0) 3mS[ 1] conftest(101387016): END-syssgi() = 0 3mS[ 1] conftest(101387016): getuid() 3mS[ 1] conftest(101387016): END-getuid() = 250, euid=250 3mS[ 1] conftest(101387016): getuid() = 250, euid=250 3mS[ 1] conftest(101387016): getgid() 3mS[ 1] conftest(101387016): END-getgid() = 250 egid=250 3mS[ 1] conftest(101387016): getgid() = 250 egid=250 3mS[ 1] conftest(101387016): open("/lib32/rld", O_RDONLY, 04) 3mS[ 1] conftest(101387016): END-open() = 3 3mS[ 1] conftest(101387016): read(3, 0x7ffb7ca0, 512) 3mS[ 1] conftest(101387016): END-read(3, <7f 45 4c 46 01 02 01 00 00 00 00 00 00 00 00 00>..., 512) = 512 3mS[ 1] conftest(101387016): elfmap(3, 0x7ffb7d14, 2) 3mS[ 1] conftest(101387016): END-elfmap() = 0xfb60000 3mS[ 1] conftest(101387016): close(3) 3mS[ 1] conftest(101387016): END-close() OK 3mS[ 1] conftest(101387016): getpagesize() 3mS[ 1] conftest(101387016): END-getpagesize() = 16384 3mS[ 1] conftest(101387016): syssgi(0x5c, 0, 0x7ffb7ec0, 0xfbd61dc, 0, 0) 3mS[ 1] conftest(101387016): END-syssgi() = 0 3mS[ 1] conftest(101387016): syssgi(0x5c, 0, 0xfbd7ff0, 0, 0x65727200, 0xfbd7853) 3mS[ 1] conftest(101387016): END-syssgi() = 0 3mS[ 1] conftest(101387016): open("/dev/zero", O_RDONLY, 01757300000) 3mS[ 1] conftest(101387016): END-open() = 3 3mS[ 1] conftest(101387016): mmap(0xfbd8000, 32768, PROT_WRITE|PROT_READ, MAP_PRIVATE, 3, 0) 3mS[ 1] conftest(101387016): END-mmap() = 0xfbd8000 3mS[ 1] conftest(101387016): close(3) 3mS[ 1] conftest(101387016): END-close() OK 3mS[ 1] conftest(101387016): sysinfo(_MIPS_SI_PROCESSORS, 0x7ffb7d60, 257) 3mS[ 1] conftest(101387016): END-sysinfo() = 23 3mS[ 1] conftest(101387016): open("/opt/gentoo/usr/lib32/libc.so.1", O_RDONLY, 05) 3mS[ 1] conftest(101387016): END-open() errno = 2 (No such file or directory) 3mS[ 1] conftest(101387016): open("/opt/gentoo/lib32/libc.so.1", O_RDONLY, 05) 3mS[ 1] conftest(101387016): END-open() errno = 2 (No such file or directory) 3mS[ 1] conftest(101387016): open("/opt/gentoo/usr/lib32/nspr/libc.so.1", O_RDONLY, 05) 4mS[ 1] conftest(101387016): END-open() errno = 2 (No such file or directory) 4mS[ 1] conftest(101387016): open("/usr/opt/gentoo/usr/lib32/binutils/mips-sgi-irix6.5/2.19.51.0.14/libc.so.1", O_RDONLY, 05) 4mS[ 1] conftest(101387016): END-open() errno = 2 (No such file or directory) 4mS[ 1] conftest(101387016): syssgi(SGI_TOSSTSAVE) 4mS[ 1] conftest(101387016): END-syssgi() OK 4mS[ 1] conftest(101387016): setrlimit(RLIMIT_STACK, 0x7ffb3ea0) 4mS[ 1] conftest(101387016): END-setrlimit() OK 4mS[ 1] conftest(101387016): sigaltstack(0x7ffb3eb0, 0) 4mS[ 1] conftest(101387016): END-sigaltstack() = 0 4mS[ 1] conftest(101387016): sigaction(SIGSEGV, {flags=SA_ONSTACK handler=0x10000e80 mask=[<none>]}, 0) 4mS[ 1] conftest(101387016): END-sigaction() OK 4mS[ 1] conftest(101387016): sigaction(SIGBUS, {flags=SA_ONSTACK handler=0x10000e80 mask=[<none>]}, 0) 4mS[ 1] conftest(101387016): END-sigaction() OK 4mS[ 1] conftest(101387016): getcontext(0x100040d0) 4mS[ 1] conftest(101387016): END-getcontext() = 0 7mS[ 1] conftest(101387016): received signal SIGSEGV (handler 0x10000e80) 7mS[ 1] conftest(101387016): getcontext(0x100044d8) 7mS[ 1] conftest(101387016): END-getcontext() = 0 7mS[ 1] conftest(101387016): setcontext(0x100044d8) 8mS[ 1] conftest(101387016): END-setcontext() = 0 8mS[ 1] conftest(101387016): setcontext(0x100040d0) 8mS[ 1] conftest(101387016): END-setcontext() = 0 8mS[ 1] conftest(101387016): received signal SIGSEGV (handler 0x10000e80) 8mS[ 1] conftest(101387016): getcontext(0x100044d8) 8mS[ 1] conftest(101387016): END-getcontext() = 0 8mS[ 1] conftest(101387016): setcontext(0x100044d8) 8mS[ 1] conftest(101387016): END-setcontext() = 0 8mS[ 1] conftest(101387016): setcontext(0x100040d0) 8mS[ 1] conftest(101387016): END-setcontext() = 0 8mS[ 1] conftest(101387016): received signal SIGSEGV (handler 0x10000e80) 8mS[ 1] conftest(101387016): getcontext(0x100044d8) 8mS[ 1] conftest(101387016): END-getcontext() = 0 8mS[ 1] conftest(101387016): setcontext(0x100044d8) 8mS[ 1] conftest(101387016): END-setcontext() = 0 8mS[ 1] conftest(101387016): setcontext(0x100040d0) 8mS[ 1] conftest(101387016): END-setcontext() = 0 ... etc
25 Apr 2010; Diego E. Pettenò <flameeyes@gentoo.org> gawk-3.1.7.ebuild: Remove libsigsegv USE flag: the dependency, at a minimum, was off (it never uses system copy); nothing in the tree require this enabled, the bundled copy does not work properly with gcc-4.5, and upstream is clueless about autotools so it's impossible to properly patch this to make it right.