https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108956
Bug ID: 108956 Summary: [13 regression] SEGV in M2RTS_RegisterModule Product: gcc Version: 13.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: modula2 Assignee: gaius at gcc dot gnu.org Reporter: ro at gcc dot gnu.org Target Milestone: --- Host: sparc-sun-solaris2.11 Target: sparc-sun-solaris2.11 Build: sparc-sun-solaris2.11 Between 20230224 (0ccfa3884f638816af0f5a3f0ee2695e0771ef6d) and 20230227 (dfa85beebfbc2f879d30d3918f634feabc851782), 32-bit Solaris/SPARC bootstrap failed in stage 2: m2/pge -k -l /vol/gcc/src/hg/master/local/gcc/m2/gm2-compiler/P2Build.bnf -o m2/gm2-compiler-boot/P2Build.mod make[3]: *** [/vol/gcc/src/hg/master/local/gcc/m2/Make-lang.in:1629: m2/gm2-compiler-boot/P2Build.mod] Segmentation Fault P3Build.mod is likewise affected. gdb shows Thread 2 received signal SIGSEGV, Segmentation fault. [Switching to Thread 1 (LWP 1)] 0x00034d24 in M2RTS_RegisterModule (name=0x25c98, libname=0x4dd24 <_M2_UnixArgs_init(int, char**, char**)>, init=..., fini=..., dependencies=...) at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GM2RTS.c:464 464 { 1: x/i $pc => 0x34d24 <M2RTS_RegisterModule(void*, void*, M2RTS_ArgCVEnvP, M2RTS_ArgCVEnvP, PROC)+40>: ld [ %i5 ], %g1 (gdb) p/x $i5 $1 = 0x2944 (gdb) bt #0 0x00034d24 in M2RTS_RegisterModule (name=0x25c98, libname=0x4dd24 <_M2_UnixArgs_init(int, char**, char**)>, init=..., fini=..., dependencies=...) at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GM2RTS.c:464 #1 0x0004ddcc in _M2_UnixArgs_ctor::_M2_UnixArgs_ctor ( this=0x83958 <_M2_UnixArgs_ctor>) at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GUnixArgs.cc:89 #2 0x0004ddec in __static_initialization_and_destruction_0 () at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GUnixArgs.cc:85 #3 0x0004de04 in _GLOBAL__sub_I_UnixArgs_GetArgC () at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GUnixArgs.cc:91 #4 0xff1b2b48 in call_array () from /usr/lib/ld.so.1 #5 0xff1b2cd8 in call_init () from /usr/lib/ld.so.1 #6 0xff1b1fb4 in setup () from /usr/lib/ld.so.1 #7 0xff1c42ec in _setup () from /usr/lib/ld.so.1 #8 0xff1a44c0 in _rt_boot () from /usr/lib/ld.so.1 Address 0x2944 isn't mapped, thus the SEGV. Apparently this is a caller/callee mismatch: #0 0x00034d24 in M2RTS_RegisterModule (name=0x25c98, libname=0x4dd24 <_M2_UnixArgs_init(int, char**, char**)>, init=..., fini=..., dependencies=...) at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GM2RTS.c:464 464 { (gdb) p dependencies $4 = {proc = 0x0} (gdb) up #1 0x0004ddcc in _M2_UnixArgs_ctor::_M2_UnixArgs_ctor ( this=0x83958 <_M2_UnixArgs_ctor>) at /vol/gcc/src/hg/master/local/gcc/m2/pge-boot/GUnixArgs.cc:89 89 M2RTS_RegisterModule ("UnixArgs", _M2_UnixArgs_init, _M2_UnixArgs_fini, (gdb) p _M2_UnixArgs_dep $3 = {void (void)} 0x4dd8c <_M2_UnixArgs_dep()> dependencies is of type PROC (i.e.struct { PROC_t proc; }) while _M2_UnixArgs_dep is extern "C" void _M2_UnixArgs_dep (void). This is almost certainly caused by commit 05652ac4e8b8685fe0c0f4ee2f75516d28bbf892 Author: Gaius Mulley <gaiusm...@gmail.com> Date: Sat Feb 25 16:28:19 2023 +0000 modula-2 module registration process seems to fail with shared libraries [PR 108261] 64-bit Solaris/SPARC (sparcv9-sun-solaris2.11) isn't affected.