Bug#454598: libc6-dev: struct _fpstate changed for amd64, breaks dosemu compilation
Package: libc6-dev
Version: 2.7-3
Severity: normal
According to LSB 3.1
http://www.linux-foundation.org/spec/refspecs/LSB_3.1.0/LSB-AMD64/LSB-AMD64.html#AEN4388
<signal.h> defines struct _fpstate as follows:
struct _fpstate {
uint16_t cwd;
uint16_t swd;
uint16_t ftw;
uint16_t fop;
uint64_t rip;
uint64_t rdp;
uint32_t mxcsr;
uint32_t mxcr_mask;
struct _fpxreg _st[8];
struct _xmmreg _xmm[16];
uint32_t padding[24];
};
libc6 did this in the included header bits/sigcontext.h
(modulo some underscores) up to version 2.6-4. However, the following change:
[ Clint Adams ]
* amd64/local-x86_64_bits_sigcontext.diff: use a copy of the generic header
for x86_64. closes: #442418.
causes this header to include asm/sigcontext.h which causes _fpstate to have
different names for its fields:
struct _fpstate {
__u16 cwd;
__u16 swd;
__u16 twd; /* Note this is not the same as the 32bit/x87/FSAVE twd */
__u16 fop;
__u64 rip;
__u64 rdp;
__u32 mxcsr;
__u32 mxcsr_mask;
__u32 st_space[32]; /* 8*16 bytes for each FP-reg */
__u32 xmm_space[64]; /* 16*16 bytes for each XMM-reg */
__u32 reserved2[24];
};
The different field names break compilation of dosemu, and it's hard to
check for this because it is a Debian specific change, not something
consistent in Glibc in every distribution.
-- System Information:
Debian Release: lenny/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.23i386 (SMP w/2 CPU cores; PREEMPT)
Locale: LANG=en_NZ, LC_CTYPE=en_NZ (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/dash
Versions of packages libc6-dev depends on:
ii libc6 2.7-3 GNU C Library: Shared libraries
ii linux-libc-dev 2.6.22-6 Linux Kernel Headers for developme
Versions of packages libc6-dev recommends:
ii bcc [c-compiler] 0.16.17-2 16-bit x86 C compiler
ii gcc [c-compiler] 4:4.2.1-6 The GNU C compiler
ii gcc-2.95 [c-compiler] 1:2.95.4-27 The GNU C compiler
ii gcc-3.3 [c-compiler] 1:3.3.6-15 The GNU C compiler
ii gcc-3.4 [c-compiler] 3.4.6-6 The GNU C compiler
ii gcc-4.1 [c-compiler] 4.1.2-17 The GNU C compiler
ii gcc-4.2 [c-compiler] 4.2.2-3 The GNU C compiler
-- no debconf information
Reply to: