diff options
| -rw-r--r-- | debian/ldconfig.1 | 28 | ||||
| -rw-r--r-- | debian/ldd.1 | 20 | ||||
| -rwxr-xr-x | debian/rules | 7 | ||||
| -rw-r--r-- | docs/uClibc_vs_SuSv3.txt | 3 | ||||
| -rw-r--r-- | docs/uclibc.org/news.html | 63 | ||||
| -rw-r--r-- | docs/uclibc.org/oldnews.html | 34 | ||||
| -rw-r--r-- | extra/Configs/Config.in | 9 | ||||
| -rw-r--r-- | ldso/ldso/x86_64/dl-startup.h | 6 | ||||
| -rw-r--r-- | libc/inet/rpc/clnt_generic.c | 29 | ||||
| -rw-r--r-- | libc/inet/rpc/getrpcent.c | 191 | ||||
| -rw-r--r-- | libc/inet/rpc/rcmd.c | 25 | ||||
| -rw-r--r-- | libc/stdlib/Makefile | 4 | ||||
| -rw-r--r-- | libc/string/wstring.c | 1 | ||||
| -rw-r--r-- | libc/sysdeps/linux/common/create_module.c | 2 | ||||
| -rw-r--r-- | libc/sysdeps/linux/powerpc/Makefile | 4 | ||||
| -rw-r--r-- | test/rpc/getrpcent_r.c | 3 | ||||
| -rw-r--r-- | utils/ldd.c | 2 | 
17 files changed, 255 insertions, 176 deletions
| diff --git a/debian/ldconfig.1 b/debian/ldconfig.1 deleted file mode 100644 index 2fb31b553..000000000 --- a/debian/ldconfig.1 +++ /dev/null @@ -1,28 +0,0 @@ -.TH UCLIBC-GCC 1 -.SH NAME -uclibc-gcc \- Cross-compiler for uClibc -.SH SYNOPSIS -.B uclibc-gcc -[ -.B options -] -.br -.B uclibc-ld -[ -.B options -] -.SH DESCRIPTION -These programs are wrappers for -.B gcc -and -.B ld. -.SH BUGS -Probably. - -.SH AUTHORS -Manuel Nova -.br -Manual page written by David Schleef <ds@schleef.org> -.SH SEE ALSO -.BR gcc (1), -.BR ld (1) diff --git a/debian/ldd.1 b/debian/ldd.1 deleted file mode 100644 index 6e391fca8..000000000 --- a/debian/ldd.1 +++ /dev/null @@ -1,20 +0,0 @@ -.TH UCLIBC-LDD 1 -.SH NAME -uclibc-ldd \- Print shared library dependencies -.SH SYNOPSIS -.B uclibc-ldd -[ -.B options -] -.B file... -.SH DESCRIPTION -Prints shared library dependencies. -.SH BUGS -Maybe. - -.SH AUTHORS -Erik Andersen <andersen@codepoet.org> -.br -Manual page written by David Schleef <ds@schleef.org> -.SH SEE ALSO -.BR ldd (1) diff --git a/debian/rules b/debian/rules index 93c5f9b53..73c69945a 100755 --- a/debian/rules +++ b/debian/rules @@ -133,10 +133,11 @@ install: build  	$(MAKE) install install_utils PREFIX=`pwd`/debian/tmp  	install -d debian/tmp/usr/share/man/man1 -	install -m 644 debian/ldd.1 \ +	install -m 644 docs/man/ldd.1 \  	  debian/tmp/usr/share/man/man1/ldd.1 -	install -m 644 debian/ldconfig.1 \ -	  debian/tmp/usr/share/man/man1/ldconfig.1 +	install -d debian/tmp/usr/share/man/man8 +	install -m 644 docs/man/ldconfig.8 \ +	  debian/tmp/usr/share/man/man8/ldconfig.8  # Build architecture-independent files here. diff --git a/docs/uClibc_vs_SuSv3.txt b/docs/uClibc_vs_SuSv3.txt index 35c0ea9e2..b83f6d4ef 100644 --- a/docs/uClibc_vs_SuSv3.txt +++ b/docs/uClibc_vs_SuSv3.txt @@ -93,9 +93,8 @@ stropts.h: (depends on XSR) isastream, {g,s}et{,p}msg, fattach, fdetach  sys/mman.h: posix_madvice (depends on ADV); posix_mem_offset,           posix_typed_mem_getinfo, posix_typed_mem_open (depend on TYM);           shm_open, shm_unlink (depend on SHM) -fcntl.h: posix_fadvice, posix_fallocate (depend on ADV) +fcntl.h: posix_fallocate (depend on ADV)  signal.h: sigqueue (depends on RTS) -stdlib.h: posix_memalign (depends on ADV)  Unimplemented mathematical interfaces: diff --git a/docs/uclibc.org/news.html b/docs/uclibc.org/news.html index d6eca9bef..d0a047efb 100644 --- a/docs/uclibc.org/news.html +++ b/docs/uclibc.org/news.html @@ -3,56 +3,49 @@  <ul> -  <li><b>13 January 2005 -- Bug and Patch Tracking</b><p> +    <li> <b>17 August 2005, uClibc 0.9.28 Released</b> +    <br> -    Bug reports sometimes get lost when posted to the mailing list.  The -    developers of uClibc are busy people, and have only so much they can keep -    in their brains at a time. In my case, I'm lucky if I can remember my own -    name, much less a bug report posted last week... To prevent your bug report -    from getting lost, if you find a bug in uClibc, please use the -    <a href="http://bugs.uclibc.org/">shiny new Bug and Patch Tracking System</a> -    to post all the gory details. +    CodePoet Consulting is pleased to announce the release of uClibc 0.9.28. +    You are probably used to this by now, but this release is NOT binary +    compatible with uClibc 0.9.27 or any earlier release, so be prepared to +    recompile your software if you are still using an old version of uClibc.      <p> -    The same applies to patches... Regardless of whether your patch -    is a bug fix or adds spiffy new features, please post your patch -    to the Bug and Patch Tracking System to make certain it is -    properly considered. - +    Updated uClibc development systems built using uClibc 0.9.28, along +    with the <a href="http://buildroot.uclibc.org/">uClibc buildroot</a> +    and source code used to compile these development systems will be released +    later this evening, along with +    <a href="http://ltp.sourceforge.net/">Linux Test Project test suite</a> +    results demonstrating how uClibc is doing.  Contributions of LTP test +    suite run results using uClibc are welcome...      <p> -    <li> <b>12 January 2005, uClibc 0.9.27 Released</b> -    <br> -    CodePoet Consulting is pleased to announce the release of -    uClibc 0.9.27.  Release highlights include a new stdio core, -    Linux 2.6.x support, a much improved shared library loader, -    support for several new architectures, and of course fixes for -    the usual pile of bugs. +    As usual the +    <a href="http://www.uclibc.org/downloads/uClibc-0.9.28.tar.bz2">source code for this release</a> +    is available <a href="http://www.uclibc.org/downloads/">here</a>. -    <p> -    Due primarily to the stdio changes, this release is NOT binary -    compatible with uClibc 0.9.26 or any earlier release, so be -    prepared to recompile your software if you are still using an -    old version of uClibc.  Sorry for the pain...      <p> +    <li><b>13 January 2005 -- Bug and Patch Tracking</b><p> -    Updated uClibc development systems using uClibc 0.9.27, along -    with the uClibc buildroot and source code used to compile these -    development systems, have also been released and are available -    from the uclibc.org downloads area. +    Bug reports sometimes get lost when posted to the mailing list.  The +    developers of uClibc are busy people, and have only so much they can keep +    in their brains at a time. In my case, I'm lucky if I can remember my own +    name, much less a bug report posted last week... To prevent your bug report +    from getting lost, if you find a bug in uClibc, please use the +    <a href="http://bugs.uclibc.org/">shiny new Bug and Patch Tracking System</a> +    to post all the gory details.      <p> -    As usual, the -    <a href="http://www.uclibc.org/downloads/Changelog">Changelog</a>, -    <a href="http://www.uclibc.org/downloads/Changelog.full">detailed changelog</a>, -    and <a href="http://www.uclibc.org/downloads/uClibc-0.9.27.tar.bz2">source code for this release</a> -    are available <a href="http://www.uclibc.org/downloads/">here</a>. - +    The same applies to patches... Regardless of whether your patch +    is a bug fix or adds spiffy new features, please post your patch +    to the Bug and Patch Tracking System to make certain it is +    properly considered.      <p> <li> <b>Old News</b> diff --git a/docs/uclibc.org/oldnews.html b/docs/uclibc.org/oldnews.html index 06af6254c..655e291df 100644 --- a/docs/uclibc.org/oldnews.html +++ b/docs/uclibc.org/oldnews.html @@ -4,6 +4,40 @@  <ul> +    <li> <b>12 January 2005, uClibc 0.9.27 Released</b> +    <br> + +    CodePoet Consulting is pleased to announce the release of +    uClibc 0.9.27.  Release highlights include a new stdio core, +    Linux 2.6.x support, a much improved shared library loader, +    support for several new architectures, and of course fixes for +    the usual pile of bugs. + +    <p> + +    Due primarily to the stdio changes, this release is NOT binary +    compatible with uClibc 0.9.26 or any earlier release, so be +    prepared to recompile your software if you are still using an +    old version of uClibc.  Sorry for the pain... + +    <p> + +    Updated uClibc development systems using uClibc 0.9.27, along +    with the uClibc buildroot and source code used to compile these +    development systems, have also been released and are available +    from the uclibc.org downloads area. + +    <p> + +    As usual, the +    <a href="http://www.uclibc.org/downloads/Changelog">Changelog</a>, +    <a href="http://www.uclibc.org/downloads/Changelog.full">detailed changelog</a>, +    and <a href="http://www.uclibc.org/downloads/uClibc-0.9.27.tar.bz2">source code for this release</a> +    are available <a href="http://www.uclibc.org/downloads/">here</a>. + + + +    <p>      <li> <b>20 April 2004, uClibc 0.9.26 based Debian uwoody</b>      <br> diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index dbd6514b2..d0cf2da19 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -573,6 +573,15 @@ config UCLIBC_HAS_FULL_RPC  	  nfs mounts to work.  If you find you need the rest of the RPC stuff,  	  then enable this option.  Most people can safely answer N. +config UCLIBC_HAS_REENTRANT_RPC +	bool "Reentrant RPC support" +	depends on UCLIBC_HAS_RPC +	default y if !HAVE_SHARED +	help +	  Most packages utilize the normal (non-reentrant) RPC functions, but  +	  some (like exportfs from nfs-utils) need these reentrant versions.   +	  Most people can safely answer N. +  endmenu diff --git a/ldso/ldso/x86_64/dl-startup.h b/ldso/ldso/x86_64/dl-startup.h index eb2e0b7f4..94d7fd41e 100644 --- a/ldso/ldso/x86_64/dl-startup.h +++ b/ldso/ldso/x86_64/dl-startup.h @@ -42,10 +42,10 @@ asm(  /* Handle relocation of the symbols in the dynamic loader. */  static __always_inline -void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, unsigned long *reloc_addr, -	unsigned long symbol_addr, unsigned long load_addr, Elf64_Sym *sym) +void PERFORM_BOOTSTRAP_RELOC(ELF_RELOC *rpnt, ElfW(Addr) *reloc_addr, +	ElfW(Addr) symbol_addr, ElfW(Addr) load_addr, ElfW(Sym) *sym)  { -	switch (ELF64_R_TYPE(rpnt->r_info)) { +	switch (ELF_R_TYPE(rpnt->r_info)) {  		case R_X86_64_GLOB_DAT:  		case R_X86_64_JUMP_SLOT:  			*reloc_addr = symbol_addr + rpnt->r_addend; diff --git a/libc/inet/rpc/clnt_generic.c b/libc/inet/rpc/clnt_generic.c index 349c0f62d..c8fe545c3 100644 --- a/libc/inet/rpc/clnt_generic.c +++ b/libc/inet/rpc/clnt_generic.c @@ -53,7 +53,9 @@ clnt_create (const char *hostname, u_long prog, u_long vers,    struct hostent hostbuf, *h;    size_t hstbuflen;    char *hsttmpbuf; -  struct protoent *p; +  struct protoent protobuf, *p; +  size_t prtbuflen; +  char *prttmpbuf;    struct sockaddr_in sin;    struct sockaddr_un sun;    int sock; @@ -113,14 +115,23 @@ clnt_create (const char *hostname, u_long prog, u_long vers,    memset (sin.sin_zero, 0, sizeof (sin.sin_zero));    memcpy ((char *) &sin.sin_addr, h->h_addr, h->h_length); -#warning getprotobyname is not reentrant...  Add getprotobyname_r -  p = getprotobyname(proto); -  if (p == NULL) { -      struct rpc_createerr *ce = &get_rpc_createerr (); -      ce->cf_stat = RPC_UNKNOWNPROTO; -      ce->cf_error.re_errno = EPFNOSUPPORT; -      return NULL; -  } +  prtbuflen = 1024; +  prttmpbuf = alloca (prtbuflen); +  while (getprotobyname_r (proto, &protobuf, prttmpbuf, prtbuflen, &p) != 0 +	 || p == NULL) +	if (errno != ERANGE) +      { +	struct rpc_createerr *ce = &get_rpc_createerr (); +	ce->cf_stat = RPC_UNKNOWNPROTO; +	ce->cf_error.re_errno = EPFNOSUPPORT; +	return NULL; +      } +    else +      { +	/* Enlarge the buffer.  */ +	prtbuflen *= 2; +	prttmpbuf = alloca (prtbuflen); +      }    sock = RPC_ANYSOCK;    switch (p->p_proto) diff --git a/libc/inet/rpc/getrpcent.c b/libc/inet/rpc/getrpcent.c index e290449c0..b796d856d 100644 --- a/libc/inet/rpc/getrpcent.c +++ b/libc/inet/rpc/getrpcent.c @@ -42,6 +42,7 @@  #include <netdb.h>  #include <sys/socket.h>  #include <arpa/inet.h> +#include <errno.h>  /*   * Internet version. @@ -58,46 +59,37 @@ static struct rpcdata {  	char *domain;  } *rpcdata; -static struct rpcent *interpret(const char *val, int len); -  static char RPCDB[] = "/etc/rpc";  static struct rpcdata *_rpcdata(void)  {  	register struct rpcdata *d = rpcdata; -	if (d == 0) { +	if (d == NULL) {  		d = (struct rpcdata *) calloc(1, sizeof(struct rpcdata));  		rpcdata = d;  	} -	return (d); +	return d;  } -struct rpcent *getrpcbynumber(number) -register int number; +struct rpcent *getrpcbynumber(register int number)  {  	register struct rpcdata *d = _rpcdata(); -	register struct rpcent *p; +	register struct rpcent *rpc; -	if (d == 0) -		return (0); +	if (d == NULL) +		return NULL;  	setrpcent(0); -	while ((p = getrpcent())) { -		if (p->r_number == number) +	while ((rpc = getrpcent())) { +		if (rpc->r_number == number)  			break;  	}  	endrpcent(); -	return (p); +	return rpc;  } -struct rpcent * -#ifdef __linux__ -getrpcbyname(const char *name) -#else -getrpcbyname(name) -char *name; -#endif +struct rpcent *getrpcbyname(const char *name)  {  	struct rpcent *rpc;  	char **rp; @@ -105,25 +97,21 @@ char *name;  	setrpcent(0);  	while ((rpc = getrpcent())) {  		if (strcmp(rpc->r_name, name) == 0) -			return (rpc); +			return rpc;  		for (rp = rpc->r_aliases; *rp != NULL; rp++) {  			if (strcmp(*rp, name) == 0) -				return (rpc); +				return rpc;  		}  	}  	endrpcent(); -	return (NULL); +	return NULL;  } -#ifdef __linux__ -void -#endif -setrpcent(f) -int f; +void setrpcent(int f)  {  	register struct rpcdata *d = _rpcdata(); -	if (d == 0) +	if (d == NULL)  		return;  	if (d->rpcf == NULL)  		d->rpcf = fopen(RPCDB, "r"); @@ -135,36 +123,42 @@ int f;  	d->stayopen |= f;  } -#ifdef __linux__ -void -#endif -endrpcent() +void endrpcent()  {  	register struct rpcdata *d = _rpcdata(); -	if (d == 0) +	if (d == NULL)  		return; -	if (d->current && !d->stayopen) { +	if (d->stayopen) +		return; +	if (d->current) {  		free(d->current);  		d->current = NULL;  	} -	if (d->rpcf && !d->stayopen) { +	if (d->rpcf) {  		fclose(d->rpcf);  		d->rpcf = NULL;  	}  } +static struct rpcent *interpret(struct rpcdata *); + +static struct rpcent *__get_next_rpcent(struct rpcdata *d) +{ +	if (fgets(d->line, BUFSIZ, d->rpcf) == NULL) +		return NULL; +	return interpret(d); +} +  struct rpcent *getrpcent()  {  	register struct rpcdata *d = _rpcdata(); -	if (d == 0) -		return (NULL); +	if (d == NULL) +		return NULL;  	if (d->rpcf == NULL && (d->rpcf = fopen(RPCDB, "r")) == NULL) -		return (NULL); -	if (fgets(d->line, BUFSIZ, d->rpcf) == NULL) -		return (NULL); -	return interpret(d->line, strlen(d->line)); +		return NULL; +	return __get_next_rpcent(d);  }  #ifdef __linux__ @@ -184,37 +178,33 @@ static char *firstwhite(char *s)  }  #endif -static struct rpcent *interpret(const char *val, int len) +static struct rpcent *interpret(register struct rpcdata *d)  { -	register struct rpcdata *d = _rpcdata();  	char *p;  	register char *cp, **q; -	if (d == 0) -		return NULL; -	strncpy(d->line, val, len);  	p = d->line; -	d->line[len] = '\n'; +	d->line[strlen(p)-1] = '\n';  	if (*p == '#') -		return (getrpcent()); +		return __get_next_rpcent(d);  	cp = index(p, '#');  	if (cp == NULL) {  		cp = index(p, '\n');  		if (cp == NULL) -			return (getrpcent()); +			return __get_next_rpcent(d);  	}  	*cp = '\0';  #ifdef __linux__  	if ((cp = firstwhite(p)))  		*cp++ = 0;  	else -		return (getrpcent()); +		return __get_next_rpcent(d);  #else  	cp = index(p, ' ');  	if (cp == NULL) {  		cp = index(p, '\t');  		if (cp == NULL) -			return (getrpcent()); +			return __get_next_rpcent(d);  	}  	*cp++ = '\0';  #endif @@ -259,5 +249,102 @@ static struct rpcent *interpret(const char *val, int len)  #endif  	}  	*q = NULL; -	return (&d->rpc); +	return &d->rpc; +} + +#if defined(__UCLIBC_HAS_REENTRANT_RPC__) + +#if defined(__UCLIBC_HAS_THREADS__) +# include <pthread.h> +static pthread_mutex_t rpcdata_lock = PTHREAD_MUTEX_INITIALIZER; +# define LOCK    __pthread_mutex_lock(&rpcdata_lock) +# define UNLOCK  __pthread_mutex_unlock(&rpcdata_lock); +#else +# define LOCK +# define UNLOCK +#endif + +static int __copy_rpcent(struct rpcent *r, struct rpcent *result_buf, char *buffer,  +		size_t buflen, struct rpcent **result) +{ +	size_t i, s; + +	*result = NULL; + +	if (!r) +		return ENOENT; + +	/* copy the struct from the shared mem */ +	memset(result_buf, 0x00, sizeof(*result_buf)); +	memset(buffer, 0x00, buflen); + +	result_buf->r_number = r->r_number; + +	/* copy the aliases ... need to not only copy the alias strings,  +	 * but the array of pointers to the alias strings */ +	i = 0; +	while (r->r_aliases[i++]) ; + +	s = i-- * sizeof(char*); +	if (buflen < s) +		goto err_out; +	result_buf->r_aliases = (char**)buffer; +	buffer += s; +	buflen -= s; + +	while (i-- > 0) { +		s = strlen(r->r_aliases[i]) + 1; +		if (buflen < s) +			goto err_out; +		result_buf->r_aliases[i] = buffer; +		buffer += s; +		buflen -= s; +		memcpy(result_buf->r_aliases[i], r->r_aliases[i], s); +	} + +	/* copy the name */ +	i = strlen(r->r_name); +	if (buflen <= i) +		goto err_out; +	result_buf->r_name = buffer; +	memcpy(result_buf->r_name, r->r_name, i); + +	/* that was a hoot eh ? */ +	*result = result_buf; + +	return 0; +err_out: +	return ERANGE; +} + +int getrpcbynumber_r(int number, struct rpcent *result_buf, char *buffer, +		size_t buflen, struct rpcent **result) +{ +	int ret; +	LOCK; +	ret = __copy_rpcent(getrpcbynumber(number), result_buf, buffer, buflen, result); +	UNLOCK; +	return ret; +} + +int getrpcbyname_r(const char *name, struct rpcent *result_buf, char *buffer, +		size_t buflen, struct rpcent **result) +{ +	int ret; +	LOCK; +	ret = __copy_rpcent(getrpcbyname(name), result_buf, buffer, buflen, result); +	UNLOCK; +	return ret; +} + +int getrpcent_r(struct rpcent *result_buf, char *buffer,  +		size_t buflen, struct rpcent **result) +{ +	int ret; +	LOCK; +	ret = __copy_rpcent(getrpcent(), result_buf, buffer, buflen, result); +	UNLOCK; +	return ret;  } + +#endif /* __UCLIBC_HAS_REENTRANT_RPC__ */ diff --git a/libc/inet/rpc/rcmd.c b/libc/inet/rpc/rcmd.c index cf839f4c6..af0e2e17a 100644 --- a/libc/inet/rpc/rcmd.c +++ b/libc/inet/rpc/rcmd.c @@ -57,11 +57,6 @@ static char sccsid[] = "@(#)rcmd.c	8.3 (Berkeley) 3/26/94";  #include <netinet/in.h>  #include <arpa/inet.h> -#ifdef __UCLIBC_HAS_THREADS__ -#undef __UCLIBC_HAS_THREADS__ -#warning FIXME I am not reentrant yet... -#endif -  /* some forward declarations */  static int __ivaliduser2(FILE *hostf, u_int32_t raddr, @@ -76,13 +71,13 @@ int rcmd(ahost, rport, locuser, remuser, cmd, fd2p)       const char *locuser, *remuser, *cmd;       int *fd2p;  { -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  	int herr; -        struct hostent hostbuf; +	struct hostent hostbuf;  	size_t hstbuflen;  	char *tmphstbuf;  #endif -        struct hostent *hp; +	struct hostent *hp;  	struct sockaddr_in sin, from;  	struct pollfd pfd[2];  	int32_t oldmask; @@ -92,7 +87,7 @@ int rcmd(ahost, rport, locuser, remuser, cmd, fd2p)  	pid = getpid(); -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  	hstbuflen = 1024;  #ifdef __ARCH_HAS_MMU__  	tmphstbuf = alloca (hstbuflen); @@ -299,14 +294,14 @@ int ruserok(rhost, superuser, ruser, luser)          struct hostent *hp;  	u_int32_t addr;  	char **ap; -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  	size_t buflen;  	char *buffer;  	int herr;  	struct hostent hostbuf;  #endif -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  	buflen = 1024;  #ifdef __ARCH_HAS_MMU__  	buffer = alloca (buflen); @@ -432,7 +427,7 @@ iruserok2 (raddr, superuser, ruser, luser, rhost)  		size_t dirlen;  		uid_t uid; -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  		size_t buflen = sysconf (_SC_GETPW_R_SIZE_MAX);  		struct passwd pwdbuf;  #ifdef __ARCH_HAS_MMU__ @@ -515,7 +510,7 @@ __icheckhost (u_int32_t raddr, char *lhost, const char *rhost)  	int negate=1;    /* Multiply return with this to get -1 instead of 1 */  	char **pp; -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  	int save_errno;  	size_t buflen;  	char *buffer; @@ -545,7 +540,7 @@ __icheckhost (u_int32_t raddr, char *lhost, const char *rhost)  		return negate * (! (raddr ^ laddr));  	/* Better be a hostname. */ -#ifdef __UCLIBC_HAS_THREADS__ +#ifdef __UCLIBC_HAS_REENTRANT_RPC__  	buflen = 1024;  	buffer = malloc(buflen);  	save_errno = errno; @@ -559,7 +554,7 @@ __icheckhost (u_int32_t raddr, char *lhost, const char *rhost)  	__set_errno (save_errno);  #else  	hp = gethostbyname(lhost); -#endif /* __UCLIBC_HAS_THREADS__ */ +#endif /* __UCLIBC_HAS_REENTRANT_RPC__ */  	if (hp == NULL)  		return 0; diff --git a/libc/stdlib/Makefile b/libc/stdlib/Makefile index 5a3ffe631..40d03521f 100644 --- a/libc/stdlib/Makefile +++ b/libc/stdlib/Makefile @@ -1,7 +1,7 @@  # Makefile for uClibc  #  # Copyright (C) 2000 by Lineo, inc. -# Copyright (C) 2000,2001 Erik Andersen <andersen@uclibc.org> +# Copyright (C) 2000-2005 Erik Andersen <andersen@uclibc.org>  #  # This program is free software; you can redistribute it and/or modify it under  # the terms of the GNU Library General Public License as published by the Free @@ -86,7 +86,7 @@ CSRC =	abort.c getenv.c mkdtemp.c mktemp.c realpath.c mkstemp.c mkstemp64.c \  	getpt.c ptsname.c grantpt.c unlockpt.c gcvt.c drand48-iter.c jrand48.c \  	jrand48_r.c lrand48.c lrand48_r.c mrand48.c mrand48_r.c nrand48.c \  	nrand48_r.c rand_r.c srand48.c srand48_r.c seed48.c seed48_r.c \ -	valloc.c +	valloc.c posix_memalign.c  ifeq ($(UCLIBC_HAS_FLOATS),y)  	CSRC += drand48.c drand48_r.c erand48.c erand48_r.c  endif diff --git a/libc/string/wstring.c b/libc/string/wstring.c index acf1a2b0a..6f54ae615 100644 --- a/libc/string/wstring.c +++ b/libc/string/wstring.c @@ -1572,7 +1572,6 @@ int __xpg_strerror_r(int errnum, char *strerrbuf, size_t buflen)  #ifdef L___glibc_strerror_r  weak_alias(__glibc_strerror_r,__strerror_r); -weak_alias(__glibc_strerror_r,_glibc_strerror_r); /* for 0.9.27 compat ... remove after 0.9.28 */  char *__glibc_strerror_r(int errnum, char *strerrbuf, size_t buflen)  { diff --git a/libc/sysdeps/linux/common/create_module.c b/libc/sysdeps/linux/common/create_module.c index e1a4cfb04..e37f8e804 100644 --- a/libc/sysdeps/linux/common/create_module.c +++ b/libc/sysdeps/linux/common/create_module.c @@ -31,7 +31,7 @@  #ifdef __NR_create_module -#if defined(__i386__) || defined(__m68k__) || defined(__arm__) || defined(__cris__) || defined(__i960__) +#if defined(__i386__) || defined(__m68k__) || defined(__arm__) || defined(__thumb__) || defined(__cris__) || defined(__i960__)  #define __NR___create_module  __NR_create_module  #ifdef __STR_NR_create_module  #define __STR_NR___create_module  __STR_NR_create_module diff --git a/libc/sysdeps/linux/powerpc/Makefile b/libc/sysdeps/linux/powerpc/Makefile index eb212bac0..4c345c00f 100644 --- a/libc/sysdeps/linux/powerpc/Makefile +++ b/libc/sysdeps/linux/powerpc/Makefile @@ -25,10 +25,10 @@ SCRT_OBJ = $(patsubst %,S%, $(CRT_OBJ))  CTOR_TARGETS=$(TOPDIR)lib/crti.o $(TOPDIR)lib/crtn.o  SSRC=__longjmp.S setjmp.S bsd-setjmp.S bsd-_setjmp.S brk.S \ -	clone.S __uClibc_syscall.S syscall.S +	clone.S __uClibc_syscall.S syscall.S vfork.S  SOBJS=$(patsubst %.S,%.o, $(SSRC)) -CSRC=mmap.c vfork.c __syscall_error.c pread_write.c ioctl.c +CSRC=mmap.c __syscall_error.c pread_write.c ioctl.c  COBJS=$(patsubst %.c,%.o, $(CSRC))  OBJS=$(SOBJS) $(COBJS) diff --git a/test/rpc/getrpcent_r.c b/test/rpc/getrpcent_r.c index 29cd5c278..708deba10 100644 --- a/test/rpc/getrpcent_r.c +++ b/test/rpc/getrpcent_r.c @@ -5,9 +5,8 @@  int main(int argc, char *argv[])  {  	int ret; -	char rpcdata[10024]; +	char rpcdata[1024];  	struct rpcent rpcbuf, *ent; -memset(rpcdata, 0x00, sizeof(rpcdata));  	while ((ret = getrpcent_r(&rpcbuf, rpcdata, sizeof(rpcdata), &ent)) == 0) {  		printf("%s: %i", ent->r_name, ent->r_number); diff --git a/utils/ldd.c b/utils/ldd.c index a4877e31a..0dc12ad01 100644 --- a/utils/ldd.c +++ b/utils/ldd.c @@ -51,7 +51,7 @@  #include <dmalloc.h>  #endif -#if defined(__arm__) +#if defined(__arm__) || defined(__thumb__)  #define MATCH_MACHINE(x) (x == EM_ARM)  #define ELFCLASSM	ELFCLASS32  #endif | 
