Many of the simulators change the SIGINT handler. E.g., moxie/interp.c: sigsave = signal (SIGINT, interrupt); However, this is unnecessary. remote-sim.h already provides an API for asynchronously stopping a sim; and both gdb and the drivers (run.c and nrun.c at least, I didn't check the others) install a SIGINT handler which calls this method.
should be fixed by: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=ef3e8cf7d1d7849c2fb466bdc62b56336739cb90