diff --git a/ChangeLog b/ChangeLog index d43e3b6146..3e68119279 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,11 @@ 2003-06-12 Ulrich Drepper + * 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 + + * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h + (SINGLE_THREAD_P): Replace @ got notation with @toc. + 2003-06-11 Ulrich Drepper * 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 .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