Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Sep 2010 13:22:18 +0300
From:      Kostik Belousov <kostikbel@gmail.com>
To:        David Xu <davidxu@freebsd.org>
Cc:        svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org
Subject:   Re: svn commit: r212076 - head/lib/libthr/thread
Message-ID:  <20100902102218.GO2396@deviant.kiev.zoral.com.ua>
In-Reply-To: <4C7FE06B.9070609@freebsd.org>
References:  <201009010218.o812IX5G048257@svn.freebsd.org> <20100902081136.GG2396@deviant.kiev.zoral.com.ua> <4C7FD232.9080100@freebsd.org> <20100902084116.GJ2396@deviant.kiev.zoral.com.ua> <4C7FD8D1.1000702@freebsd.org> <20100902092633.GM2396@deviant.kiev.zoral.com.ua> <4C7FE06B.9070609@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help

--4KEqdnCeStZX4x/8
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable

On Thu, Sep 02, 2010 at 05:35:39PM +0000, David Xu wrote:
> Kostik Belousov wrote:
>=20
> >>the tf_err may not be equal to ksi_addr! This may need to be fixed.
> >>
> >The change was introduced by
> >r151316 | davidxu | 2005-10-14
> >      /* Old FreeBSD-style arguments. */
> >-     sf.sf_siginfo =3D code;
> >-     sf.sf_addr =3D regs->tf_err;
> >+     sf.sf_siginfo =3D ksi->ksi_code;
> >+     sf.sf_addr =3D (register_t)ksi->ksi_addr;
> >      sf.sf_ahu.sf_handler =3D catcher;
> >
> :(
The rollback looks straightforward. I explicitely decided to not change
any architecture that is not i386.

diff --git a/sys/amd64/ia32/ia32_signal.c b/sys/amd64/ia32/ia32_signal.c
index d85a3bb..5ce6993 100644
--- a/sys/amd64/ia32/ia32_signal.c
+++ b/sys/amd64/ia32/ia32_signal.c
@@ -374,7 +374,7 @@ freebsd4_ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, s=
igset_t *mask)
 	} else {
 		/* Old FreeBSD-style arguments. */
 		sf.sf_siginfo =3D siginfo.si_code;
-		sf.sf_addr =3D (u_int32_t)siginfo.si_addr;
+		sf.sf_addr =3D regs->tf_err;
 		sf.sf_ah =3D (u_int32_t)(uintptr_t)catcher;
 	}
 	mtx_unlock(&psp->ps_mtx);
@@ -495,7 +495,7 @@ ia32_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *=
mask)
 	} else {
 		/* Old FreeBSD-style arguments. */
 		sf.sf_siginfo =3D siginfo.si_code;
-		sf.sf_addr =3D (u_int32_t)siginfo.si_addr;
+		sf.sf_addr =3D regs->tf_err;
 		sf.sf_ah =3D (u_int32_t)(uintptr_t)catcher;
 	}
 	mtx_unlock(&psp->ps_mtx);
diff --git a/sys/i386/i386/machdep.c b/sys/i386/i386/machdep.c
index ef229ca..6a5e4e6 100644
--- a/sys/i386/i386/machdep.c
+++ b/sys/i386/i386/machdep.c
@@ -390,7 +390,7 @@ osendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 	} else {
 		/* Old FreeBSD-style arguments. */
 		sf.sf_arg2 =3D ksi->ksi_code;
-		sf.sf_addr =3D (register_t)ksi->ksi_addr;
+		sf.sf_addr =3D regs->tf_err;
 		sf.sf_ahu.sf_handler =3D catcher;
 	}
 	mtx_unlock(&psp->ps_mtx);
@@ -531,7 +531,7 @@ freebsd4_sendsig(sig_t catcher, ksiginfo_t *ksi, sigset=
_t *mask)
 	} else {
 		/* Old FreeBSD-style arguments. */
 		sf.sf_siginfo =3D ksi->ksi_code;
-		sf.sf_addr =3D (register_t)ksi->ksi_addr;
+		sf.sf_addr =3D regs->tf_err;
 		sf.sf_ahu.sf_handler =3D catcher;
 	}
 	mtx_unlock(&psp->ps_mtx);
@@ -684,7 +684,7 @@ sendsig(sig_t catcher, ksiginfo_t *ksi, sigset_t *mask)
 	} else {
 		/* Old FreeBSD-style arguments. */
 		sf.sf_siginfo =3D ksi->ksi_code;
-		sf.sf_addr =3D (register_t)ksi->ksi_addr;
+		sf.sf_addr =3D regs->tf_err;
 		sf.sf_ahu.sf_handler =3D catcher;
 	}
 	mtx_unlock(&psp->ps_mtx);

--4KEqdnCeStZX4x/8
Content-Type: application/pgp-signature
Content-Disposition: inline

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (FreeBSD)

iEYEARECAAYFAkx/etoACgkQC3+MBN1Mb4hOXACZAdSd98Pi9SPVYm6LhiRAPCPM
TVoAnA5Tht/Hh86but+Di1tSYJIwV37A
=xm5/
-----END PGP SIGNATURE-----

--4KEqdnCeStZX4x/8--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100902102218.GO2396>