implementation of isinf() (which differs between positive and negative
inf). All other tests use boolean retval only and test for the signess
of the values
and does not differ between positive and negative inf. 'isinf(3)' is a
builtin in gcc 4.3 and previous check won't work anymore. Instead of,
test whether value is lesser or greater than zero.
- renabled the INF testsuite
I removed the checks which called endmntent() multiple times resp. with a
NULL pointer. Behavior in first case is undefined and latter causes a
segfault (I could not find documentation that this is allowed). Hence,
it does not make sense to test this.
test 'malloc(0)' only, when WANT_MALLOC_ZERO is set
the '%Zu' printf format specifier is bogus (from libc5 ages). I replaced it
with the '%zu' one.
Please note, that this test still fails because it uses glibc specific
features.
removed tests which set a non-C locale. Broken usage of 'strptime()' result
was fixed too. This test should succeed now.
this test was added while working on the '%F/%G' patch and verifies the
isinf() + isnan() functions.
Please see
http://cvs.fedora.redhat.com/viewcvs/rpms/dietlibc/devel/runtests-X.sh?root
=extras&view=markup
for tests which are known to be broken.
It fixes handling of -INF values in __dtostr() too; previously, there
was
| unsigned int i; | if ((i=isinf(d))) return
copystring(buf,maxlen,i>0?"inf":"-inf"); ~~~ which evaluated to true
everytime. The copystring() function worked for 3-letter words only but
not for '-inf'.
The last argument of __dtostr() was changed from a boolean flag to a
bitmask. Bit 0 encodes 'g' or 'f', and bit 1 lower-/uppercase. There
should be probably added some macros for them; for now, these values
are used directly.
Please note that this might affect other applications (liblowfat?) too
which are using __dtostr().
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
they are now in upstream
- moved files into platform neutral /usr/lib dir (not using %%_lib or
%%_libdir macro)
- added -devel subpackage due to multiarch issues; main package contains
only the 'diet' binary plus some tools while -devel holds all the
header and object files.