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

Bug#694770: marked as done (libc6-dev-s390: can't compile 31-bit programs on s390x due to missing "asm/errno.h")



Your message dated Wed, 23 Jan 2013 00:11:01 -0700
with message-id <20130123071101.GM29056@0c3.net>
and subject line libc6-dev-s390: can't compile 31-bit programs
has caused the Debian Bug report #694770,
regarding libc6-dev-s390: can't compile 31-bit programs on s390x due to missing "asm/errno.h"
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
694770: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=694770
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: libc6-dev-s390
Version: 2.13-37
Severity: grave
Justification: renders package unusable

Dear Maintainer,
*** Please consider answering these questions, where appropriate ***

   * What led up to the situation?

I tried to compile 31-bit program on 64-bit s390x system

   * What exactly did you do (or not do) that was effective (or
     ineffective)?

Try to compile a simple program that includes errno.h:

#include <errno.h>
int main(void) { return 0; }

Compile it with this command: gcc-4.7 -m31 errno.c

   * What was the outcome of this action?
In file included from /usr/include/bits/errno.h:25:0,
                 from /usr/include/errno.h:36,
                 from errno.c:1:
/usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: Adresář nebo soubor neexistuje

   * What outcome did you expect instead?

The program should compile.



This bug can be worked around if you do:
# cd /usr/include
# ln -s s390x-linux-gnu s390-linux-gnu
.... then, compiling programs with -m31 works fine.

The directory /usr/include/s390-linux-gnu should be installed by 31-bit 
libc development package libc6-dev-s390.


-- System Information:
Debian Release: wheezy/sid
  APT prefers testing
  APT policy: (500, 'testing')
Architecture: s390x

Kernel: Linux 3.2.0-4-s390x (SMP w/8 CPU cores)
Locale: LANG=cs_CZ.utf8, LC_CTYPE=cs_CZ.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages libc6-dev-s390 depends on:
ii  libc6-dev   2.13-37
ii  libc6-s390  2.13-37

Versions of packages libc6-dev-s390 recommends:
pn  gcc-multilib  <none>

libc6-dev-s390 suggests no packages.

-- no debconf information

--- End Message ---
--- Begin Message ---
On the s390x machine I have access to, I see the following:

(s390x-sid)adconrad@zelenka:~$ cat foo.c 
#include <errno.h>
int main(void) { return 0; }
(s390x-sid)adconrad@zelenka:~$ gcc-4.6 -m31 -o foo foo.c 
(s390x-sid)adconrad@zelenka:~$ 
(s390x-sid)adconrad@zelenka:~$ cpp -H foo.c | grep '^\.'
. /usr/include/errno.h
.. /usr/include/features.h
... /usr/include/s390x-linux-gnu/bits/predefs.h
... /usr/include/s390x-linux-gnu/sys/cdefs.h
.... /usr/include/s390x-linux-gnu/bits/wordsize.h
... /usr/include/s390x-linux-gnu/gnu/stubs.h
.... /usr/include/s390x-linux-gnu/bits/wordsize.h
.... /usr/include/s390x-linux-gnu/gnu/stubs-64.h
.. /usr/include/s390x-linux-gnu/bits/errno.h
... /usr/include/linux/errno.h
.... /usr/include/s390x-linux-gnu/asm/errno.h
..... /usr/include/asm-generic/errno.h
...... /usr/include/asm-generic/errno-base.h

There's no reason for /usr/include/s390-linux-gnu to exist on
the system, though gcc will happily search there if you have
libc6-dev:s390 installed via multiarch.

The biarch multilib packages instead operate by shipping files
in /usr/include and some clever symlinks.  The output of your
compile line leads me to believe that, perhaps, your dev
packages are a little on the confused side or, perhaps, your
/usr/include/bits is a directory instead of a symlink (it's hard
to tell this from a distance, just taking some shots in the dark.

I suspect that the following will solve your issue:

"apt-get --reinstall install libc6-dev-s390"

But, if not, you may have a compiler bug there, rather than a
libc6 bug.  The default compilers in unstable certainly work,
at any rate.

... Adam

--- End Message ---

Reply to: