Bug#766605: glibc patch for hppa architecture

2014-10-24 Thread Helge Deller

Source: glibc
Version: 2.19-11
Severity: important
Tags: patch

Dear debian glibc maintainers,

Can you please apply this hppa-arch-specific patch to debian glibc and keep it 
until you upgrade to sources of glibc 2.21 ?

Main reason for this patch is to make it possible to use systemd on hppa.
Without this patch people who will by mistake install systemd (e.g. because of 
dependencies) will render their machines unbootable.
The patch breaks the ABI on hppa, but in a way which will not affect people, 
because it changes the signals which are usually not used. This has been tested 
by installing and booting mixtures of glibc and kernel with corresponding 
patches.
I'll send in a bug report with patch for debian kernel shortly too.

Upstream Linux kernel commit is 1f25df2eff5b25f52c139d3ff31bc883eee9a0ab
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=1f25df2eff5b25f52c139d3ff31bc883eee9a0abutm_source=anzwix

Upstream glibc commit is:
https://sourceware.org/git/?p=glibc.git;a=commit;h=13d845549e41823e6658122dcf268154bcbbcfde

I've adjusted the attached patch (only changes path names) so that it applies 
to debian's glibc 2.19

To better understand what we fix here, the glibc changelog description of 
Carlos is probably best (copied in here):

This is a conscious ABI break for hppa.

We find ourselves unable to run systemd because it expects
SIGRTMIN+29 signals to be available and with hppa starting
at 37 that exceeds the 64 signals available. It is arguable
that the systemd code could compact their signal usage (the
have a gap and don't check SIGRTMAX to see if they are over).
However, that would require pursuing this upstream with systemd.
The least work option is to make hppa more like other arches.

The best option is to free up 3 signals for use with SIGXCPU,
SIGXFSZ and SIGSTKFLT, and move those below 31. We make SIGSYS
equal to SIGUNUSED as is expected. We remove SIGEMT and SIGLOST
as HPUX signal we won't ever use. With that change we match all
other machines.

Given that these signals are so esoteric, testing by other users
building minimal systems from scratch showed no problems. In fact
Tcl fails to build if you make SIGEMT == SIGABRT, so we just removed
SIGEMT (they use a large switch statement in C to handle signals, and
I don't think it's valid to assume they will all have distinct values
to fit into a switch).

Committed as the only solution we possibly have here.

Signed-off-by: Carlos O'Donell car...@systemhalted.org
Signed-off-by: Helge Deller del...@gmx.de

From 13d845549e41823e6658122dcf268154bcbbcfde Mon Sep 17 00:00:00 2001
From: Carlos O'Donell car...@redhat.com
Date: Thu, 23 Oct 2014 23:14:12 -0400
Subject: [PATCH] hppa: Make __SIGRTMIN 32 (ABI break).

In the Linux kernel version 3.17 the signal numbers were rearranged in
order to make hppa like every other arch. Previously we started
__SIGRTMIN at 37, and that meant several pieces of important software,
including systemd, would fail to build. To support systemd we removed
SIGEMT and SIGLOST, and rearranged the others according to expected
values. This is technically an ABI incompatible change, but because
zero applications use SIGSTKFLT, SIGXCPU, SIGXFSZ and SIGSYS nothing
broke.  Nothing uses SIGEMT and SIGLOST, and they were present for
HPUX compatibility which is no longer supported. Thus because nothing
breaks we don't do any compatibility work here.

Upstream kernel commit is 1f25df2eff5b25f52c139d3ff31bc883eee9a0ab.

Signed-off-by: Carlos O'Donell car...@systemhalted.org
Signed-off-by: Helge Deller del...@gmx.de

2014-10-23  Carlos O'Donell  car...@systemhalted.org
	Helge Deller del...@gmx.de

	[BZ #17508]
	* sysdeps/unix/sysv/linux/hppa/bits/signum.h: Remove SIGEMT.
	Define SIGSTKFLT as 7. Define SIGSYS as 31. Define SIGXCPU as 12.
	Remove SIGLOST. Define SIGXFSZ as 30. Define __SIGRTMIN as 32.
---


diff -up ./ports/sysdeps/unix/sysv/linux/hppa/bits/signum.h.org ./ports/sysdeps/unix/sysv/linux/hppa/bits/signum.h
--- ./ports/sysdeps/unix/sysv/linux/hppa/bits/signum.h.org	2014-10-24 12:47:51.039590372 +0200
+++ ./ports/sysdeps/unix/sysv/linux/hppa/bits/signum.h	2014-10-24 12:47:59.707589170 +0200
@@ -36,12 +36,12 @@
 #define	SIGTRAP		5	/* Trace trap (POSIX).  */
 #define	SIGABRT		6	/* Abort (ANSI).  */
 #define	SIGIOT		6	/* IOT trap (4.2 BSD).  */
-#define	SIGEMT		7
+#define	SIGSTKFLT	7	/* Stack fault.  */
 #define	SIGFPE		8	/* Floating-point exception (ANSI).  */
 #define	SIGKILL		9	/* Kill, unblockable (POSIX).  */
 #define	SIGBUS		10	/* BUS error (4.2 BSD).  */
 #define	SIGSEGV		11	/* Segmentation violation (ANSI).  */
-#define SIGSYS		12	/* Bad system call.  */
+#define	SIGXCPU		12	/* CPU limit exceeded (4.2 BSD).  */
 #define	SIGPIPE		13	/* Broken pipe (POSIX).  */
 #define	SIGALRM		14	/* Alarm clock (POSIX).  */
 #define	SIGTERM		15	/* Termination (ANSI).  */
@@ -61,11 +61,9 @@
 #define	SIGTTIN		27	/* Background read from tty (POSIX).  */
 #define	SIGTTOU		28	/* Background write to tty 

Bug#766605: Acknowledgement (glibc patch for hppa architecture)

2014-10-24 Thread Helge Deller

The corresponding debian Linux kernel bug report is:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=766635


--
To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org
with a subject of unsubscribe. Trouble? Contact listmas...@lists.debian.org
Archive: https://lists.debian.org/544a64f3.9040...@gmx.de