about summary refs log tree commit diff
path: root/sysdeps/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/powerpc')
-rw-r--r--sysdeps/powerpc/dl-machine.c11
-rw-r--r--sysdeps/powerpc/dl-machine.h10
-rw-r--r--sysdeps/powerpc/dl-start.S2
-rw-r--r--sysdeps/powerpc/fpu/s_rint.c6
-rw-r--r--sysdeps/powerpc/fpu/s_rintf.c6
5 files changed, 18 insertions, 17 deletions
diff --git a/sysdeps/powerpc/dl-machine.c b/sysdeps/powerpc/dl-machine.c
index 82895d8b68..ac2d94a0b5 100644
--- a/sysdeps/powerpc/dl-machine.c
+++ b/sysdeps/powerpc/dl-machine.c
@@ -1,5 +1,6 @@
 /* Machine-dependent ELF dynamic relocation functions.  PowerPC version.
-   Copyright (C) 1995,96,97,98,99,2000 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -21,9 +22,9 @@
 #include <string.h>
 #include <sys/param.h>
 #include <link.h>
-#include <dl-machine.h>
 #include <ldsodefs.h>
 #include <elf/dynamic-link.h>
+#include <dl-machine.h>
 
 /* Because ld.so is now versioned, these functions can be in their own file;
    no relocations need to be done to call them.
@@ -299,8 +300,7 @@ __elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
 	 there may be a little overlap at the start and the end.
 
 	 Assumes that dcbst and icbi apply to lines of 16 bytes or
-	 more.  At present, all PowerPC processors have line sizes of
-	 16 or 32 bytes.  */
+	 more.  Current known line sizes are 16, 32, and 128 bytes.  */
 
       size_modified = lazy ? rel_offset_words : 6;
       for (i = 0; i < size_modified; i += 4)
@@ -315,7 +315,7 @@ __elf_machine_runtime_setup (struct link_map *map, int lazy, int profile)
   return lazy;
 }
 
-void
+Elf32_Addr
 __elf_machine_fixup_plt(struct link_map *map, const Elf32_Rela *reloc,
 			Elf32_Addr *reloc_addr, Elf32_Addr finaladdr)
 {
@@ -361,6 +361,7 @@ __elf_machine_fixup_plt(struct link_map *map, const Elf32_Rela *reloc,
 	}
     }
   MODIFIED_CODE (reloc_addr);
+  return finaladdr;
 }
 
 void
diff --git a/sysdeps/powerpc/dl-machine.h b/sysdeps/powerpc/dl-machine.h
index f80544fafd..0307a2924a 100644
--- a/sysdeps/powerpc/dl-machine.h
+++ b/sysdeps/powerpc/dl-machine.h
@@ -1,5 +1,6 @@
 /* Machine-dependent ELF dynamic relocation inline functions.  PowerPC version.
-   Copyright (C) 1995, 96, 97, 98, 99, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000 
+   Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -252,12 +253,11 @@ extern Elf32_Addr __elf_machine_fixup_plt (struct link_map *map,
 					   Elf32_Addr finaladdr);
 
 static inline Elf32_Addr
-elf_machine_fixup_plt (struct link_map *l, lookup_t t,
+elf_machine_fixup_plt (struct link_map *map, lookup_t t,
 		       const Elf32_Rela *reloc,
-		       Elf32_Addr *reloc_addr, Elf64_Addr value)
+		       Elf32_Addr *reloc_addr, Elf64_Addr finaladdr)
 {
-  __elf_machine_fixup_plt (map, reloc, reloc_addr, finaladdr);
-  return value;
+  return __elf_machine_fixup_plt (map, reloc, reloc_addr, finaladdr);
 }
 
 /* Return the final value of a plt relocation.  */
diff --git a/sysdeps/powerpc/dl-start.S b/sysdeps/powerpc/dl-start.S
index 685c085ac9..1974c44e0d 100644
--- a/sysdeps/powerpc/dl-start.S
+++ b/sysdeps/powerpc/dl-start.S
@@ -56,7 +56,7 @@ ENTRY(_dl_start_user)
 	lwz	r29,_dl_argc@got(r31)
 	lwz	r27,_dl_argv@got(r31)
 
-/* Call _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1)
+/* Call _dl_init (_dl_loaded, _dl_argc, _dl_argv, _dl_argv+_dl_argc+1). */
 	lwz	r3,0(r28)
 	lwz	r4,0(r29)
 	lwz	r5,0(r27)
diff --git a/sysdeps/powerpc/fpu/s_rint.c b/sysdeps/powerpc/fpu/s_rint.c
index a475875a97..204381e402 100644
--- a/sysdeps/powerpc/fpu/s_rint.c
+++ b/sysdeps/powerpc/fpu/s_rint.c
@@ -1,5 +1,5 @@
 /* Round a 64-bit floating point value to the nearest integer.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -33,8 +33,8 @@ __rint (double x)
 	}
       else if (x < 0.0)
 	{
-	  x -= TWO52;
-	  x += TWO52;
+	  x = TWO52 - x;
+	  x = -(x - TWO52);
 	}
     }
 
diff --git a/sysdeps/powerpc/fpu/s_rintf.c b/sysdeps/powerpc/fpu/s_rintf.c
index dde40bb3e5..12c6b55976 100644
--- a/sysdeps/powerpc/fpu/s_rintf.c
+++ b/sysdeps/powerpc/fpu/s_rintf.c
@@ -1,5 +1,5 @@
 /* Round a 32-bit floating point value to the nearest integer.
-   Copyright (C) 1997 Free Software Foundation, Inc.
+   Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -33,8 +33,8 @@ __rintf (float x)
 	}
       else if (x < 0.0)
 	{
-	  x -= TWO23;
-	  x += TWO23;
+	  x = TWO23 - x;
+	  x = -(x - TWO23);
 	}
     }