#364698 libc6-i386: Want "extern int errno" to keep working (not possible with NPTL)

Package:
libc6-i386
Source:
glibc
Description:
GNU C Library: 32-bit shared libraries for AMD64
Submitter:
Nadim Shaikli
Date:
2022-04-06 09:30:02 UTC
Severity:
wishlist
Tags:
#364698#5
Date:
2006-04-25 03:19:38 UTC
From:
To:
I had installed an amd64 system (debian unstable) a few weeks back (this
is the system I am on now), I got most of my applications (both 32 and 64)
working (using ia32-libs version-1.5).  When I tried to do the same on a
friend's laptop I got ALOT of problems with 32-bit applications (from
big EDA companies) complaining about GLIBC_2.0 not being defined.  On
the advice of 'mrvn' (from #debian-amd64) I downgraded the laptop's
ia32-libs from 1.6 to 1.4 (sarge -- we didn't know how to grab 1.5) and
the complaints ceased and all functions properly now.

The issue as it stands is, what changed in glibc between 1.5 and 1.6 relating
to GLIBC_2.0 and could this "GLIBC_2.0" tag be reintroduced ?  Fedora/RH seem
to be handling this problem somehow since other friends note things working
for them with the latest beta releases (akin to debian's unstable) without
any issues.

BTW: the laptop's system info is pasted below post the change-over from 1.6
     back to 1.4 on its ia32-libs.

#364698#10
Date:
2006-04-25 08:19:54 UTC
From:
To:
Please post the full error message instead of paraphrasing.
#364698#15
Date:
2006-04-26 06:05:25 UTC
From:
To:
--- Steve Langasek <vorlon-at-debian.org> wrote:

Unfortunately I don't have immediate access to the laptop in order to
reinstall version-1.6 of the lib (to break things again :-) - I should
have saved-off the message, oops.  I'll attempt to get access to the
laptop in the next few days.  The error as I remember it though was,

  symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time
reference

What's interesting is that version 1.5 works perfectly fine where-as
1.6 doesn't.  Let me know if you need more info or supply me with debug
instructions for when I get 1.6 installed as I get the feeling I won't
be able to go back to 1.6 too often.

Thanks & Regards,

 - Nadim

#364698#20
Date:
2006-04-26 06:24:57 UTC
From:
To:
severity 364698 wishlist
thanks

Ok, this isn't a symbol that's coming back.  Any applications that declare
"extern int errno" instead of including the errno.h header file have been
buggy for some time, because errno is not guaranteed to be implemented as an
int in glibc -- and indeed, with NPTL versions of glibc (which is the
default, and preferred, implementation on Linux 2.6 kernels), it cannot be
implemented as an int.

Now, the ia32-libs maintainers *could* include a non-NPTL build of glibc in
ia32-libs, and then you could use LD_ASSUME_KERNEL=2.4.1 to force the use of
this backwards-compatible glibc with the errno@GLIBC_2.0 symbol; but given
that even the i386 port of etch isn't going to support these applications by
default, I'm not sure I see the point...

Anyway, downgrading as this bug only affects a particular set of (misbuilt)
applications, it doesn't make ia32-libs completely unusable.  It's up to the
ia32-libs maintainers whether they want to implement this for etch.

#364698#33
Date:
2006-04-28 22:30:45 UTC
From:
To:
Steve Langasek <vorlon@debian.org> writes:

No, we can't. We don't provide any libc at all anymore. :)

Glibc builds a 32bit libc6 for amd64 and ia32-libs has depended on it
for the last few versions.


If you need this ancient, broken errno variable then you have to stick
with stable I guess. But it is out of our hands and in the hands of
the glibc team. reassigning the bug there.

MfG
        Goswin

#364698#46
Date:
2022-04-06 09:27:23 UTC
From:
To:
current libc6 is built with kernel version 3.2.0, so
`LD_ASSUME_KERNEL=2.4.1` is pretty  much impossible to run these days.