FAQ Search Today's Posts Mark Forums Read
» Video Reviews

» Linux Archive

Linux-archive is a website aiming to archive linux email lists and to make them easily accessible for linux users/developers.


» Sponsor

» Partners

» Sponsor

Go Back   Linux Archive > Debian > Debian Kernel

 
 
LinkBack Thread Tools
 
Old 09-06-2011, 12:44 PM
Daniel Bayer
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

Package: linux-libc-dev
Version: 3.0.0-3
Severity: normal
File: /usr/include/x86_64-linux-gnu/asm/errno.h

Hi,

since asm/errno.h was moved to the arch specific sub directory it is
no longer possible to create 32 Bit Binaries on amd64:

| $ echo '#include <errno.h>' | gcc -E -o - -m32 -
| [...]
| # 1 "/usr/include/bits/errno.h" 1 3 4
| # 25 "/usr/include/bits/errno.h" 3 4
| # 1 "/usr/include/linux/errno.h" 1 3 4
| In file included from /usr/include/bits/errno.h:25:0,
| from /usr/include/errno.h:36,
| from <stdin>:1:
| /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
| compilation terminated.

I guess with multiarch I should install the i386 deb, too. But this is
not yet supported by dpkg in unstable, is it?


Daniel

-- System Information:
Debian Release: wheezy/sid
APT prefers unstable
APT policy: (500, 'unstable'), (500, 'testing'), (1, 'experimental')
Architecture: amd64 (x86_64)

Kernel: Linux 3.0.0-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

-- no debconf information
 
Old 09-06-2011, 02:14 PM
Ben Hutchings
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

On Tue, 2011-09-06 at 14:44 +0200, Daniel Bayer wrote:
> Package: linux-libc-dev
> Version: 3.0.0-3
> Severity: normal
> File: /usr/include/x86_64-linux-gnu/asm/errno.h
>
> Hi,
>
> since asm/errno.h was moved to the arch specific sub directory it is
> no longer possible to create 32 Bit Binaries on amd64:
>
> | $ echo '#include <errno.h>' | gcc -E -o - -m32 -
> | [...]
> | # 1 "/usr/include/bits/errno.h" 1 3 4
> | # 25 "/usr/include/bits/errno.h" 3 4
> | # 1 "/usr/include/linux/errno.h" 1 3 4
> | In file included from /usr/include/bits/errno.h:25:0,
> | from /usr/include/errno.h:36,
> | from <stdin>:1:
> | /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
> | compilation terminated.
>
> I guess with multiarch I should install the i386 deb, too. But this is
> not yet supported by dpkg in unstable, is it?
[...]

It's not. And since the kernel uses the same set of header files for
32-bit and 64-bit versions of each architecture, I wonder whether that
would make sense.

Maybe the right way to do this is:

- linux-libc-dev (multiarch: same) becomes a metapackage depending on
linux-libc-dev-$SRCARCH
- linux-libc-dev-$SRCARCH (not multiarch) provides headers for all
architectures built from kernel $SRCARCH, with symlinks

Ben.
 
Old 09-06-2011, 02:14 PM
Ben Hutchings
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

On Tue, 2011-09-06 at 14:44 +0200, Daniel Bayer wrote:
> Package: linux-libc-dev
> Version: 3.0.0-3
> Severity: normal
> File: /usr/include/x86_64-linux-gnu/asm/errno.h
>
> Hi,
>
> since asm/errno.h was moved to the arch specific sub directory it is
> no longer possible to create 32 Bit Binaries on amd64:
>
> | $ echo '#include <errno.h>' | gcc -E -o - -m32 -
> | [...]
> | # 1 "/usr/include/bits/errno.h" 1 3 4
> | # 25 "/usr/include/bits/errno.h" 3 4
> | # 1 "/usr/include/linux/errno.h" 1 3 4
> | In file included from /usr/include/bits/errno.h:25:0,
> | from /usr/include/errno.h:36,
> | from <stdin>:1:
> | /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
> | compilation terminated.
>
> I guess with multiarch I should install the i386 deb, too. But this is
> not yet supported by dpkg in unstable, is it?
[...]

It's not. And since the kernel uses the same set of header files for
32-bit and 64-bit versions of each architecture, I wonder whether that
would make sense.

Maybe the right way to do this is:

- linux-libc-dev (multiarch: same) becomes a metapackage depending on
linux-libc-dev-$SRCARCH
- linux-libc-dev-$SRCARCH (not multiarch) provides headers for all
architectures built from kernel $SRCARCH, with symlinks

Ben.
 
Old 09-12-2011, 01:15 PM
Michael Tokarev
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

The same is obviously true the other way around:
on a 32bit x86 userspace it was possible to compile
64bit binaries using -m64. Now this is broken in
exactly the same way as it is for -m32 on 64bits.



--
To UNSUBSCRIBE, email to debian-kernel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 4E6E05F5.6080709@msgid.tls.msk.ru">http://lists.debian.org/4E6E05F5.6080709@msgid.tls.msk.ru
 
Old 09-13-2011, 05:29 AM
Steve Langasek
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

On Tue, Sep 06, 2011 at 03:14:58PM +0100, Ben Hutchings wrote:
> On Tue, 2011-09-06 at 14:44 +0200, Daniel Bayer wrote:
> > Package: linux-libc-dev
> > Version: 3.0.0-3
> > Severity: normal
> > File: /usr/include/x86_64-linux-gnu/asm/errno.h

> > since asm/errno.h was moved to the arch specific sub directory it is
> > no longer possible to create 32 Bit Binaries on amd64:

> > | $ echo '#include <errno.h>' | gcc -E -o - -m32 -
> > | [...]
> > | # 1 "/usr/include/bits/errno.h" 1 3 4
> > | # 25 "/usr/include/bits/errno.h" 3 4
> > | # 1 "/usr/include/linux/errno.h" 1 3 4
> > | In file included from /usr/include/bits/errno.h:25:0,
> > | from /usr/include/errno.h:36,
> > | from <stdin>:1:
> > | /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
> > | compilation terminated.

> > I guess with multiarch I should install the i386 deb, too. But this is
> > not yet supported by dpkg in unstable, is it?
> [...]

> It's not. And since the kernel uses the same set of header files for
> 32-bit and 64-bit versions of each architecture, I wonder whether that
> would make sense.

> Maybe the right way to do this is:

> - linux-libc-dev (multiarch: same) becomes a metapackage depending on
> linux-libc-dev-$SRCARCH
> - linux-libc-dev-$SRCARCH (not multiarch) provides headers for all
> architectures built from kernel $SRCARCH, with symlinks

I think this entire bug report is based on a misunderstanding of how gcc
-m32 is supposed to work. 'gcc -m32' is not guaranteed to work unless the
gcc-multilib package is installed; and if gcc-multilib is installed, you get
a /usr/include/asm compatibility symlink pointing to
/usr/include/$triplet/asm. There are still some problems with this setup,
but I don't agree that the issue reported here is one of them and I don't
see any reason to change the linux-libc-dev package.

--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
slangasek@ubuntu.com vorlon@debian.org
 
Old 09-13-2011, 05:29 AM
Steve Langasek
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

On Tue, Sep 06, 2011 at 03:14:58PM +0100, Ben Hutchings wrote:
> On Tue, 2011-09-06 at 14:44 +0200, Daniel Bayer wrote:
> > Package: linux-libc-dev
> > Version: 3.0.0-3
> > Severity: normal
> > File: /usr/include/x86_64-linux-gnu/asm/errno.h

> > since asm/errno.h was moved to the arch specific sub directory it is
> > no longer possible to create 32 Bit Binaries on amd64:

> > | $ echo '#include <errno.h>' | gcc -E -o - -m32 -
> > | [...]
> > | # 1 "/usr/include/bits/errno.h" 1 3 4
> > | # 25 "/usr/include/bits/errno.h" 3 4
> > | # 1 "/usr/include/linux/errno.h" 1 3 4
> > | In file included from /usr/include/bits/errno.h:25:0,
> > | from /usr/include/errno.h:36,
> > | from <stdin>:1:
> > | /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
> > | compilation terminated.

> > I guess with multiarch I should install the i386 deb, too. But this is
> > not yet supported by dpkg in unstable, is it?
> [...]

> It's not. And since the kernel uses the same set of header files for
> 32-bit and 64-bit versions of each architecture, I wonder whether that
> would make sense.

> Maybe the right way to do this is:

> - linux-libc-dev (multiarch: same) becomes a metapackage depending on
> linux-libc-dev-$SRCARCH
> - linux-libc-dev-$SRCARCH (not multiarch) provides headers for all
> architectures built from kernel $SRCARCH, with symlinks

I think this entire bug report is based on a misunderstanding of how gcc
-m32 is supposed to work. 'gcc -m32' is not guaranteed to work unless the
gcc-multilib package is installed; and if gcc-multilib is installed, you get
a /usr/include/asm compatibility symlink pointing to
/usr/include/$triplet/asm. There are still some problems with this setup,
but I don't agree that the issue reported here is one of them and I don't
see any reason to change the linux-libc-dev package.

--
Steve Langasek Give me a lever long enough and a Free OS
Debian Developer to set it on, and I can move the world.
Ubuntu Developer http://www.debian.org/
slangasek@ubuntu.com vorlon@debian.org
 
Old 09-13-2011, 07:04 PM
Daniel Bayer
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

Hi!

On Mon, Sep 12, 2011 at 10:29:30PM -0700, Steve Langasek wrote:
> On Tue, Sep 06, 2011 at 03:14:58PM +0100, Ben Hutchings wrote:
> > On Tue, 2011-09-06 at 14:44 +0200, Daniel Bayer wrote:
> > > Package: linux-libc-dev
> > > Version: 3.0.0-3
> > > Severity: normal
> > > File: /usr/include/x86_64-linux-gnu/asm/errno.h
>
> > > since asm/errno.h was moved to the arch specific sub directory it is
> > > no longer possible to create 32 Bit Binaries on amd64:
>
> > > | $ echo '#include <errno.h>' | gcc -E -o - -m32 -
> > > | [...]
> > > | # 1 "/usr/include/bits/errno.h" 1 3 4
> > > | # 25 "/usr/include/bits/errno.h" 3 4
> > > | # 1 "/usr/include/linux/errno.h" 1 3 4
> > > | In file included from /usr/include/bits/errno.h:25:0,
> > > | from /usr/include/errno.h:36,
> > > | from <stdin>:1:
> > > | /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
> > > | compilation terminated.
>
> > > I guess with multiarch I should install the i386 deb, too. But this is
> > > not yet supported by dpkg in unstable, is it?
> > [...]
>
> > It's not. And since the kernel uses the same set of header files for
> > 32-bit and 64-bit versions of each architecture, I wonder whether that
> > would make sense.
>
> > Maybe the right way to do this is:
>
> > - linux-libc-dev (multiarch: same) becomes a metapackage depending on
> > linux-libc-dev-$SRCARCH
> > - linux-libc-dev-$SRCARCH (not multiarch) provides headers for all
> > architectures built from kernel $SRCARCH, with symlinks
>
> I think this entire bug report is based on a misunderstanding of how gcc
> -m32 is supposed to work. 'gcc -m32' is not guaranteed to work unless the
> gcc-multilib package is installed;

gcc-multilib was always installed:
| ii gcc-multilib 4:4.6.1-2 GNU C compiler (multilib files)

> and if gcc-multilib is installed, you get
> a /usr/include/asm compatibility symlink pointing to
> /usr/include/$triplet/asm.

nope. With linux-libc-dev 3.0.0-1 installed /usr/include/asm is a
directory containing header files provided by linux-libc6-dev. E.g.:
| linux-libc-dev: /usr/include/asm/a.out.h
| linux-libc-dev: /usr/include/asm/auxvec.h
| linux-libc-dev: /usr/include/asm/bitsperlong.h
| linux-libc-dev: /usr/include/asm/boot.h

and:
| $ dpkg -S /usr/include/asm
| gcc-multilib, linux-libc-dev: /usr/include/asm

Now I updated to linux-libc-dev 3.0.0-3 to test. After this /usr/include/asm
is an empty directory which belongs to gcc-multilib:

| $ ls /usr/include/asm -lha
| insgesamt 88K
| drwxr-xr-x 2 root root 12K 13. Sep 20:53 .
| drwxr-xr-x 78 root root 72K 8. Sep 21:52 ..
| $ dpkg -S /usr/include/asm
| gcc-multilib: /usr/include/asm

> There are still some problems with this setup,
> but I don't agree that the issue reported here is one of them and I don't
> see any reason to change the linux-libc-dev package.

So it is a bug in gcc-multilib? Or where is the link supposed to come
from?

I got to this point from a working setup (I use -m32 almost every day
since more then 3 years) by daily distupgrade using unstable.


Daniel
 
Old 09-13-2011, 07:04 PM
Daniel Bayer
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

Hi!

On Mon, Sep 12, 2011 at 10:29:30PM -0700, Steve Langasek wrote:
> On Tue, Sep 06, 2011 at 03:14:58PM +0100, Ben Hutchings wrote:
> > On Tue, 2011-09-06 at 14:44 +0200, Daniel Bayer wrote:
> > > Package: linux-libc-dev
> > > Version: 3.0.0-3
> > > Severity: normal
> > > File: /usr/include/x86_64-linux-gnu/asm/errno.h
>
> > > since asm/errno.h was moved to the arch specific sub directory it is
> > > no longer possible to create 32 Bit Binaries on amd64:
>
> > > | $ echo '#include <errno.h>' | gcc -E -o - -m32 -
> > > | [...]
> > > | # 1 "/usr/include/bits/errno.h" 1 3 4
> > > | # 25 "/usr/include/bits/errno.h" 3 4
> > > | # 1 "/usr/include/linux/errno.h" 1 3 4
> > > | In file included from /usr/include/bits/errno.h:25:0,
> > > | from /usr/include/errno.h:36,
> > > | from <stdin>:1:
> > > | /usr/include/linux/errno.h:4:23: fatal error: asm/errno.h: No such file or directory
> > > | compilation terminated.
>
> > > I guess with multiarch I should install the i386 deb, too. But this is
> > > not yet supported by dpkg in unstable, is it?
> > [...]
>
> > It's not. And since the kernel uses the same set of header files for
> > 32-bit and 64-bit versions of each architecture, I wonder whether that
> > would make sense.
>
> > Maybe the right way to do this is:
>
> > - linux-libc-dev (multiarch: same) becomes a metapackage depending on
> > linux-libc-dev-$SRCARCH
> > - linux-libc-dev-$SRCARCH (not multiarch) provides headers for all
> > architectures built from kernel $SRCARCH, with symlinks
>
> I think this entire bug report is based on a misunderstanding of how gcc
> -m32 is supposed to work. 'gcc -m32' is not guaranteed to work unless the
> gcc-multilib package is installed;

gcc-multilib was always installed:
| ii gcc-multilib 4:4.6.1-2 GNU C compiler (multilib files)

> and if gcc-multilib is installed, you get
> a /usr/include/asm compatibility symlink pointing to
> /usr/include/$triplet/asm.

nope. With linux-libc-dev 3.0.0-1 installed /usr/include/asm is a
directory containing header files provided by linux-libc6-dev. E.g.:
| linux-libc-dev: /usr/include/asm/a.out.h
| linux-libc-dev: /usr/include/asm/auxvec.h
| linux-libc-dev: /usr/include/asm/bitsperlong.h
| linux-libc-dev: /usr/include/asm/boot.h

and:
| $ dpkg -S /usr/include/asm
| gcc-multilib, linux-libc-dev: /usr/include/asm

Now I updated to linux-libc-dev 3.0.0-3 to test. After this /usr/include/asm
is an empty directory which belongs to gcc-multilib:

| $ ls /usr/include/asm -lha
| insgesamt 88K
| drwxr-xr-x 2 root root 12K 13. Sep 20:53 .
| drwxr-xr-x 78 root root 72K 8. Sep 21:52 ..
| $ dpkg -S /usr/include/asm
| gcc-multilib: /usr/include/asm

> There are still some problems with this setup,
> but I don't agree that the issue reported here is one of them and I don't
> see any reason to change the linux-libc-dev package.

So it is a bug in gcc-multilib? Or where is the link supposed to come
from?

I got to this point from a working setup (I use -m32 almost every day
since more then 3 years) by daily distupgrade using unstable.


Daniel
 
Old 09-13-2011, 07:18 PM
Sven Joachim
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

On 2011-09-13 21:04 +0200, Daniel Bayer wrote:

> Now I updated to linux-libc-dev 3.0.0-3 to test. After this /usr/include/asm
> is an empty directory which belongs to gcc-multilib:

Congratulations, you have just rediscovered bug #638418.

Cheers,
Sven


--
To UNSUBSCRIBE, email to debian-devel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 87zki8ntdn.fsf@turtle.gmx.de">http://lists.debian.org/87zki8ntdn.fsf@turtle.gmx.de
 
Old 09-13-2011, 07:18 PM
Sven Joachim
 
Default Bug#640672: moving files to arch specific include breaks compilations with -m32

On 2011-09-13 21:04 +0200, Daniel Bayer wrote:

> Now I updated to linux-libc-dev 3.0.0-3 to test. After this /usr/include/asm
> is an empty directory which belongs to gcc-multilib:

Congratulations, you have just rediscovered bug #638418.

Cheers,
Sven



--
To UNSUBSCRIBE, email to debian-kernel-REQUEST@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
Archive: 87zki8ntdn.fsf@turtle.gmx.de">http://lists.debian.org/87zki8ntdn.fsf@turtle.gmx.de
 

Thread Tools




All times are GMT. The time now is 05:11 PM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.
Copyright 2007 - 2008, www.linux-archive.org