Update.
authorAndreas Jaeger <aj@suse.de>
Wed, 10 May 2000 15:58:36 +0000 (15:58 +0000)
committerAndreas Jaeger <aj@suse.de>
Wed, 10 May 2000 15:58:36 +0000 (15:58 +0000)
  * elf/dl-reloc.c (_dl_reloc_bad_type): Sync messages with plt
  argument.
  * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Handle
  R_SPARC_UA64.
  * sysdeps/unix/sysv/linux/sparc/sparc64/time.c: New file.

2000-05-10  Jakub Jelinek  <jakub@redhat.com>

ChangeLog
elf/dl-reloc.c
sysdeps/sparc/sparc64/dl-machine.h
sysdeps/unix/sysv/linux/sparc/sparc64/time.c [new file with mode: 0644]

index eaabc81ea66beb2381653e2d97b69717ce4ae014..b607e38e3f74e29eda8f2f262bd1ae6e946b6a83 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2000-05-10  Jakub Jelinek  <jakub@redhat.com>
+
+       * elf/dl-reloc.c (_dl_reloc_bad_type): Sync messages with plt
+       argument.
+       * sysdeps/sparc/sparc64/dl-machine.h (elf_machine_rela): Handle
+       R_SPARC_UA64.
+       * sysdeps/unix/sysv/linux/sparc/sparc64/time.c: New file.
+
 2000-05-10  Jakub Jelinek  <jakub@redhat.com>
 
        * elf/dl-reloc.c (_dl_reloc_bad_type): Write type into the message
index 3ee6f084837c4e2b6b0347dd6ea4a66ee2f38753..3bfba7709dd2f21f5214e8e731cc62981a10c978 100644 (file)
@@ -157,14 +157,14 @@ _dl_reloc_bad_type (struct link_map *map, uint_fast8_t type, int plt)
   extern const char _itoa_lower_digits[];
   if (plt)
     {
-      char msg[] = "unexpected reloc type 0x??";
+      char msg[] = "unexpected PLT reloc type 0x??";
       msg[sizeof msg - 3] = DIGIT(type >> 4);
       msg[sizeof msg - 2] = DIGIT(type);
       _dl_signal_error (0, map->l_name, msg);
     }
   else
     {
-      char msg[] = "unexpected PLT reloc type 0x??";
+      char msg[] = "unexpected reloc type 0x??";
       msg[sizeof msg - 3] = DIGIT(type >> 4);
       msg[sizeof msg - 2] = DIGIT(type);
       _dl_signal_error (0, map->l_name, msg);
index 552076ac1c3a0e18418d2fb2a71de45586eb2b8e..35efc8e9f1e6b3f81d4e74507d53202d23c9a75b 100644 (file)
@@ -316,6 +316,24 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
          elf_machine_fixup_plt(map, NULL, reloc, reloc_addr, value);
          break;
 
+       case R_SPARC_UA64:
+         if (! ((long) reloc_addr & 3))
+           {
+             /* Common in .eh_frame */
+             ((unsigned int *) reloc_addr) [0] = value >> 32;
+             ((unsigned int *) reloc_addr) [1] = value;
+             break;
+           }
+         ((unsigned char *) reloc_addr) [0] = value >> 56;
+         ((unsigned char *) reloc_addr) [1] = value >> 48;
+         ((unsigned char *) reloc_addr) [2] = value >> 40;
+         ((unsigned char *) reloc_addr) [3] = value >> 32;
+         ((unsigned char *) reloc_addr) [4] = value >> 24;
+         ((unsigned char *) reloc_addr) [5] = value >> 16;
+         ((unsigned char *) reloc_addr) [6] = value >> 8;
+         ((unsigned char *) reloc_addr) [7] = value;
+         break;
+
        default:
          _dl_reloc_bad_type (map, ELFW(R_TYPE) (reloc->r_info), 0);
          break;
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/time.c b/sysdeps/unix/sysv/linux/sparc/sparc64/time.c
new file mode 100644 (file)
index 0000000..3a64ef1
--- /dev/null
@@ -0,0 +1 @@
+#include <sysdeps/unix/time.c>