use patches from git repository; rediffed against 20080517

This commit is contained in:
ensc 2008-05-18 10:12:53 +00:00
commit 1c0742353d
14 changed files with 1396 additions and 1050 deletions

View file

@ -1,5 +1,17 @@
--- dietlibc-0.28-unpatched/lib/__nice.c 2005-02-13 18:01:18.966469056 -0500
+++ dietlibc-0.28/lib/__nice.c 2005-02-13 18:17:04.381744088 -0500
From ab91f175a8c77f275c9fa917dfe7cbc9b6262e1c Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:49:05 +0200
Subject: [PATCH] Return new nice value for nice(2)
Changed nice(2) to return the new nice value instead of 0/-1.
---
lib/__nice.c | 8 ++++++--
1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/lib/__nice.c b/lib/__nice.c
index d751104..8e205c0 100644
--- a/lib/__nice.c
+++ b/lib/__nice.c
@@ -1,9 +1,13 @@
#include "syscalls.h"
-#include <sys/time.h>
@ -16,3 +28,6 @@
+ return getpriority(PRIO_PROCESS,0);
}
#endif
--
1.5.4.5

View file

@ -1,12 +1,20 @@
2005-04-24 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* libcompat/syscall.S: catch the case when syscall(2) is not
implemented for the actual arch instead of jumping to the next
function and executing the wrong code
From 406e0419735c9e9c00290d437e9f42f88c3ae6d2 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:50:24 +0200
Subject: [PATCH] Sanity checks for syscall availability
--- dietlibc-0.29/libcompat/syscall.S.scall
+++ dietlibc-0.29/libcompat/syscall.S
@@ -120,6 +120,12 @@
nop
Catch the case when syscall(2) is not implemented for the actual arch
instead of jumping to the next function and executing the wrong code
---
libcompat/syscall.S | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/libcompat/syscall.S b/libcompat/syscall.S
index c9f72bb..6b6a8aa 100644
--- a/libcompat/syscall.S
+++ b/libcompat/syscall.S
@@ -130,6 +130,12 @@ syscall:
b __unified_syscall
#else
- /* arch not implemented yet */
@ -19,3 +27,6 @@
+#endif
#endif
.size syscall, . - syscall
--
1.5.4.5

View file

@ -1,6 +1,19 @@
--- dietlibc-0.30/libm/gamma.c~ 2005-03-15 08:51:23.000000000 +0000
+++ dietlibc-0.30/libm/gamma.c 2006-12-28 14:36:58.000000000 +0000
@@ -33,19 +33,19 @@ Return value gamma returns a value in
From ba4e9f8557b25e4fbb6886e7c54a2ca75ca57368 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:54:03 +0200
Subject: [PATCH] Workaround PPC build issues
Fixes https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=182118 and
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=27054
---
libm/gamma.c | 26 +++++++++++++-------------
1 files changed, 13 insertions(+), 13 deletions(-)
diff --git a/libm/gamma.c b/libm/gamma.c
index 9682f35..370bec6 100644
--- a/libm/gamma.c
+++ b/libm/gamma.c
@@ -33,19 +33,19 @@ Return value gamma returns a value in range (-0.1208, +oo). For a input
#include <stdlib.h>
#include <math.h>
@ -33,3 +46,6 @@
static const double coeff[] = { B0, B1, B2, B3, B4, B5, B6, B7, B8, B9, B10 };
int signgam;
--
1.5.4.5

View file

@ -1,6 +1,17 @@
diff -up dietlibc-0.31/include/paths.h.~1~ dietlibc-0.31/include/paths.h
--- dietlibc-0.31/include/paths.h.defpath
+++ dietlibc-0.31/include/paths.h
From 66528a176d332bb8de4ddf324754089e59139424 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 18:00:19 +0200
Subject: [PATCH] Security fix for proper $PATH
Removed '.' from the default $PATH.
---
include/paths.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/paths.h b/include/paths.h
index 553b4fa..9bf216f 100644
--- a/include/paths.h
+++ b/include/paths.h
@@ -2,7 +2,7 @@
#define _PATHS_H
@ -10,3 +21,6 @@ diff -up dietlibc-0.31/include/paths.h.~1~ dietlibc-0.31/include/paths.h
#define _PATH_DEVNULL "/dev/null"
--
1.5.4.5

View file

@ -1,19 +1,41 @@
diff -up dietlibc-0.31.20080409/lib/signalfd.c.implicitfunc dietlibc-0.31.20080409/lib/signalfd.c
--- dietlibc-0.31.20080409/lib/signalfd.c.implicitfunc 2008-02-19 01:28:13.000000000 +0100
+++ dietlibc-0.31.20080409/lib/signalfd.c 2008-04-13 22:52:10.000000000 +0200
@@ -1,6 +1,9 @@
#include <signal.h>
#include <errno.h>
+#include <sys/signalfd.h>
From 5c0e868e1a9266d580c95411c3b2f0272dfa14ab Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:43:08 +0200
Subject: [PATCH] Fixes for -Werror-no-implicit-functions
Some fixes for issues preventing builds with
'-Werror-implicit-function-declaration'.
---
test/getservbyname.c | 1 +
test/stdlib/testsort.c | 2 ++
test/stdlib/tst-calloc.c | 2 ++
3 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/test/getservbyname.c b/test/getservbyname.c
index b70ca19..caf1c9f 100644
--- a/test/getservbyname.c
+++ b/test/getservbyname.c
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <netdb.h>
+#include <arpa/inet.h>
+extern int __signalfd(int fd, const sigset_t *mask, size_t flags);
int main(int argc,char *argv[]) {
struct servent* se;
diff --git a/test/stdlib/testsort.c b/test/stdlib/testsort.c
index aa4332a..5a92bc0 100644
--- a/test/stdlib/testsort.c
+++ b/test/stdlib/testsort.c
@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+
int signalfd(int fd,const sigset_t* mask,int flags) {
if (flags) { /* bizarre glibc bullshit */
errno=EINVAL;
diff -up dietlibc-0.31.20080409/test/stdlib/tst-calloc.c.implicitfunc dietlibc-0.31.20080409/test/stdlib/tst-calloc.c
--- dietlibc-0.31.20080409/test/stdlib/tst-calloc.c.implicitfunc 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdlib/tst-calloc.c 2008-04-13 22:52:10.000000000 +0200
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
diff --git a/test/stdlib/tst-calloc.c b/test/stdlib/tst-calloc.c
index a9b9e2a..049117b 100644
--- a/test/stdlib/tst-calloc.c
+++ b/test/stdlib/tst-calloc.c
@@ -17,6 +17,8 @@
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
02111-1307 USA. */
@ -23,22 +45,6 @@ diff -up dietlibc-0.31.20080409/test/stdlib/tst-calloc.c.implicitfunc dietlibc-0
#include <errno.h>
#include <limits.h>
#include <malloc.h>
diff -up dietlibc-0.31.20080409/test/stdlib/testsort.c.implicitfunc dietlibc-0.31.20080409/test/stdlib/testsort.c
--- dietlibc-0.31.20080409/test/stdlib/testsort.c.implicitfunc 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdlib/testsort.c 2008-04-13 22:52:10.000000000 +0200
@@ -1,3 +1,5 @@
+#define _BSD_SOURCE
+
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
diff -up dietlibc-0.31.20080409/test/getservbyname.c.implicitfunc dietlibc-0.31.20080409/test/getservbyname.c
--- dietlibc-0.31.20080409/test/getservbyname.c.implicitfunc 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/getservbyname.c 2008-04-13 22:53:38.000000000 +0200
@@ -1,5 +1,6 @@
#include <stdio.h>
#include <netdb.h>
+#include <arpa/inet.h>
int main(int argc,char *argv[]) {
struct servent* se;
--
1.5.4.5

View file

@ -1,6 +1,20 @@
diff -up dietlibc-0.31.20080409/libugly/strftime.c.lcctime dietlibc-0.31.20080409/libugly/strftime.c
--- dietlibc-0.31.20080409/libugly/strftime.c.lcctime 2006-08-15 18:07:15.000000000 +0200
+++ dietlibc-0.31.20080409/libugly/strftime.c 2008-04-13 13:20:41.000000000 +0200
From aac35698d1b84f6370d37860c9e889c34cd6a21c Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:42:20 +0200
Subject: [PATCH] Fixes/enhancements in str?time() functions
This patch changes the used format for %x and %X specifiers in
strptime(3) to match these specified by SUSv2. It adds support
for '%F' in strftime(3) too.
---
libugly/strftime.c | 1 +
libugly/strptime.c | 5 +++--
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/libugly/strftime.c b/libugly/strftime.c
index 56ae082..cf16f37 100644
--- a/libugly/strftime.c
+++ b/libugly/strftime.c
@@ -55,6 +55,7 @@ again:
case 'x': src = "%b %a %d"; goto _strf;
case 'X': src = "%k:%M:%S"; goto _strf;
@ -9,10 +23,11 @@ diff -up dietlibc-0.31.20080409/libugly/strftime.c.lcctime dietlibc-0.31.2008040
case 'T': src = "%H:%M:%S";
_strf: p += strftime (p, (size_t)(dst+max-p), src, tm); break;
case 'a': src = sweekdays [tm->tm_wday]; goto _str;
diff -up dietlibc-0.31.20080409/libugly/strptime.c.lcctime dietlibc-0.31.20080409/libugly/strptime.c
--- dietlibc-0.31.20080409/libugly/strptime.c.lcctime 2007-08-03 22:58:33.000000000 +0200
+++ dietlibc-0.31.20080409/libugly/strptime.c 2008-04-13 13:13:12.000000000 +0200
@@ -119,10 +119,11 @@ char* strptime(const char* s,const char*
diff --git a/libugly/strptime.c b/libugly/strptime.c
index 6ac5340..32dc2a7 100644
--- a/libugly/strptime.c
+++ b/libugly/strptime.c
@@ -119,10 +119,11 @@ char* strptime(const char* s,const char* format, struct tm* tm) {
++s;
break;
case 'x':
@ -26,3 +41,6 @@ diff -up dietlibc-0.31.20080409/libugly/strptime.c.lcctime dietlibc-0.31.2008040
break;
case 'y':
i=getint(&s,2);
--
1.5.4.5

View file

@ -1,6 +1,22 @@
diff -up dietlibc-0.31.20080409/include/stdlib.h.noreturn dietlibc-0.31.20080409/include/stdlib.h
--- dietlibc-0.31.20080409/include/stdlib.h.noreturn 2008-04-13 22:56:59.000000000 +0200
+++ dietlibc-0.31.20080409/include/stdlib.h 2008-04-13 22:57:54.000000000 +0200
From e96b03324e5395ff3c0041c249bfed9aa1bdb8b5 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:43:42 +0200
Subject: [PATCH] __noreturn__ annotation for abort(3)
SUSv2 says about abort(3):
The abort() function shall not return.
Hence, an '__attribute__((__noreturn__))' should be added to the
abort(3) declaration.
---
include/stdlib.h | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/include/stdlib.h b/include/stdlib.h
index 34f3a7f..0cea604 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -47,7 +47,7 @@ double atof(const char *nptr) __THROW;
__extension__ long long int atoll(const char *nptr);
@ -10,3 +26,6 @@ diff -up dietlibc-0.31.20080409/include/stdlib.h.noreturn dietlibc-0.31.20080409
extern int rand(void) __THROW;
extern int rand_r(unsigned int *seed) __THROW;
--
1.5.4.5

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,58 @@
diff -up dietlibc-0.31.20080409/lib/__dtostr.c.printFG dietlibc-0.31.20080409/lib/__dtostr.c
--- dietlibc-0.31.20080409/lib/__dtostr.c.printFG 2006-07-04 05:33:02.000000000 +0200
+++ dietlibc-0.31.20080409/lib/__dtostr.c 2008-04-14 00:36:10.000000000 +0200
From 313a9b41133ca631890de99f979ee01074d0c0be Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:39:23 +0200
Subject: [PATCH] Fixes/enhancements for INF/NAN handling in printf()
This patch adds support for uppercase 'F' and 'G' printf format
specifiers. 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().
'isinf(3)' is a builtin with gcc 4.3 and does not give a hint
about the signess of the infinity anymore. Hence, this patch uses
a more portable way where needed.
---
include/stdlib.h | 6 ++++-
lib/__dtostr.c | 18 +++++++++++-----
lib/__v_printf.c | 59 +++++++++++++++++++++++++++++------------------------
test/printf.c | 44 +++++++++++++++++++++++++++++++++++----
4 files changed, 88 insertions(+), 39 deletions(-)
diff --git a/include/stdlib.h b/include/stdlib.h
index d1e1569..34f3a7f 100644
--- a/include/stdlib.h
+++ b/include/stdlib.h
@@ -28,8 +28,12 @@ long double strtold(const char *nptr, char **endptr) __THROW;
long int strtol(const char *nptr, char **endptr, int base) __THROW;
unsigned long int strtoul(const char *nptr, char **endptr, int base) __THROW;
+/* HACK: used flags in __dtostr
+ 0x01 ... 'g'
+ 0x02 ... uppercase
+ Define some constants somewhere... */
extern int __ltostr(char *s, unsigned int size, unsigned long i, unsigned int base, int UpCase) __THROW;
-extern int __dtostr(double d,char *buf,unsigned int maxlen,unsigned int prec,unsigned int prec2,int g) __THROW;
+extern int __dtostr(double d,char *buf,unsigned int maxlen,unsigned int prec,unsigned int prec2,int flags) __THROW;
#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
__extension__ long long int strtoll(const char *nptr, char **endptr, int base) __THROW;
diff --git a/lib/__dtostr.c b/lib/__dtostr.c
index 1d082e3..bc61200 100644
--- a/lib/__dtostr.c
+++ b/lib/__dtostr.c
@@ -5,13 +5,15 @@
static int copystring(char* buf,int maxlen, const char* s) {
@ -20,7 +72,7 @@ diff -up dietlibc-0.31.20080409/lib/__dtostr.c.printFG dietlibc-0.31.20080409/li
#if 1
union {
unsigned long long l;
@@ -35,8 +37,12 @@ int __dtostr(double d,char *buf,unsigned
@@ -35,8 +37,12 @@ int __dtostr(double d,char *buf,unsigned int maxlen,unsigned int prec,unsigned i
double tmp;
char *oldbuf=buf;
@ -35,7 +87,7 @@ diff -up dietlibc-0.31.20080409/lib/__dtostr.c.printFG dietlibc-0.31.20080409/li
e10=1+(long)(e*0.30102999566398119802); /* log10(2) */
/* Wir iterieren von Links bis wir bei 0 sind oder maxlen erreicht
* ist. Wenn maxlen erreicht ist, machen wir das nochmal in
@@ -126,7 +132,7 @@ int __dtostr(double d,char *buf,unsigned
@@ -126,7 +132,7 @@ int __dtostr(double d,char *buf,unsigned int maxlen,unsigned int prec,unsigned i
if (prec2 || prec>(unsigned int)(buf-oldbuf)+1) { /* more digits wanted */
if (!maxlen) return 0; --maxlen;
*buf='.'; ++buf;
@ -44,9 +96,10 @@ diff -up dietlibc-0.31.20080409/lib/__dtostr.c.printFG dietlibc-0.31.20080409/li
if (prec2) prec=prec2;
prec-=buf-oldbuf-1;
} else {
diff -up dietlibc-0.31.20080409/lib/__v_printf.c.printFG dietlibc-0.31.20080409/lib/__v_printf.c
--- dietlibc-0.31.20080409/lib/__v_printf.c.printFG 2008-02-19 01:28:13.000000000 +0100
+++ dietlibc-0.31.20080409/lib/__v_printf.c 2008-04-14 00:36:10.000000000 +0200
diff --git a/lib/__v_printf.c b/lib/__v_printf.c
index 36202f5..964c005 100644
--- a/lib/__v_printf.c
+++ b/lib/__v_printf.c
@@ -4,6 +4,7 @@
#include <stdlib.h>
#include <string.h>
@ -72,8 +125,7 @@ diff -up dietlibc-0.31.20080409/lib/__v_printf.c.printFG dietlibc-0.31.20080409/
if (flag_sign || d < +0.0) flag_in_sign=1;
- sz=__dtostr(d,s,sizeof(buf)-1,width,preci,g);
+ sz=__dtostr(d,s,sizeof(buf)-1,width,preci,flags);
-
- if (flag_dot) {
- char *tmp;
- if ((tmp=strchr(s,'.'))) {
@ -83,6 +135,8 @@ diff -up dietlibc-0.31.20080409/lib/__v_printf.c.printFG dietlibc-0.31.20080409/
- } else if (flag_hash) {
- s[sz]='.';
- s[++sz]='\0';
+ sz=__dtostr(d,s,sizeof(buf)-1,width,preci,flags);
+
+ if (!isnan(d) && !isinf(d)) { /* skip NaN + INF values */
+ if (flag_dot) {
+ char *tmp;
@ -131,9 +185,10 @@ diff -up dietlibc-0.31.20080409/lib/__v_printf.c.printFG dietlibc-0.31.20080409/
}
sz=strlen(s);
diff -up dietlibc-0.31.20080409/test/printf.c.printFG dietlibc-0.31.20080409/test/printf.c
--- dietlibc-0.31.20080409/test/printf.c.printFG 2008-02-19 01:28:13.000000000 +0100
+++ dietlibc-0.31.20080409/test/printf.c 2008-04-14 00:36:10.000000000 +0200
diff --git a/test/printf.c b/test/printf.c
index 719461a..ef6050d 100644
--- a/test/printf.c
+++ b/test/printf.c
@@ -2,11 +2,26 @@
#include <string.h>
#include <stdlib.h>
@ -215,20 +270,6 @@ diff -up dietlibc-0.31.20080409/test/printf.c.printFG dietlibc-0.31.20080409/tes
+
return EXIT_SUCCESS;
}
diff -up dietlibc-0.31.20080409/include/stdlib.h.printFG dietlibc-0.31.20080409/include/stdlib.h
--- dietlibc-0.31.20080409/include/stdlib.h.printFG 2007-09-20 20:51:18.000000000 +0200
+++ dietlibc-0.31.20080409/include/stdlib.h 2008-04-14 00:36:10.000000000 +0200
@@ -28,8 +28,12 @@ long double strtold(const char *nptr, ch
long int strtol(const char *nptr, char **endptr, int base) __THROW;
unsigned long int strtoul(const char *nptr, char **endptr, int base) __THROW;
+/* HACK: used flags in __dtostr
+ 0x01 ... 'g'
+ 0x02 ... uppercase
+ Define some constants somewhere... */
extern int __ltostr(char *s, unsigned int size, unsigned long i, unsigned int base, int UpCase) __THROW;
-extern int __dtostr(double d,char *buf,unsigned int maxlen,unsigned int prec,unsigned int prec2,int g) __THROW;
+extern int __dtostr(double d,char *buf,unsigned int maxlen,unsigned int prec,unsigned int prec2,int flags) __THROW;
#if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L
__extension__ long long int strtoll(const char *nptr, char **endptr, int base) __THROW;
--
1.5.4.5

View file

@ -1,6 +1,18 @@
diff -up dietlibc-0.31/lib/stack_smash_handler2.c.~1~ dietlibc-0.31/lib/stack_smash_handler2.c
--- dietlibc-0.31/lib/stack_smash_handler2.c.~1~ 2007-09-01 14:13:21.000000000 +0200
+++ dietlibc-0.31/lib/stack_smash_handler2.c 2007-09-01 14:13:40.000000000 +0200
From 4bd1b2d53138ab594a6b73c938daf1b7c2195367 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:57:09 +0200
Subject: [PATCH] __stack_chk_fail_local function
Added __stack_chk_fail_local() function as an alias for __stack_chk_fail().
This is required for dynamic linking.
---
lib/stack_smash_handler2.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/lib/stack_smash_handler2.c b/lib/stack_smash_handler2.c
index ecefeb8..b03c0d5 100644
--- a/lib/stack_smash_handler2.c
+++ b/lib/stack_smash_handler2.c
@@ -2,6 +2,7 @@
#include <write12.h>
@ -9,3 +21,6 @@ diff -up dietlibc-0.31/lib/stack_smash_handler2.c.~1~ dietlibc-0.31/lib/stack_sm
/* earlier versions of ProPolice actually gave the address and function
* name as arguments to the handler, so it could print some useful
--
1.5.4.5

View file

@ -1,14 +1,39 @@
2007-09-01 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
* lib/stack_smash_handler2: modified __stack_chk_fail() to trigger
a segfault by accessing address 0x0. Every system with an MMU
known by me, segfaults by dereferencing a NULL pointer
From 9fb58ca3604cb1426e94689fab57ab5c127c8c55 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:56:07 +0200
Subject: [PATCH] Enhanced __stack_chk_fail
* Makefile: added hack to compile stack_smash_handler2 with
'--fno-omit-frame-pointer'.
* modified __stack_chk_fail() to trigger a segfault by accessing
address 0x0. Every system with an MMU known by me, segfaults
by dereferencing a NULL pointer.
diff -up dietlibc-0.31/lib/stack_smash_handler2.c.~1~ dietlibc-0.31/lib/stack_smash_handler2.c
--- dietlibc-0.31/lib/stack_smash_handler2.c.stacksmash
+++ dietlibc-0.31/lib/stack_smash_handler2.c
* added hack to compile stack_smash_handler2 with
'--fno-omit-frame-pointer'.
---
Makefile | 3 ++-
lib/stack_smash_handler2.c | 10 +++++++++-
2 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/Makefile b/Makefile
index adc2779..0cd0105 100644
--- a/Makefile
+++ b/Makefile
@@ -172,9 +172,10 @@ $(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h
$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c
$(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
+$(OBJDIR)/stack_smash_handler2.o: XCFLAGS:=-fno-omit-frame-pointer
$(OBJDIR)/%.o: %.c
- $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@ -D__dietlibc__
+ $(CROSS)$(CC) $(INC) $(CFLAGS) $(XCFLAGS) -c $< -o $@ -D__dietlibc__
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
endif
diff --git a/lib/stack_smash_handler2.c b/lib/stack_smash_handler2.c
index 9e85099..ecefeb8 100644
--- a/lib/stack_smash_handler2.c
+++ b/lib/stack_smash_handler2.c
@@ -8,5 +8,13 @@ void __stack_chk_fail(void);
* diagnostics. No more. :-( */
void __stack_chk_fail(void) {
@ -24,17 +49,6 @@ diff -up dietlibc-0.31/lib/stack_smash_handler2.c.~1~ dietlibc-0.31/lib/stack_sm
+ while (1)
+ *(char *)0 = 0;
}
--- dietlibc-0.31/Makefile.stacksmash
+++ dietlibc-0.31/Makefile
@@ -172,9 +172,10 @@ $(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h
$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c
$(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
+$(OBJDIR)/stack_smash_handler2.o: XCFLAGS:=-fno-omit-frame-pointer
$(OBJDIR)/%.o: %.c
- $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@ -D__dietlibc__
+ $(CROSS)$(CC) $(INC) $(CFLAGS) $(XCFLAGS) -c $< -o $@ -D__dietlibc__
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
endif
--
1.5.4.5

View file

@ -1,88 +0,0 @@
diff -up dietlibc-0.31.20080409/test/stdio/tst-fseek.c.stat64 dietlibc-0.31.20080409/test/stdio/tst-fseek.c
--- dietlibc-0.31.20080409/test/stdio/tst-fseek.c.stat64 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdio/tst-fseek.c 2008-04-12 21:17:47.000000000 +0200
@@ -19,6 +19,7 @@
02111-1307 USA. */
#define _GNU_SOURCE
+#define _FILE_OFFSET_BITS 64
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
@@ -38,8 +39,8 @@ main (void)
const char outstr[] = "hello world!\n";
char strbuf[sizeof outstr];
char buf[200];
- struct stat64 st1;
- struct stat64 st2;
+ struct stat st1;
+ struct stat st2;
int result = 0;
tmpdir = getenv ("TMPDIR");
@@ -315,9 +316,9 @@ main (void)
}
/* Check the access time. */
- if (fstat64 (fd, &st1) < 0)
+ if (fstat (fd, &st1) < 0)
{
- printf ("%d: fstat64() before fseeko() failed\n\n", __LINE__);
+ printf ("%d: fstat() before fseeko() failed\n\n", __LINE__);
result = 1;
}
else
@@ -338,9 +339,9 @@ main (void)
sleep (1);
t = time (NULL);
- if (fstat64 (fd, &st2) < 0)
+ if (fstat (fd, &st2) < 0)
{
- printf ("%d: fstat64() after fseeko() failed\n\n", __LINE__);
+ printf ("%d: fstat() after fseeko() failed\n\n", __LINE__);
result = 1;
}
if (st1.st_ctime >= t)
@@ -424,9 +425,9 @@ main (void)
printf ("%d: fopen() failed\n\n", __LINE__);
result = 1;
}
- else if (fstat64 (fileno (fp), &st1) < 0)
+ else if (fstat (fileno (fp), &st1) < 0)
{
- printf ("%d: fstat64() before fseeko() failed\n\n", __LINE__);
+ printf ("%d: fstat() before fseeko() failed\n\n", __LINE__);
result = 1;
}
else if (fseeko (fp, 0, SEEK_END) != 0)
@@ -436,7 +437,7 @@ main (void)
}
else if (ftello (fp) != st1.st_size)
{
- printf ("%d: fstat64 st_size %zd ftello %zd\n", __LINE__,
+ printf ("%d: fstat st_size %zd ftello %zd\n", __LINE__,
(size_t) st1.st_size, (size_t) ftello (fp));
result = 1;
}
@@ -451,9 +452,9 @@ main (void)
printf ("%d: fopen() failed\n\n", __LINE__);
result = 1;
}
- else if (fstat64 (fileno (fp), &st1) < 0)
+ else if (fstat (fileno (fp), &st1) < 0)
{
- printf ("%d: fstat64() before fgetc() failed\n\n", __LINE__);
+ printf ("%d: fstat() before fgetc() failed\n\n", __LINE__);
result = 1;
}
else if (fgetc (fp) == EOF)
@@ -468,7 +469,7 @@ main (void)
}
else if (ftello (fp) != st1.st_size)
{
- printf ("%d: fstat64 st_size %zd ftello %zd\n", __LINE__,
+ printf ("%d: fstat st_size %zd ftello %zd\n", __LINE__,
(size_t) st1.st_size, (size_t) ftello (fp));
result = 1;
}

View file

@ -1,53 +1,101 @@
diff -up dietlibc-0.31.20080409/test/getmntent.c.testsuite dietlibc-0.31.20080409/test/getmntent.c
--- dietlibc-0.31.20080409/test/getmntent.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/getmntent.c 2008-04-14 00:41:17.000000000 +0200
@@ -33,10 +33,6 @@ while ((e = getmntent(fstab))) {
From ca5319e550e6e64e803a46fbb80d9436d8348567 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:41:23 +0200
Subject: [PATCH] Several testsuite fixes/enhancments
* test/getmntent.c: 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/stdlib/tst-malloc.c: test 'malloc(0)' only, when
WANT_MALLOC_ZERO is set
* test/time/tst-strftime.c: 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.
* test/time/tst-strptime.c: removed tests which set a non-C
locale. Broken usage of 'strptime()' result was fixed too.
This test should succeed now.
* test/math.c: this test was added while working on the '%F/%G'
patch and verifies the isinf() + isnan() functions.
* fixes lot of broken printf() format specifiers
* fixes tests using isinf(); the math.c test checks the dietlibc
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
---
test/Makefile | 2 +-
test/asprintf.c | 2 +-
test/bsearch.c | 2 +-
test/byteswap.c | 8 ++++----
test/cycles.c | 2 +-
test/getmntent.c | 6 +-----
test/math.c | 29 +++++++++++++++++++++++++++++
test/mktime.c | 6 +++---
test/printftest.c | 6 +++---
test/rand48.c | 12 ++++++------
test/runtests.sh | 2 +-
test/speed.c | 4 ++--
test/stdio/tstscanf.c | 4 ++--
test/stdlib/tst-malloc.c | 6 +++++-
test/stdlib/tst-strtod.c | 4 ++--
test/sysenter.c | 6 +++---
test/time/tst-strftime.c | 6 +++---
test/time/tst-strptime.c | 23 ++++++++++++++++++++---
18 files changed, 88 insertions(+), 42 deletions(-)
create mode 100644 test/math.c
diff --git a/test/Makefile b/test/Makefile
index ff416cf..537b32f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -10,7 +10,7 @@ LCOMPAT=-lcompat
TESTPROGRAMS=adjtime argv asprintf atexit bsearch byteswap calloc confstr cycles empty flush fnmatch \
fputc ftw fwrite getaddrinfo getenv getgrnam gethostbyaddr gethostbyname \
gethostbyname_r getmntent getopt getpass getpwnam getservbyname getservbyport getusershell \
-glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger md5_testharness \
+glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger math md5_testharness \
memccpy memchr memcmp memrchr memusage mktime mmap_test pipe printf printftest \
protoent prototypes putenv pwent rand48 read1 readdir regex select sendfile servent siglist \
speed spent sprintf sscanf stdarg strcasecmp strcmp strncat strncpy strptime strrchr \
diff --git a/test/asprintf.c b/test/asprintf.c
index 996a5aa..0d4f2eb 100644
--- a/test/asprintf.c
+++ b/test/asprintf.c
@@ -13,7 +13,7 @@ int main(int argc, char **argv) {
assert(strlen(path) == asprintlen);
printf("%s\n", path);
- asprintlen=asprintf(&path, "/proc" "/%d/stat", strlen(argv[1]));
+ asprintlen=asprintf(&path, "/proc" "/%zu/stat", strlen(argv[1]));
assert(strlen(path) == asprintlen);
printf("%s\n", path);
printf("closing /etc/fstab\n");
assert ( 1 == endmntent(fstab));
- printf("closing /etc/fstab again\n");
- assert ( 1 == endmntent(fstab)); /* endmntent must always return 1 */
- printf("entmntent(0)\n");
- assert ( 1 == endmntent(0)); /* causes a segfault with diet libc */
+
return 0;
}
-
diff -up dietlibc-0.31.20080409/test/stdio/tst-fphex.c.testsuite dietlibc-0.31.20080409/test/stdio/tst-fphex.c
--- dietlibc-0.31.20080409/test/stdio/tst-fphex.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdio/tst-fphex.c 2008-04-14 00:41:17.000000000 +0200
@@ -37,7 +37,7 @@ int main (int argc, char **argv) {
int n = snprintf (buf, sizeof buf, t->fmt, t->value);
if (n != strlen (t->expect) || strcmp (buf, t->expect) != 0)
{
- printf ("%s\tExpected \"%s\" (%u)\n\tGot \"%s\" (%d, %u)\n",
+ printf ("%s\tExpected \"%s\" (%zu)\n\tGot \"%s\" (%d, %zu)\n",
t->fmt, t->expect, strlen (t->expect), buf, n, strlen (buf));
result = 1;
}
diff -up dietlibc-0.31.20080409/test/stdio/tstscanf.c.testsuite dietlibc-0.31.20080409/test/stdio/tstscanf.c
--- dietlibc-0.31.20080409/test/stdio/tstscanf.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdio/tstscanf.c 2008-04-14 00:47:36.000000000 +0200
@@ -338,14 +338,14 @@ main (int argc, char **argv)
int res;
res = sscanf ("-InF", "%f", &value);
- if (res != 1 || isinf (value) != -1)
+ if (res != 1 || !isinf (value) || !(value<0))
{
fputs ("test failed!\n", stdout);
result = 1;
diff --git a/test/bsearch.c b/test/bsearch.c
index 961ad35..ede4c88 100644
--- a/test/bsearch.c
+++ b/test/bsearch.c
@@ -35,7 +35,7 @@ int main() {
die("bsearch returned NULL\n");
}
res = sscanf ("+InfiNiTY", "%f", &value);
- if (res != 1 || isinf (value) != 1)
+ if (res != 1 || !isinf (value) || !(value>0))
{
fputs ("test failed!\n", stdout);
result = 1;
diff -up dietlibc-0.31.20080409/test/byteswap.c.testsuite dietlibc-0.31.20080409/test/byteswap.c
--- dietlibc-0.31.20080409/test/byteswap.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/byteswap.c 2008-04-14 00:41:17.000000000 +0200
if (k != array+i) die("bsearch found wrong element\n");
- printf("%d\n",k-array);
+ printf("%ld\n",k-array);
}
}
return 0;
diff --git a/test/byteswap.c b/test/byteswap.c
index 19239dd..6f43c25 100644
--- a/test/byteswap.c
+++ b/test/byteswap.c
@@ -9,12 +9,12 @@ int main() {
snprintf(buf,100,"%x %x", bswap_16(0x1234), bswap_16(0x5678));
assert(strcmp(buf, "3412 7856") == 0);
@ -65,20 +113,10 @@ diff -up dietlibc-0.31.20080409/test/byteswap.c.testsuite dietlibc-0.31.20080409
assert(strcmp(buf, "efcdab8967452301") == 0);
return 0;
}
diff -up dietlibc-0.31.20080409/test/runtests.sh.testsuite dietlibc-0.31.20080409/test/runtests.sh
--- dietlibc-0.31.20080409/test/runtests.sh.testsuite 2008-04-14 00:41:17.000000000 +0200
+++ dietlibc-0.31.20080409/test/runtests.sh 2008-04-14 00:41:17.000000000 +0200
@@ -1,6 +1,6 @@
SUBDIRS="dirent inet stdio string stdlib time"
-TESTPROGRAMS="adjtime argv atexit bsearch byteswap calloc confstr empty flush fputc ffs fnmatch ftw fwrite getaddrinfo getenv getdelim getgrnam gethostbyaddr gethostbyname gethostbyname_r getmntent getopt getpwnam getservbyname getservbyport getusershell glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger md5_testharness memccpy memchr memcmp memrchr memusage mktime mmap_test pipe printf printftest protoent prototypes putenv pwent rand48 readdir regex select sendfile servent siglist speed spent sprintf sscanf stdarg strcasecmp strcmp strncat strncpy strptime strrchr strstr strtol sysconf sysenter ungetc waitpid"
+TESTPROGRAMS="adjtime argv atexit bsearch byteswap calloc confstr empty flush fputc ffs fnmatch ftw fwrite getaddrinfo getenv getdelim getgrnam gethostbyaddr gethostbyname gethostbyname_r getmntent getopt getpwnam getservbyname getservbyport getusershell glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger math md5_testharness memccpy memchr memcmp memrchr memusage mktime mmap_test pipe printf printftest protoent prototypes putenv pwent rand48 readdir regex select sendfile servent siglist speed spent sprintf sscanf stdarg strcasecmp strcmp strncat strncpy strptime strrchr strstr strtol sysconf sysenter ungetc waitpid"
STDIN="read1"
PASS="getpass"
diff -up dietlibc-0.31.20080409/test/cycles.c.testsuite dietlibc-0.31.20080409/test/cycles.c
--- dietlibc-0.31.20080409/test/cycles.c.testsuite 2004-08-24 12:10:48.000000000 +0200
+++ dietlibc-0.31.20080409/test/cycles.c 2008-04-14 00:41:17.000000000 +0200
diff --git a/test/cycles.c b/test/cycles.c
index 35547f8..a4cb8c8 100644
--- a/test/cycles.c
+++ b/test/cycles.c
@@ -24,7 +24,7 @@ int main(int argc,char* argv[]) {
if (!fork()) { execve(argv[1],argv+1,environ); exit(1); }
wait(0);
@ -88,51 +126,84 @@ diff -up dietlibc-0.31.20080409/test/cycles.c.testsuite dietlibc-0.31.20080409/t
return 0;
}
diff -up dietlibc-0.31.20080409/test/sysenter.c.testsuite dietlibc-0.31.20080409/test/sysenter.c
--- dietlibc-0.31.20080409/test/sysenter.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/sysenter.c 2008-04-14 00:41:17.000000000 +0200
@@ -11,11 +11,11 @@ int main() {
int i;
for (i=0; environ[i]; ++i) ;
for (x=(struct elf_aux*)(environ+i+1); x->type; ++x) {
- printf("%d %x\n",x->type,x->value);
+ printf("%ld %lx\n",x->type,x->value);
if (x->type==AT_PAGESZ)
- printf("pagesize %d\n",x->value);
+ printf("pagesize %ld\n",x->value);
else if (x->type==AT_SYSINFO)
- printf("vsyscall %p\n",x->value);
+ printf("vsyscall %p\n",(void *)x->value);
}
diff --git a/test/getmntent.c b/test/getmntent.c
index fc17a83..1039d06 100644
--- a/test/getmntent.c
+++ b/test/getmntent.c
@@ -33,10 +33,6 @@ while ((e = getmntent(fstab))) {
printf("closing /etc/fstab\n");
assert ( 1 == endmntent(fstab));
- printf("closing /etc/fstab again\n");
- assert ( 1 == endmntent(fstab)); /* endmntent must always return 1 */
- printf("entmntent(0)\n");
- assert ( 1 == endmntent(0)); /* causes a segfault with diet libc */
+
return 0;
}
-
diff --git a/test/math.c b/test/math.c
new file mode 100644
index 0000000..687103c
--- /dev/null
+++ b/test/math.c
@@ -0,0 +1,29 @@
+#include <math.h>
+#include <float.h>
+#include <assert.h>
+
+int main()
+{
+ extern int __isinf(double d);
+ extern int __isnan(double d);
+
+#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))
+ assert(__isinf(__builtin_inff()) == +1);
+ assert(__isinf(-__builtin_inff()) == -1);
+
+ assert(__isinf(__builtin_inf()) == +1);
+ assert(__isinf(-__builtin_inf()) == -1);
+
+ assert(__isnan(__builtin_nan("")));
+#endif
+
+ assert(__isinf((DBL_MAX * DBL_MAX)) == +1);
+ assert(__isinf(-(DBL_MAX * DBL_MAX)) == -1);
+
+ assert(isinf((DBL_MAX * DBL_MAX)));
+ assert(isinf(-(DBL_MAX * DBL_MAX)));
+
+ //assert(isnan(nan("")));
+
+ return 0;
+}
diff --git a/test/mktime.c b/test/mktime.c
index 5e9e65c..9b4bd5e 100644
--- a/test/mktime.c
+++ b/test/mktime.c
@@ -9,15 +9,15 @@ int main() {
t.tm_mday=29;
t.tm_mon=2;
t.tm_year=100;
- printf("%d\n",mktime(&t));
+ printf("%ld\n",(long)mktime(&t));
t.tm_mday=1;
t.tm_mon=3;
t.tm_year=102;
- printf("%d\n",mktime(&t));
+ printf("%ld\n",(long)mktime(&t));
t.tm_mday=1;
t.tm_mon=6;
t.tm_year=102;
- printf("%d\n",mktime(&t));
+ printf("%ld\n",(long)mktime(&t));
return 0;
}
diff -up dietlibc-0.31.20080409/test/Makefile.testsuite dietlibc-0.31.20080409/test/Makefile
--- dietlibc-0.31.20080409/test/Makefile.testsuite 2008-04-14 00:41:17.000000000 +0200
+++ dietlibc-0.31.20080409/test/Makefile 2008-04-14 00:41:17.000000000 +0200
@@ -10,7 +10,7 @@ LCOMPAT=-lcompat
TESTPROGRAMS=adjtime argv asprintf atexit bsearch byteswap calloc confstr cycles empty flush fnmatch \
fputc ftw fwrite getaddrinfo getenv getgrnam gethostbyaddr gethostbyname \
gethostbyname_r getmntent getopt getpass getpwnam getservbyname getservbyport getusershell \
-glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger md5_testharness \
+glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger math md5_testharness \
memccpy memchr memcmp memrchr memusage mktime mmap_test pipe printf printftest \
protoent prototypes putenv pwent rand48 read1 readdir regex select sendfile servent siglist \
speed spent sprintf sscanf stdarg strcasecmp strcmp strncat strncpy strptime strrchr \
diff -up dietlibc-0.31.20080409/test/bsearch.c.testsuite dietlibc-0.31.20080409/test/bsearch.c
--- dietlibc-0.31.20080409/test/bsearch.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/bsearch.c 2008-04-14 00:41:17.000000000 +0200
@@ -35,7 +35,7 @@ int main() {
die("bsearch returned NULL\n");
}
if (k != array+i) die("bsearch found wrong element\n");
- printf("%d\n",k-array);
+ printf("%ld\n",k-array);
}
}
return 0;
diff -up dietlibc-0.31.20080409/test/printftest.c.testsuite dietlibc-0.31.20080409/test/printftest.c
--- dietlibc-0.31.20080409/test/printftest.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/printftest.c 2008-04-14 00:41:17.000000000 +0200
diff --git a/test/printftest.c b/test/printftest.c
index 4743279..47d9580 100644
--- a/test/printftest.c
+++ b/test/printftest.c
@@ -101,8 +101,8 @@ int main()
printf("#%i#\n",18);
printf("#%d#\n",18);
@ -153,9 +224,87 @@ diff -up dietlibc-0.31.20080409/test/printftest.c.testsuite dietlibc-0.31.200804
printf ("snprintf (\"%%.999999u\", 10) == %d\n",
snprintf(buf2, sizeof(buf2), "%.999999u", 10));
diff -up dietlibc-0.31.20080409/test/stdlib/tst-malloc.c.testsuite dietlibc-0.31.20080409/test/stdlib/tst-malloc.c
--- dietlibc-0.31.20080409/test/stdlib/tst-malloc.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdlib/tst-malloc.c 2008-04-14 00:41:17.000000000 +0200
diff --git a/test/rand48.c b/test/rand48.c
index 4f5b08f..1e67632 100644
--- a/test/rand48.c
+++ b/test/rand48.c
@@ -6,16 +6,16 @@ main (void)
{
static unsigned short data[7] = { 1, 2, 3, 4, 5, 6, 7 };
- printf ("one %X\n", mrand48 ());
- printf ("two %X\n", mrand48 ());
- printf ("three %X\n", mrand48 ());
+ printf ("one %lX\n", mrand48 ());
+ printf ("two %lX\n", mrand48 ());
+ printf ("three %lX\n", mrand48 ());
lcong48 (data);
printf ("after lcong48:\n");
- printf ("one %X\n", mrand48 ());
- printf ("two %X\n", mrand48 ());
- printf ("three %X\n", mrand48 ());
+ printf ("one %lX\n", mrand48 ());
+ printf ("two %lX\n", mrand48 ());
+ printf ("three %lX\n", mrand48 ());
return 0;
}
diff --git a/test/runtests.sh b/test/runtests.sh
index 908caa5..fcd3202 100644
--- a/test/runtests.sh
+++ b/test/runtests.sh
@@ -1,6 +1,6 @@
SUBDIRS="dirent inet stdio string stdlib time"
-TESTPROGRAMS="adjtime argv atexit bsearch byteswap calloc confstr empty flush fputc ffs fnmatch ftw fwrite getaddrinfo getenv getdelim getgrnam gethostbyaddr gethostbyname gethostbyname_r getmntent getopt getpwnam getservbyname getservbyport getusershell glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger md5_testharness memccpy memchr memcmp memrchr memusage mktime mmap_test pipe printf printftest protoent prototypes putenv pwent rand48 readdir regex select sendfile servent siglist speed spent sprintf sscanf stdarg strcasecmp strcmp strncat strncpy strptime strrchr strstr strtol sysconf sysenter ungetc waitpid"
+TESTPROGRAMS="adjtime argv atexit bsearch byteswap calloc confstr empty flush fputc ffs fnmatch ftw fwrite getaddrinfo getenv getdelim getgrnam gethostbyaddr gethostbyname gethostbyname_r getmntent getopt getpwnam getservbyname getservbyport getusershell glob grent hasmntopt hello iconv if_nameindex ltostr malloc-debugger math md5_testharness memccpy memchr memcmp memrchr memusage mktime mmap_test pipe printf printftest protoent prototypes putenv pwent rand48 readdir regex select sendfile servent siglist speed spent sprintf sscanf stdarg strcasecmp strcmp strncat strncpy strptime strrchr strstr strtol sysconf sysenter ungetc waitpid"
STDIN="read1"
PASS="getpass"
diff --git a/test/speed.c b/test/speed.c
index 674b9a8..22249a7 100644
--- a/test/speed.c
+++ b/test/speed.c
@@ -7,10 +7,10 @@ int main() {
int i;
time_t t;
- printf("%d\n", time(0));
+ printf("%ld\n", (long)time(0));
for (i=0; i<10000000; ++i)
t=time(0);
- printf("%d\n", time(0));
+ printf("%ld\n", (long)time(0));
return 0;
}
diff --git a/test/stdio/tstscanf.c b/test/stdio/tstscanf.c
index 44ddf49..0f55c3c 100644
--- a/test/stdio/tstscanf.c
+++ b/test/stdio/tstscanf.c
@@ -338,14 +338,14 @@ main (int argc, char **argv)
int res;
res = sscanf ("-InF", "%f", &value);
- if (res != 1 || isinf (value) != -1)
+ if (res != 1 || !isinf (value) || !(value<0))
{
fputs ("test failed!\n", stdout);
result = 1;
}
res = sscanf ("+InfiNiTY", "%f", &value);
- if (res != 1 || isinf (value) != 1)
+ if (res != 1 || !isinf (value) || !(value>0))
{
fputs ("test failed!\n", stdout);
result = 1;
diff --git a/test/stdlib/tst-malloc.c b/test/stdlib/tst-malloc.c
index 09fbb1f..4a491d9 100644
--- a/test/stdlib/tst-malloc.c
+++ b/test/stdlib/tst-malloc.c
@@ -21,13 +21,15 @@
#include <stdlib.h>
#include <stdio.h>
@ -185,9 +334,10 @@ diff -up dietlibc-0.31.20080409/test/stdlib/tst-malloc.c.testsuite dietlibc-0.31
p = realloc (p, 0);
if (p != NULL)
diff -up dietlibc-0.31.20080409/test/stdlib/tst-strtod.c.testsuite dietlibc-0.31.20080409/test/stdlib/tst-strtod.c
--- dietlibc-0.31.20080409/test/stdlib/tst-strtod.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/stdlib/tst-strtod.c 2008-04-14 00:41:17.000000000 +0200
diff --git a/test/stdlib/tst-strtod.c b/test/stdlib/tst-strtod.c
index 630a8fc..bacdca7 100644
--- a/test/stdlib/tst-strtod.c
+++ b/test/stdlib/tst-strtod.c
@@ -149,10 +149,10 @@ main (int argc, char ** argv)
}
@ -201,35 +351,29 @@ diff -up dietlibc-0.31.20080409/test/stdlib/tst-strtod.c.testsuite dietlibc-0.31
status = 1;
}
diff -up dietlibc-0.31.20080409/test/rand48.c.testsuite dietlibc-0.31.20080409/test/rand48.c
--- dietlibc-0.31.20080409/test/rand48.c.testsuite 2002-05-29 15:20:40.000000000 +0200
+++ dietlibc-0.31.20080409/test/rand48.c 2008-04-14 00:41:17.000000000 +0200
@@ -6,16 +6,16 @@ main (void)
{
static unsigned short data[7] = { 1, 2, 3, 4, 5, 6, 7 };
- printf ("one %X\n", mrand48 ());
- printf ("two %X\n", mrand48 ());
- printf ("three %X\n", mrand48 ());
+ printf ("one %lX\n", mrand48 ());
+ printf ("two %lX\n", mrand48 ());
+ printf ("three %lX\n", mrand48 ());
lcong48 (data);
printf ("after lcong48:\n");
- printf ("one %X\n", mrand48 ());
- printf ("two %X\n", mrand48 ());
- printf ("three %X\n", mrand48 ());
+ printf ("one %lX\n", mrand48 ());
+ printf ("two %lX\n", mrand48 ());
+ printf ("three %lX\n", mrand48 ());
diff --git a/test/sysenter.c b/test/sysenter.c
index a8fa3a8..3d85916 100644
--- a/test/sysenter.c
+++ b/test/sysenter.c
@@ -11,11 +11,11 @@ int main() {
int i;
for (i=0; environ[i]; ++i) ;
for (x=(struct elf_aux*)(environ+i+1); x->type; ++x) {
- printf("%d %x\n",x->type,x->value);
+ printf("%ld %lx\n",x->type,x->value);
if (x->type==AT_PAGESZ)
- printf("pagesize %d\n",x->value);
+ printf("pagesize %ld\n",x->value);
else if (x->type==AT_SYSINFO)
- printf("vsyscall %p\n",x->value);
+ printf("vsyscall %p\n",(void *)x->value);
}
return 0;
}
diff -up dietlibc-0.31.20080409/test/time/tst-strftime.c.testsuite dietlibc-0.31.20080409/test/time/tst-strftime.c
--- dietlibc-0.31.20080409/test/time/tst-strftime.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/time/tst-strftime.c 2008-04-14 00:41:17.000000000 +0200
diff --git a/test/time/tst-strftime.c b/test/time/tst-strftime.c
index e092e93..27db9a4 100644
--- a/test/time/tst-strftime.c
+++ b/test/time/tst-strftime.c
@@ -49,18 +49,18 @@ int main (void) {
if (res == 0)
@ -252,9 +396,10 @@ diff -up dietlibc-0.31.20080409/test/time/tst-strftime.c.testsuite dietlibc-0.31
free (buf);
}
diff -up dietlibc-0.31.20080409/test/time/tst-strptime.c.testsuite dietlibc-0.31.20080409/test/time/tst-strptime.c
--- dietlibc-0.31.20080409/test/time/tst-strptime.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/time/tst-strptime.c 2008-04-14 00:41:17.000000000 +0200
diff --git a/test/time/tst-strptime.c b/test/time/tst-strptime.c
index 6277ea6..2773180 100644
--- a/test/time/tst-strptime.c
+++ b/test/time/tst-strptime.c
@@ -41,10 +41,12 @@ static const struct
{ "C", "03/03/00", "%D", 5, 62, 2, 3 },
{ "C", "9/9/99", "%x", 4, 251, 8, 9 },
@ -311,86 +456,6 @@ diff -up dietlibc-0.31.20080409/test/time/tst-strptime.c.testsuite dietlibc-0.31
{
printf ("not all of `%s' read\n", day_tests[i].input);
result = 1;
diff -up dietlibc-0.31.20080409/test/mktime.c.testsuite dietlibc-0.31.20080409/test/mktime.c
--- dietlibc-0.31.20080409/test/mktime.c.testsuite 2004-03-27 01:47:00.000000000 +0100
+++ dietlibc-0.31.20080409/test/mktime.c 2008-04-14 00:41:17.000000000 +0200
@@ -9,15 +9,15 @@ int main() {
t.tm_mday=29;
t.tm_mon=2;
t.tm_year=100;
- printf("%d\n",mktime(&t));
+ printf("%ld\n",(long)mktime(&t));
t.tm_mday=1;
t.tm_mon=3;
t.tm_year=102;
- printf("%d\n",mktime(&t));
+ printf("%ld\n",(long)mktime(&t));
t.tm_mday=1;
t.tm_mon=6;
t.tm_year=102;
- printf("%d\n",mktime(&t));
+ printf("%ld\n",(long)mktime(&t));
return 0;
}
diff -up dietlibc-0.31.20080409/test/asprintf.c.testsuite dietlibc-0.31.20080409/test/asprintf.c
--- dietlibc-0.31.20080409/test/asprintf.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/asprintf.c 2008-04-14 00:41:17.000000000 +0200
@@ -13,7 +13,7 @@ int main(int argc, char **argv) {
assert(strlen(path) == asprintlen);
printf("%s\n", path);
- asprintlen=asprintf(&path, "/proc" "/%d/stat", strlen(argv[1]));
+ asprintlen=asprintf(&path, "/proc" "/%zu/stat", strlen(argv[1]));
assert(strlen(path) == asprintlen);
printf("%s\n", path);
diff -up /dev/null dietlibc-0.31.20080409/test/math.c
--- /dev/null 2008-03-18 07:40:22.289057188 +0100
+++ dietlibc-0.31.20080409/test/math.c 2008-04-14 00:46:45.000000000 +0200
@@ -0,0 +1,29 @@
+#include <math.h>
+#include <float.h>
+#include <assert.h>
+
+int main()
+{
+ extern int __isinf(double d);
+ extern int __isnan(double d);
+
+#if (__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3))
+ assert(__isinf(__builtin_inff()) == +1);
+ assert(__isinf(-__builtin_inff()) == -1);
+
+ assert(__isinf(__builtin_inf()) == +1);
+ assert(__isinf(-__builtin_inf()) == -1);
+
+ assert(__isnan(__builtin_nan("")));
+#endif
+
+ assert(__isinf((DBL_MAX * DBL_MAX)) == +1);
+ assert(__isinf(-(DBL_MAX * DBL_MAX)) == -1);
+
+ assert(isinf((DBL_MAX * DBL_MAX)));
+ assert(isinf(-(DBL_MAX * DBL_MAX)));
+
+ //assert(isnan(nan("")));
+
+ return 0;
+}
diff -up dietlibc-0.31.20080409/test/speed.c.testsuite dietlibc-0.31.20080409/test/speed.c
--- dietlibc-0.31.20080409/test/speed.c.testsuite 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080409/test/speed.c 2008-04-14 00:41:17.000000000 +0200
@@ -7,10 +7,10 @@ int main() {
int i;
time_t t;
- printf("%d\n", time(0));
+ printf("%ld\n", (long)time(0));
for (i=0; i<10000000; ++i)
t=time(0);
- printf("%d\n", time(0));
+ printf("%ld\n", (long)time(0));
return 0;
}
--
1.5.4.5

View file

@ -1,6 +1,21 @@
diff -up dietlibc-0.31.20080212/test/atexit.c.~1~ dietlibc-0.31.20080212/test/atexit.c
--- dietlibc-0.31.20080212/test/atexit.c.~1~ 2003-02-20 16:57:12.000000000 +0100
+++ dietlibc-0.31.20080212/test/atexit.c 2008-02-13 18:34:12.000000000 +0100
From b8de58754249c7f43c5959dc72c62e13851d45cb Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 19 Apr 2008 17:45:11 +0200
Subject: [PATCH] Use stdout instead of stderr in testsuite
This patches uses stdout instead stderr when giving out normal status
messages in the testsuite.
---
test/atexit.c | 2 +-
test/malloc-debugger.c | 2 +-
test/sendfile.c | 2 +-
test/waitpid.c | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/test/atexit.c b/test/atexit.c
index 709a3e4..79ee392 100644
--- a/test/atexit.c
+++ b/test/atexit.c
@@ -2,7 +2,7 @@
#include <unistd.h>
@ -10,19 +25,10 @@ diff -up dietlibc-0.31.20080212/test/atexit.c.~1~ dietlibc-0.31.20080212/test/at
}
int main() {
diff -up dietlibc-0.31.20080212/test/sendfile.c.~1~ dietlibc-0.31.20080212/test/sendfile.c
--- dietlibc-0.31.20080212/test/sendfile.c.~1~ 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080212/test/sendfile.c 2008-02-13 18:35:34.000000000 +0100
@@ -11,5 +11,5 @@ int main() {
printf("sendfile returned %d\n",ret);
-return 0;
+ return ret<0 ? 1 : 0;
}
diff -up dietlibc-0.31.20080212/test/malloc-debugger.c.~1~ dietlibc-0.31.20080212/test/malloc-debugger.c
--- dietlibc-0.31.20080212/test/malloc-debugger.c.~1~ 2003-02-20 16:57:13.000000000 +0100
+++ dietlibc-0.31.20080212/test/malloc-debugger.c 2008-02-13 18:34:27.000000000 +0100
diff --git a/test/malloc-debugger.c b/test/malloc-debugger.c
index 040196e..058807e 100644
--- a/test/malloc-debugger.c
+++ b/test/malloc-debugger.c
@@ -4,7 +4,7 @@
int main() {
char* c=malloc(13);
@ -32,9 +38,21 @@ diff -up dietlibc-0.31.20080212/test/malloc-debugger.c.~1~ dietlibc-0.31.2008021
c[0]=14;
// c[15]=0;
tmp=realloc(c,12345);
diff -up dietlibc-0.31.20080212/test/waitpid.c.~1~ dietlibc-0.31.20080212/test/waitpid.c
--- dietlibc-0.31.20080212/test/waitpid.c.~1~ 2003-12-15 14:07:42.000000000 +0100
+++ dietlibc-0.31.20080212/test/waitpid.c 2008-02-13 18:35:57.000000000 +0100
diff --git a/test/sendfile.c b/test/sendfile.c
index d43cdd2..28b3af5 100644
--- a/test/sendfile.c
+++ b/test/sendfile.c
@@ -11,5 +11,5 @@ int main() {
printf("sendfile returned %d\n",ret);
-return 0;
+ return ret<0 ? 1 : 0;
}
diff --git a/test/waitpid.c b/test/waitpid.c
index fe2cb5b..92c0b0e 100644
--- a/test/waitpid.c
+++ b/test/waitpid.c
@@ -11,7 +11,7 @@ int main() {
perror("fork");
_exit(1);
@ -44,3 +62,6 @@ diff -up dietlibc-0.31.20080212/test/waitpid.c.~1~ dietlibc-0.31.20080212/test/w
sleep(1);
_exit(23);
}
--
1.5.4.5