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;