[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: