svn commit: r279148 - in user/dchagin/lemul/sys: amd64/amd64 amd64/ia32 arm/arm i386/i386 mips/mips powerpc/powerpc sparc64/sparc64
Dmitry Chagin
dchagin at FreeBSD.org
Sun Feb 22 08:03:47 UTC 2015
Author: dchagin
Date: Sun Feb 22 08:03:44 2015
New Revision: 279148
URL: https://svnweb.freebsd.org/changeset/base/279148
Log:
The kernel sends signals to the processes via ABI specific sv_sendsig method.
Native ABI do not need signal conversion, only emulators may want this. Usually
emulators implements its own sv_sendsig method. For now only ibcs2 emulator does
not have own sv_sendsig implementation and depends on native sendsig() method.
So, remove any extra attempts to convert signal numbers from native sendsig()
methods except from i386 where ibsc2 is living.
Modified:
user/dchagin/lemul/sys/amd64/amd64/machdep.c
user/dchagin/lemul/sys/amd64/ia32/ia32_signal.c
user/dchagin/lemul/sys/arm/arm/machdep.c
user/dchagin/lemul/sys/i386/i386/machdep.c
user/dchagin/lemul/sys/mips/mips/freebsd32_machdep.c
user/dchagin/lemul/sys/mips/mips/pm_machdep.c
user/dchagin/lemul/sys/powerpc/powerpc/exec_machdep.c
user/dchagin/lemul/sys/sparc64/sparc64/machdep.c
Modified: user/dchagin/lemul/sys/amd64/amd64/machdep.c
==============================================================================
--- user/dchagin/lemul/sys/amd64/amd64/machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/amd64/amd64/machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -398,10 +398,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi,
/* Align to 16 bytes. */
sfp = (struct sigframe *)((unsigned long)sp & ~0xFul);
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
regs->tf_rdi = sig; /* arg 1 in %rdi */
regs->tf_rdx = (register_t)&sfp->sf_uc; /* arg 3 in %rdx */
Modified: user/dchagin/lemul/sys/amd64/ia32/ia32_signal.c
==============================================================================
--- user/dchagin/lemul/sys/amd64/ia32/ia32_signal.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/amd64/ia32/ia32_signal.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -360,10 +360,6 @@ ia32_osendsig(sig_t catcher, ksiginfo_t
} else
fp = (struct ia32_sigframe3 *)regs->tf_rsp - 1;
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
sf.sf_signum = sig;
sf.sf_scp = (register_t)&fp->sf_siginfo.si_sc;
@@ -498,10 +494,6 @@ freebsd4_ia32_sendsig(sig_t catcher, ksi
sfp = (struct ia32_sigframe4 *)regs->tf_rsp - 1;
PROC_UNLOCK(p);
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
sf.sf_signum = sig;
sf.sf_ucontext = (register_t)&sfp->sf_uc;
@@ -643,10 +635,6 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *
sfp = (struct ia32_sigframe *)((uintptr_t)sp & ~0xF);
PROC_UNLOCK(p);
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
sf.sf_signum = sig;
sf.sf_ucontext = (register_t)&sfp->sf_uc;
Modified: user/dchagin/lemul/sys/arm/arm/machdep.c
==============================================================================
--- user/dchagin/lemul/sys/arm/arm/machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/arm/arm/machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -261,10 +261,6 @@ sendsig(catcher, ksi, mask)
sigexit(td, SIGILL);
}
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/*
* Build context to run handler in. We invoke the handler
* directly, only returning via the trampoline. Note the
Modified: user/dchagin/lemul/sys/i386/i386/machdep.c
==============================================================================
--- user/dchagin/lemul/sys/i386/i386/machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/i386/i386/machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -403,10 +403,6 @@ osendsig(sig_t catcher, ksiginfo_t *ksi,
} else
fp = (struct osigframe *)regs->tf_esp - 1;
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
sf.sf_signum = sig;
sf.sf_scp = (register_t)&fp->sf_siginfo.si_sc;
@@ -554,10 +550,6 @@ freebsd4_sendsig(sig_t catcher, ksiginfo
} else
sfp = (struct sigframe4 *)regs->tf_esp - 1;
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
sf.sf_signum = sig;
sf.sf_ucontext = (register_t)&sfp->sf_uc;
Modified: user/dchagin/lemul/sys/mips/mips/freebsd32_machdep.c
==============================================================================
--- user/dchagin/lemul/sys/mips/mips/freebsd32_machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/mips/mips/freebsd32_machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -419,12 +419,6 @@ freebsd32_sendsig(sig_t catcher, ksiginf
sfp = (struct sigframe32 *)((vm_offset_t)(td->td_frame->sp -
sizeof(struct sigframe32)) & ~(sizeof(__int64_t) - 1));
- /* Translate the signal if appropriate */
- if (p->p_sysent->sv_sigtbl) {
- if (sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
- }
-
/* Build the argument list for the signal handler. */
td->td_frame->a0 = sig;
td->td_frame->a2 = (register_t)(intptr_t)&sfp->sf_uc;
Modified: user/dchagin/lemul/sys/mips/mips/pm_machdep.c
==============================================================================
--- user/dchagin/lemul/sys/mips/mips/pm_machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/mips/mips/pm_machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -133,12 +133,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi,
sfp = (struct sigframe *)((vm_offset_t)(regs->sp -
sizeof(struct sigframe)) & ~(sizeof(__int64_t) - 1));
- /* Translate the signal if appropriate */
- if (p->p_sysent->sv_sigtbl) {
- if (sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
- }
-
/* Build the argument list for the signal handler. */
regs->a0 = sig;
regs->a2 = (register_t)(intptr_t)&sfp->sf_uc;
Modified: user/dchagin/lemul/sys/powerpc/powerpc/exec_machdep.c
==============================================================================
--- user/dchagin/lemul/sys/powerpc/powerpc/exec_machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/powerpc/powerpc/exec_machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -231,12 +231,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi,
}
/*
- * Translate the signal if appropriate (Linux emu ?)
- */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
- /*
* Save the floating-point state, if necessary, then copy it.
*/
/* XXX */
Modified: user/dchagin/lemul/sys/sparc64/sparc64/machdep.c
==============================================================================
--- user/dchagin/lemul/sys/sparc64/sparc64/machdep.c Sun Feb 22 07:20:04 2015 (r279147)
+++ user/dchagin/lemul/sys/sparc64/sparc64/machdep.c Sun Feb 22 08:03:44 2015 (r279148)
@@ -654,10 +654,6 @@ sendsig(sig_t catcher, ksiginfo_t *ksi,
fp = (struct frame *)sfp - 1;
- /* Translate the signal if appropriate. */
- if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize)
- sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)];
-
/* Build the argument list for the signal handler. */
tf->tf_out[0] = sig;
tf->tf_out[2] = (register_t)&sfp->sf_uc;
More information about the svn-src-user
mailing list