The dietlibc rpms
little bit invasive in several aspects:
it modifies the startup code. We need to know the position of the elf-info
auxilary table which is located after 'environ'. We can not use
'environ' directly because it might be modified by the application.
Hence, an additional __elfinfo variable is placed into .bss and filled in
the startup code. Depending on platform, this adds 1-3 instructions and
an additional pointer to .bss.
I tested only the i386 and x86_64 modifications; it would be nice when
people with corresponding hardware would test the other ones. I am
especially uncertain regarding the parisc changes.
The elf-info stuff (which might be interesting e.g. for dynamic linking or
sysconf(_SC_CLK_TCK)) can be enabled without the dynamic pagesize too.
it removes the 'PAGE_SIZE' macro from <sys/shm.h>; this will break
compilation of existing userspace application which are using this
deprecated macro
I added a new internal 'dietpagesize.h' header which defines
| __DIET_PAGE_SIZE | __DIET_PAGE_SHIFT
macros. These return either builtin constants (when WANT_DYN_PAGESIZE is
not selected), or values derived from __libc_getpagesize().
Every usage of PAGE_SIZE in dietlibc code was replaced by these macros.
due to the previous point, the internal 'struct __dirstream' was modified.
I replaced
| getdents64(d->fd,(struct dirent64*)d->buf, sizeof (d->buf)-1);
with
| getdents64(d->fd,(struct dirent64*)d->buf, __DIRSTREAM_BUF_SIZE-1);
literally but I am not sure where the '-1' is coming from. There is one
hunk, where this '-1' is missing so I think the '-1' should be removed
from all calls to getdents64().
changes affect the *alloc() functions too; on x86_64 around 64 bytes where
added to .text of alloc.o
the new testprogramm requires a 'getconf' binary which returns the correct
values for PAGE_SIZE and CLK_TCK
|
||
|---|---|---|
| .cvsignore | ||
| branch | ||
| dietlibc-0.28-setpriority.patch | ||
| dietlibc-0.29-nostackprotector.patch | ||
| dietlibc-0.29-scall.patch | ||
| dietlibc-0.30-longdouble.patch | ||
| dietlibc-0.31-defpath.patch | ||
| dietlibc-0.31-pagesize.patch | ||
| dietlibc-0.31-stacksmash-dyn.patch | ||
| dietlibc-0.31-stacksmash.patch | ||
| dietlibc-0.31.20080212-teststdout.patch | ||
| dietlibc.spec | ||
| lastver | ||
| Makefile | ||
| runtests-X.sh | ||
| sources | ||
| verinfo | ||