Applying the attached patch should help.Also, please consider switching the upstream source of this package to <https://github.com/stsp/dosemu2>. It's theoretically still unstable, but it's more actively maintained than the SourceForge repository, and by the same person (to my knowledge). It has an analogous patch already applied: <https://github.com/stsp/dosemu2/commit/a5fb2f6f772af161b5cce24f77dc30b34aada082>.
-- --f
Index: dosemu-1.4.0.7+20130105+b028d3f/src/arch/linux/async/signal.c =================================================================== --- dosemu-1.4.0.7+20130105+b028d3f.orig/src/arch/linux/async/signal.c +++ dosemu-1.4.0.7+20130105+b028d3f/src/arch/linux/async/signal.c @@ -225,7 +225,7 @@ int check_fix_fs_gs_base(unsigned char p /* init_handler puts the handler in a sane state that glibc expects. That means restoring fs and gs for vm86 (necessary for 2.4 kernels) and fs, gs and eflags for DPMI. */ -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) void init_handler(struct sigcontext_struct *scp) { /* @@ -309,7 +309,7 @@ void init_handler(struct sigcontext_stru /* this cleaning up is necessary to avoid the port server becoming a zombie process */ -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) static void cleanup_child(struct sigcontext_struct *scp) { int status; @@ -322,7 +322,7 @@ static void cleanup_child(struct sigcont } } -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) static void leavedos_signal(int sig) { init_handler(NULL); @@ -804,7 +804,7 @@ static void sigalrm(struct sigcontext_st } } -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) static void sigasync0(int sig, struct sigcontext_struct *scp) { init_handler(scp); @@ -813,7 +813,7 @@ static void sigasync0(int sig, struct si dpmi_iret_setup(scp); } -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) static void sigasync(int sig, siginfo_t *si, void *uc) { sigasync0(sig, (struct sigcontext_struct *) Index: dosemu-1.4.0.7+20130105+b028d3f/src/arch/linux/async/sigsegv.c =================================================================== --- dosemu-1.4.0.7+20130105+b028d3f.orig/src/arch/linux/async/sigsegv.c +++ dosemu-1.4.0.7+20130105+b028d3f/src/arch/linux/async/sigsegv.c @@ -37,7 +37,7 @@ void print_exception_info(struct sigcont /* * All of the functions in this module need to be declared with - * __attribute__((no_instrument_function)) + * __attribute__((no_instrument_function,optimize("no-stack-protector"))) * so that they can safely handle signals that occur in DPMI context when * DOSEMU is built with the "-pg" gcc flag (which enables instrumentation for * gprof profiling). @@ -62,7 +62,7 @@ void print_exception_info(struct sigcont * DANG_END_FUNCTION */ -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) int dosemu_fault1( #ifdef __linux__ int signal, struct sigcontext_struct *scp @@ -380,7 +380,7 @@ bad: } } -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) static void dosemu_fault0(int signal, struct sigcontext_struct *scp) { int retcode; @@ -448,7 +448,7 @@ static void dosemu_fault0(int signal, st } #ifdef __linux__ -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) void dosemu_fault(int signal, siginfo_t *si, void *uc) { dosemu_fault0(signal, (struct sigcontext_struct *) @@ -465,7 +465,7 @@ void dosemu_fault(int signal, siginfo_t * DANG_END_FUNCTION * */ -__attribute__((no_instrument_function)) +__attribute__((no_instrument_function,optimize("no-stack-protector"))) void print_exception_info(struct sigcontext_struct *scp) { int i;