Home Messages Index
[Date Prev][Date Next][Thread Prev][Thread Next]
Author IndexDate IndexThread Index

Re: [News] Alternative glibc Distribution is Released

Hadron wrote:

> Roy Schestowitz <newsgroups@xxxxxxxxxxxxxxx> writes:
> 
>> EGLIBC: Not a fork, but a glibc distribution
>>
>> ,----[ Quote ]
>> | The GNU C library (or glibc) is a fundamental component of the Linux
>> | operating system. It provides much of the user-space interface to the
>> | kernel as well as a sizable portion of the utility routines that are
>> | used by virtually all Linux applications. A variant of glibc known as
>> | Embedded glibc or EGLIBC is not very well known outside of the embedded
>> | space, but that looks to be changing with the announcement that Debian
>> | will switch from glibc to EGLIBC.
>> `----
>>
>> http://lwn.net/Articles/333755/
>>
>>
>> Recent:
>>
>> Debian changes from GLIBC to EGLIBC
>>
>> ,----[ Quote ]
>> | With a short message on his blog, Debian developer and maintainer
>> | Auréllian Jarno has announced a fundamental change in future Debian
>> | releases. The EGLIBC (Embedded GNU C Library), originally developed for
>> | embedded systems, is to replace GLIBC (GNU C Library).
>> `----
>>
>> http://www.h-online.com/open/Debian-changes-from-GLIBC-to-
EGLIBC--/news/113228
>>
> 
> FFS. What a disaster. Queue Debian/non specific bugs left right and
> centre.

I agree.  With something as fundamental as the libc I think this is a step 
backwards.  Even by fixing bugs they may break compatibility in some areas.

I have written several little languages, and compilers that use direct 
syscalls via generated machine code (for Linux, and BSD).  BSD tends to use 
the SysV i386 ABI for syscalls, which primarily uses the stack for passing 
data to a syscall.  Linux uses a different ABI.  With the Linux x86 ABI some 
of the syscall args are passed via registers.  The problem with the Linux 
design, is that it favors a C-based approach, and has made the porting of 
some compilers to Linux more difficult.  The Linux kernel headers in fact 
use gcc-specific features with C macros to make gcc store arguments in the 
registers.  So, that's good for C code perhaps, but when you consider that a 
language other than C often has to spill those registers, and save them some 
place, before the call, so that they may be restored afterwards, it tends to 
hurt the performance of other languages.  In more recent times I have 
produced some C code that interfaces, with the machine code my compiler 
generates, so there is more indirection.  My concern is that the C code will 
need to be rebuilt for every distribution, and it's probably warranted, with 
or without the glibc change.

As it is now, if you compile a program or library with a version of glibc 
that is newer than the library that your users use, even if you don't use 
any of the features that might be found in a delta of the new and old, it 
won't work.  A lot of software is thus built with old versions of Linux, 
because this allows for more forward compatibility, but unfortunately it 
doesn't eliminate the problems with some code changes.

I'm using an old static version of Skype, because the Ubuntu (shared 
library) package no longer works correctly (it segfaults), in Ubuntu 9.04.  
Something has changed in the ABI, or some address space change (perhaps due 
to unrelated code changes), has resulted in the packaged version no longer 
working.

-George


[Date Prev][Date Next][Thread Prev][Thread Next]
Author IndexDate IndexThread Index