about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--linuxthreads/ChangeLog5
-rw-r--r--linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h6
-rw-r--r--nss/getXXbyYY_r.c10
-rw-r--r--sysdeps/posix/getaddrinfo.c5
-rw-r--r--sysdeps/powerpc/powerpc64/dl-machine.h22
-rw-r--r--sysdeps/powerpc/powerpc64/sysdep.h18
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S5
8 files changed, 61 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index d43e3b6146..3e68119279 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
 2003-06-12  Ulrich Drepper  <drepper@redhat.com>
 
+	* sysdeps/posix/getaddrinfo.c (gaih_inet): Set no_inet6_date alse
+	if only PF_INET address is needed.
+
+	* nss/getXXbyYY_r.c: Make sure we always return a nonzero value in
+	case of an error.
+
 	* scripts/config.guess: Update from upstream version.
 	* scripts/config.sub: Likewise.
 
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 20f387b3e8..e09e0d749a 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,8 @@
+2003-06-12  Steven Munroe <sjmunroe@us.ibm.com>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+	(SINGLE_THREAD_P): Replace @ got notation with @toc.
+
 2003-06-11  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/powerpc/pspinlock.c (__pthread_spin_init): Fix
diff --git a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
index 58257a17b2..2745c026cd 100644
--- a/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
+++ b/linuxthreads/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h
@@ -89,7 +89,11 @@ extern int __local_multiple_threads attribute_hidden;
 #  define SINGLE_THREAD_P __builtin_expect (__local_multiple_threads == 0, 1)
 # else
 #   define SINGLE_THREAD_P						\
-  ld    10,__local_multiple_threads@got(2);				\
+	.section	".toc","aw";  \
+.LC__local_multiple_threads:; \
+	.tc __local_multiple_threads[TC],__local_multiple_threads; \
+  .previous;              \
+  ld    10,.LC__local_multiple_threads@toc(2);				\
   ld    10,0(10);								\
   cmpdi 10,0
 # endif
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c
index 632778d9aa..3f873a5fde 100644
--- a/nss/getXXbyYY_r.c
+++ b/nss/getXXbyYY_r.c
@@ -247,12 +247,14 @@ done:
 #ifdef POSTPROCESS
   POSTPROCESS;
 #endif
-  return (status != NSS_STATUS_TRYAGAIN ? 0
+  return (status == NSS_STATUS_SUCCESS ? 0
+	  : (status != NSS_STATUS_TRYAGAIN
 #ifdef NEED_H_ERRNO
-	  /* These functions only set errno if h_errno is NETDB_INTERNAL.  */
-	  : *h_errnop != NETDB_INTERNAL ? EAGAIN
+	     /* These functions only set errno if h_errno is
+		NETDB_INTERNAL.  */
+	     && *h_errnop == NETDB_INTERNAL
 #endif
-	  : errno);
+	     ? errno : EAGAIN));
 }
 
 
diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c
index 0d6ac84ade..3cdb5df1c8 100644
--- a/sysdeps/posix/getaddrinfo.c
+++ b/sysdeps/posix/getaddrinfo.c
@@ -671,7 +671,10 @@ gaih_inet (const char *name, const struct gaih_service *service,
 	      no_inet6_data = no_data;
 	    }
 	  else if (req->ai_family == AF_INET)
-	    gethosts (AF_INET, struct in_addr);
+	    {
+	      gethosts (AF_INET, struct in_addr);
+	      no_inet6_data = no_data;
+	    }
 
 	  if (no_data != 0 && no_inet6_data != 0)
 	    {
diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h
index d13649c22f..1336e0d309 100644
--- a/sysdeps/powerpc/powerpc64/dl-machine.h
+++ b/sysdeps/powerpc/powerpc64/dl-machine.h
@@ -239,6 +239,18 @@ elf_machine_dynamic (void)
 "_dl_start_user:\n"							\
 "	.quad	._dl_start_user, .TOC.@tocbase, 0\n"			\
 "	.previous\n"							\
+"	.section	\".toc\",\"aw\"\n"  \
+".LC__dl_starting_up:\n"  \
+"	.tc _dl_starting_up_internal[TC],_dl_starting_up_internal\n"  \
+".LC__rtld_global:\n"  \
+"	.tc _rtld_global[TC],_rtld_global\n"  \
+".LC__dl_argc:\n"  \
+"	.tc _dl_argc[TC],_dl_argc\n"  \
+".LC__dl_argv:\n"  \
+"	.tc _dl_argv_internal[TC],_dl_argv_internal\n"  \
+".LC__dl_fini:\n"  \
+"	.tc _dl_fini[TC],_dl_fini\n"  \
+"	.previous\n"							\
 "	.globl	._dl_start_user\n"					\
 "	.type	._dl_start_user,@function\n"				\
 /* Now, we do our main work of calling initialisation procedures.  \
@@ -250,9 +262,9 @@ elf_machine_dynamic (void)
 /* the address of _start in r30.  */					\
 "	mr	30,3\n"							\
 /* &_dl_argc in 29, &_dl_argv in 27, and _dl_loaded in 28.  */		\
-"	ld	28,_rtld_global@got(2)\n"    \
-"	ld	29,_dl_argc@got(2)\n"					\
-"	ld	27,_dl_argv@got(2)\n"					\
+"	ld	28,.LC__rtld_global@toc(2)\n"    \
+"	ld	29,.LC__dl_argc@toc(2)\n"					\
+"	ld	27,.LC__dl_argv@toc(2)\n"					\
 /* _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1).  */	\
 "	ld	3,0(28)\n"						\
 "	lwa	4,0(29)\n"						\
@@ -279,8 +291,8 @@ elf_machine_dynamic (void)
 "	addi	6,6,8\n"						\
 /* Pass a termination function pointer (in this case _dl_fini) in	\
    r7.  */								\
-"	ld	7,_dl_fini@got(2)\n"					\
-"	ld 	26,_dl_starting_up@got(2)\n"				\
+"	ld	7,.LC__dl_fini@toc(2)\n"					\
+"	ld 	26,.LC__dl_starting_up@toc(2)\n"				\
 /* Pass the stack pointer in r1 (so far so good), pointing to a NULL	\
    value.  This lets our startup code distinguish between a program	\
    linked statically, which linux will call with argc on top of the	\
diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h
index 0af2b0a2fc..203484c896 100644
--- a/sysdeps/powerpc/powerpc64/sysdep.h
+++ b/sysdeps/powerpc/powerpc64/sysdep.h
@@ -34,11 +34,16 @@
   .pushsection;          \
   .section ".data";      \
   .align ALIGNARG(2);    \
-0:  .long  0;            \
+__mcount:            \
+  .long  0;            \
+  .previous;              \
+	.section	".toc","aw";  \
+.LC__mcount:; \
+	.tc __mcount[TC],__mcount; \
   .previous;              \
   mflr  r0;              \
   std   r0,16(r1);        \
-  ld    r0,0b@got(r2);    \
+  ld    r0,.LC__mcount@toc(r2);    \
   bl    JUMPTARGET(_mcount);
 #else /* SYSV_ELF_PROFILING */
 #define CALL_MCOUNT      \
@@ -52,11 +57,16 @@
   .pushsection;          \
   .section ".data";      \
   .align ALIGNARG(2);    \
-0:  .long  0;            \
+__mcount:            \
+  .long  0;            \
+  .previous;              \
+	.section	".toc","aw";  \
+.LC__mcount:; \
+	.tc __mcount[TC],__mcount; \
   .previous;              \
   mflr  r0;              \
   std   r0,16(r1);        \
-  ld    r0,0b@got(r2);    \
+  ld    r0,.LC__mcount@toc(r2);    \
   bl    JUMPTARGET(_mcount);
 #else /* SYSV_ELF_PROFILING */
 #define CALL_MCOUNT  \
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S
index d8f8bab94d..233697bf5e 100644
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S
@@ -24,6 +24,9 @@
 #include <bp-asm.h>
 
 	.comm	__curbrk,8,8
+	.section	".toc","aw"
+.LC__curbrk:
+	.tc __curbrk[TC],__curbrk
 	.section ".text"
 ENTRY (BP_SYM (__brk))
 	DISCARD_BOUNDS (r3)	/* the bounds are meaningless, so toss 'em.  */
@@ -32,7 +35,7 @@ ENTRY (BP_SYM (__brk))
 	std	r3,48(r1)
 	DO_CALL(SYS_ify(brk))
 	ld     r6,48(r1)
-	ld	r5,__curbrk@got(r2)
+	ld	r5,.LC__curbrk@toc(r2)
 	std     r3,0(r5)
 	cmpld   r6,r3
 	addi    r1,r1,64