* 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>
This commit is contained in:
Andreas Jaeger 2000-05-10 15:58:36 +00:00
parent 5d693ae3e5
commit b227a3a6ad
4 changed files with 29 additions and 2 deletions

View File

@ -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

View 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);

View 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;

View File

@ -0,0 +1 @@
#include <sysdeps/unix/time.c>