From: Kay Sievers Date: Tue, 6 Sep 2005 20:57:07 +0000 (+0200) Subject: klibc: update to version 1.1.1 X-Git-Tag: 174~2567 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=b2652e6b29c3d29766e1133c81612113084ee44a klibc: update to version 1.1.1 Signed-off-by: Kay Sievers --- diff --git a/klibc/MCONFIG b/klibc/MCONFIG index 1141b78d4..450e5c7f5 100644 --- a/klibc/MCONFIG +++ b/klibc/MCONFIG @@ -33,7 +33,7 @@ KRNLOBJ = $(SRCROOT)/linux KLIBCVER = -D__KLIBC__=$(shell cut -d. -f1 < $(SRCROOT)/version) \ -D__KLIBC_MINOR__=$(shell cut -d. -f2 < $(SRCROOT)/version) -ARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/) +ARCH = $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ -e s/parisc.*/parisc/) CC = $(CROSS)gcc LD = $(CROSS)ld KLIBSRC = $(SRCROOT)/klibc @@ -42,7 +42,7 @@ INCLUDE = -I$(SRCROOT)/include/arch/$(ARCH) \ -I$(SRCROOT)/include/bits$(BITSIZE) \ -I$(SRCROOT)/include \ -I$(KRNLOBJ)/include -I$(KRNLOBJ)/include2 -I$(KRNLSRC)/include -REQFLAGS = $(ARCHREQFLAGS) $(KLIBCVER) -nostdinc -iwithprefix include \ +REQFLAGS = $(ARCHREQFLAGS) $(KLIBCVER) -nostdlib -nostdinc -iwithprefix include \ $(INCLUDE) LDFLAGS = AR = $(CROSS)ar diff --git a/klibc/include/klibc/compiler.h b/klibc/include/klibc/compiler.h index ee697adf0..7ff6ff7d5 100644 --- a/klibc/include/klibc/compiler.h +++ b/klibc/include/klibc/compiler.h @@ -116,4 +116,8 @@ # define __bitwise #endif +/* Compiler pragma to make an alias symbol */ +#define __ALIAS(__t, __f, __p, __a) \ + __t __f __p __attribute__((weak, alias(#__a))); + #endif diff --git a/klibc/include/klibc/extern.h b/klibc/include/klibc/extern.h index f9c346721..8a73d1935 100644 --- a/klibc/include/klibc/extern.h +++ b/klibc/include/klibc/extern.h @@ -11,4 +11,6 @@ #define __extern extern #endif +#define __alias(x) __attribute__((weak, alias(x))) + #endif /* _KLIBC_EXTERN_H */ diff --git a/klibc/include/malloc.h b/klibc/include/malloc.h new file mode 100644 index 000000000..5beca8d06 --- /dev/null +++ b/klibc/include/malloc.h @@ -0,0 +1,21 @@ +/* + * malloc.h + * + * Apparently people haven't caught on to use , which is the + * standard place for this crap since the 1980's... + */ + +#ifndef _MALLOC_H +#define _MALLOC_H + +#include +#include +#include + +__extern void free(void *); + +__extern __mallocfunc void *malloc(size_t); +__extern __mallocfunc void *calloc(size_t, size_t); +__extern __mallocfunc void *realloc(void *, size_t); + +#endif /* _MALLOC_H */ diff --git a/klibc/include/stdlib.h b/klibc/include/stdlib.h index 54d45043f..17efc30e5 100644 --- a/klibc/include/stdlib.h +++ b/klibc/include/stdlib.h @@ -9,6 +9,8 @@ #include #include +#include + #define EXIT_FAILURE 1 #define EXIT_SUCCESS 0 @@ -28,7 +30,6 @@ __extern int atoi(const char *); __extern long atol(const char *); __extern long long atoll(const char *); __extern __noreturn exit(int); -__extern void free(void *); static __inline__ long labs(long __n) { return (__n < 0L) ? -__n : __n; } @@ -37,9 +38,6 @@ static __inline__ long long llabs(long long __n) { return (__n < 0LL) ? -__n : __n; } -__extern __mallocfunc void *malloc(size_t); -__extern __mallocfunc void *calloc(size_t, size_t); -__extern __mallocfunc void *realloc(void *, size_t); __extern long strtol(const char *, char **, int); __extern long long strtoll(const char *, char **, int); __extern unsigned long strtoul(const char *, char **, int); diff --git a/klibc/include/string.h b/klibc/include/string.h index 5608a3c96..319be4eb8 100644 --- a/klibc/include/string.h +++ b/klibc/include/string.h @@ -21,7 +21,9 @@ __extern int strcasecmp(const char *, const char *); __extern int strncasecmp(const char *, const char *, size_t); __extern char *strcat(char *, const char *); __extern char *strchr(const char *, int); +__extern char *index(const char *, int); __extern char *strrchr(const char *, int); +__extern char *rindex(const char *, int); __extern int strcmp(const char *, const char *); __extern char *strcpy(char *, const char *); __extern size_t strcspn(const char *, const char *); diff --git a/klibc/include/sys/inotify.h b/klibc/include/sys/inotify.h new file mode 100644 index 000000000..74fc71419 --- /dev/null +++ b/klibc/include/sys/inotify.h @@ -0,0 +1,16 @@ +/* + * sys/inotify.h + */ + +#ifndef _SYS_INOTIFY_H +#define _SYS_INOTIFY_H + +#include +#include +#include + +__extern int inotify_init(void); +__extern int inotify_add_watch(int, const char *, __u32); +__extern int inotify_rm_watch(int, __u32); + +#endif /* _SYS_INOTIFY_H */ diff --git a/klibc/klibc.spec.in b/klibc/klibc.spec.in index cab496b91..eef5dbf9d 100644 --- a/klibc/klibc.spec.in +++ b/klibc/klibc.spec.in @@ -7,7 +7,7 @@ Group: Development/Libraries URL: http://www.zytor.com/mailman/listinfo/klibc Source: http://www.kernel.org/pub/linux/libs/klibc-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-buildroot -BuildRequires: kernel >= 2.6.0 +BuildRequires: kernel >= 2.6.0, kernel-devel Packager: H. Peter Anvin Prefix: /usr Vendor: Starving Linux Artists @@ -44,7 +44,7 @@ embedded systems. %prep %setup -q -cp -dRs /lib/modules/`uname -r`/build ./linux +cp -dRs /lib/modules/`uname -r`/build/ ./linux # Shouldn't need this when getting the build tree from /lib/modules # make -C linux defconfig ARCH=%{_target_cpu} # make -C linux prepare ARCH=%{_target_cpu} diff --git a/klibc/klibc/SYSCALLS.def b/klibc/klibc/SYSCALLS.def index 11d8c9a47..b78919b13 100644 --- a/klibc/klibc/SYSCALLS.def +++ b/klibc/klibc/SYSCALLS.def @@ -114,6 +114,9 @@ int lchown32,lchown::lchown(const char *, uid_t, gid_t) int getcwd::__getcwd(char *, size_t) int utime(const char *, const struct utimbuf *) int utimes(const char *, const struct timeval *) + int inotify_init(void) + int inotify_add_watch(int, const char *, __u32) + int inotify_rm_watch(int, __u32) ; ; I/O operations diff --git a/klibc/klibc/execvpe.c b/klibc/klibc/execvpe.c index afd791ab4..fcd5b6fd4 100644 --- a/klibc/klibc/execvpe.c +++ b/klibc/klibc/execvpe.c @@ -9,7 +9,9 @@ * Since execlpe() and execvpe() aren't in POSIX, nor in glibc, * I have followed QNX precedent in the implementation of the PATH: * the PATH that is used is the one in the current environment, not - * in the new environment. + * in the new environment. Otherwise it would be impossible to pass + * a different PATH to the new process than the one one would want to + * use to search. */ #include diff --git a/klibc/klibc/strchr.c b/klibc/klibc/strchr.c index 192f83600..f657095c6 100644 --- a/klibc/klibc/strchr.c +++ b/klibc/klibc/strchr.c @@ -3,6 +3,7 @@ */ #include +#include char *strchr(const char *s, int c) { @@ -14,3 +15,5 @@ char *strchr(const char *s, int c) return (char *)s; } + +__ALIAS(char *, index, (const char *, int), strchr) diff --git a/klibc/klibc/strrchr.c b/klibc/klibc/strrchr.c index 3b4246405..5a0cbe386 100644 --- a/klibc/klibc/strrchr.c +++ b/klibc/klibc/strrchr.c @@ -3,6 +3,7 @@ */ #include +#include char *strrchr(const char *s, int c) { @@ -16,3 +17,5 @@ char *strrchr(const char *s, int c) return (char *)found; } + +__ALIAS(char *, rindex, (const char *, int), strrchr) diff --git a/klibc/version b/klibc/version index 5b09c67c2..45a1b3f44 100644 --- a/klibc/version +++ b/klibc/version @@ -1 +1 @@ -1.0.14 +1.1.2