Hello community, here is the log from the commit of package dd_rescue for openSUSE:Factory checked in at 2014-03-16 08:04:53 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/dd_rescue (Old) and /work/SRC/openSUSE:Factory/.dd_rescue.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dd_rescue" Changes: -------- --- /work/SRC/openSUSE:Factory/dd_rescue/dd_rescue.changes 2014-02-13 06:53:22.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.dd_rescue.new/dd_rescue.changes 2014-03-16 08:04:54.000000000 +0100 @@ -1,0 +2,22 @@ +Sat Mar 8 18:58:56 CET 2014 - [email protected] + +- dd_rescue-fix_insn_probe.diff: Brings dd_rescue to 1.42.1, + fixing the process' signal mask after SIGILL delivery (probing), + an issue related to the longjmp() signal handler return fix + to bnc#860779. +- Update to dd_rescue-1.42: + * Addition of plugin interface + * MD5 plugin + * Use posix_fadvise() if available + * Short usage message rather than full help on error +- Update to dd_rescue-1.41: + * Support for building against Andoid NDK + * Consistent use of (improved) int no formatting functions + * Fix off-by-one block dev size issue (cosmetic) + * Enable AVX2 optimized sparse block detection + * Refactored CPU feature detection and selection + * New option -u/--rmvtrim to delete output file and issue fstrim +- Remove suboptimal fix for bnc#860779, it's fixed properly + upstream by returning with longjmp() from the signal handler. + +------------------------------------------------------------------- Old: ---- dd_rescue-1.40.tar.gz New: ---- dd_rescue-1.42.tar.gz dd_rescue-fix_insn_probe.diff ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ dd_rescue.spec ++++++ --- /var/tmp/diff_new_pack.0rOc42/_old 2014-03-16 08:04:54.000000000 +0100 +++ /var/tmp/diff_new_pack.0rOc42/_new 2014-03-16 08:04:54.000000000 +0100 @@ -17,16 +17,19 @@ Name: dd_rescue -Version: 1.40 +Version: 1.42 Release: 0 Summary: Data Copying in the Presence of I/O Errors License: GPL-2.0 or GPL-3.0 Group: System/Base Url: http://www.garloff.de/kurt/linux/ddrescue/ Source0: http://garloff.de/kurt/linux/ddrescue/%{name}-%{version}.tar.gz +Patch0: dd_rescue-fix_insn_probe.diff BuildRequires: autoconf BuildRequires: libattr-devel +%if 0%{?suse_version} >= 1200 BuildRequires: libfallocate-devel +%endif Requires: bc Recommends: dd_rhelp libfallocate0 # ddrescue was last used in openSUSE 11.4 (version 1.14_0.0.6) @@ -46,6 +49,7 @@ %prep %setup -q -n dd_rescue +%patch0 -p0 # Remove build time references so build-compare can do its work FAKE_BUILDTIME=$(LC_ALL=C date -u -r %{_sourcedir}/%{name}.changes '+%%H:%%M') @@ -55,14 +59,10 @@ %build flags="%{optflags}" -%ifarch i386 i486 i586 i686 -sed -i 's/SSE = "-msse2"/SSE = "-DNO_SSE2"/' Makefile -flags="%{optflags} -DNO_SSE2" -%endif make RPM_OPT_FLAGS="$flags" LIBDIR=%{_libdir} %{?_smp_mflags} %install -make install DESTDIR=%{buildroot} INSTALLDIR=%{buildroot}/%{_bindir} \ +make install DESTDIR=%{buildroot} INSTALLDIR=%{buildroot}/%{_bindir} LIBDIR=%{_libdir} \ INSTASROOT= INSTALLFLAGS= #UsrMerge @@ -80,6 +80,7 @@ #UsrMerge /bin/dd_rescue #EndUsrMerge +%{_libdir}/libddr_MD5.so %doc %{_mandir}/man1/dd_rescue.1%{ext_man} %changelog ++++++ dd_rescue-1.40.tar.gz -> dd_rescue-1.42.tar.gz ++++++ ++++ 5045 lines of diff (skipped) ++++++ dd_rescue-fix_insn_probe.diff ++++++ From: Kurt Garloff <[email protected]> Subject: Need to restore sigprocmask when not returning from signal handler I stumbled over the fine details of signal handling: A second SIGILL would not have been delivered to the handler as it was blocked when invoking the handler for the first time. As we can't return from the handler, we need to restore the process' signal mask ourselves and reenable delivery. Signed-off-by: Kurt Garloff <[email protected]> Index: find_nonzero.c =================================================================== RCS file: /home/cvsroot/dd_rescue/find_nonzero.c,v retrieving revision 1.44 retrieving revision 1.46 diff -u -p -r1.44 -r1.46 --- find_nonzero.c 21 Feb 2014 12:51:43 -0000 1.44 +++ find_nonzero.c 6 Mar 2014 12:14:18 -0000 1.46 @@ -24,6 +24,14 @@ static jmp_buf sigill_jmp; static void ill_handler(int sig) { have_feature = 0; + /* As we can't return from handler (as it would result in + * reexecuting the illegal instruction again - we jump back + * using longjmp) -- we have to restore signal delivery, so the + * program context is back to normal. Otherwise a second + * probe_procedure would not handle SIGILL. */ + sigset_t sigmask; + sigemptyset(&sigmask); sigaddset(&sigmask, sig); + sigprocmask(SIG_UNBLOCK, &sigmask, NULL); longjmp(sigill_jmp, 1); } Index: archdep.h =================================================================== RCS file: /home/cvsroot/dd_rescue/archdep.h,v retrieving revision 1.6 retrieving revision 1.7 diff -u -p -r1.6 -r1.7 --- archdep.h 25 Feb 2014 16:06:35 -0000 1.6 +++ archdep.h 6 Mar 2014 12:20:46 -0000 1.7 @@ -28,7 +28,7 @@ void probe_sse2(); #define have_avx2 0 #define have_sse42 0 #define ARCH_DETECT do {} while (0) -#define ARCH_DECLS +#define ARCH_DECLS ARCH_DECL_386 #elif defined(NO_AVX2) /* compiler does not support -mavx2 */ #define have_avx2 0 extern char have_sse42; -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
