descriptionglibc assembly fork for x86_64
ownersylvain.bertrand@legeek.net
last changeFri, 11 Aug 2023 14:52:23 +0000 (11 14:52 +0000)
content tags
add:
README
You should not use the glibc anymore but the other libcs.
Stick to GNU licences, not gnu software.

This is a _partial_ bootstrap of glibc (2.33) for x86_64 due to gnu failing its
mission, hard. With gcc, it is becoming the worst "corporate financed academic"
open source software out there and this is very disappointing and toxic.

Its goal is to provide an old "emergency"/bootstrap glibc you can quick and
dirty fix in assembly (big structural fixes will be probably unreasonable to
implement) and build with raw binutils. It is still non-pertinently expensive
though. For instance it will allow you to build ELF userland drivers
to be pulled in container-ized recent glibc runtimes (new runtimes will load
binaries linked with an old runtime).

Upstream requires some gnu only tools (and recently even a python interpreter),
the worst being gcc though. The gnu digital jail is enforced via grotesque, 
non-pertinent and absurd complexity and size, we do now presume this is due
to malice and not incompetence:
	- Many glibc libs must be statically loaded due to the ELF static TLS
	  flag. This can still be tolerable, but why this is not already fixed?
	  And it makes libdl-ing properly symbols error prone (you miss some
	  symbols).
	- Statically linked glibc objects into binaries expect specific
	  symbol versions in the shared parts of the glibc.
	- Manic abuse of gnu symbol versioning.
	- gnu jailed SDK.

BUILD AND INSTALL:
* Edit make_x86_64_libs.sh, adapt the configuration to your system, create a
build directory, change the current directory to this build directory, run
make_x86_64_libs.sh from there.
* Edit install_runtime.sh, adapt the configuration to your system, change the
current directory to the previous build directory, run install_runtime.sh as a
user with the appropriate access rights (usually root for a system install
for all users).
* Edit install_dev.sh, adapt the configuration to your system, change the
current directory to the previous build directory, run install_dev.sh as a
user with the appropriate access rights (usually root for a system install
for all users).
* WARNING: linux headers are _NOT_ included
* elf loader search directories: only the "system" ones, and those in
LD_LIBRARY_PATH (no cache). Use "ld-linux-x86-64.so.2 --list" to know.

* timezone: default to UTC. If you want a specific one, use a timezone
specification encoded in the TZ environment variable independent of any data
files (search the web). We will try to update properly the "unix time"
to calendar date mapping data though.

* locales: only internals C and POSIX, with the devuan stolen C.utf8 as a locale
archive file. Don't use libc locales, this is sort of a mess and kind of
broken. The C.utf8 "source" is there in case of.

Should be a mostly assembly fork to remove gcc dependency and the original gcc
code/verbose assembly is available now as code "documentation"/"specification" 
and not as "real" code anymore.

The source from the glibc 2.33 is not included for obvious repository size
reasons. Most build products (object files, shipped elf/data files) are not 
included for the same reasons.

The toolchain used to generate the bootstrap x86_64 code for this fork was gcc
7.3.0 with binutils 2.30.

Goal: keep as long as reasonably possible, _partial_ binary compatibility for
binary only (video games mostly)/heavy corporate open source applications.
Lean and non-corporate/(non-academic corporated financed) open source can use
alternative libcs which are non gcc locked and with a reasonable SDK.

Due to unfair financing, it may be not reasonably possible.
shortlog
2023-08-11 Sylvain BERTRANDclarify the purpose of this projectmaster
2023-08-10 Sylvain BERTRANDstrip
2023-08-09 Sylvain BERTRANDELF interpreter containment unreasonable dream
2023-08-08 Sylvain BERTRANDIsolate the ELF interpreter.
2023-07-28 Sylvain BERTRANDSome broken software wants to deal with ld.so.cache.
2021-04-30 Sylvain BERTRANDInitial commit
heads
8 months ago master