about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMartin Schwidefsky <schwidefsky@de.ibm.com>2009-12-22 08:34:07 -0800
committerUlrich Drepper <drepper@redhat.com>2009-12-22 08:34:07 -0800
commitcaf512dec254923b5eded0b3f36f5db66756066d (patch)
tree5fc30b8d6b95560baf8944743ee7e2e76587073c
parent4286fa41edc33da4cfbc56c2c5902920a52e3184 (diff)
downloadglibc-caf512dec254923b5eded0b3f36f5db66756066d.tar.gz
glibc-caf512dec254923b5eded0b3f36f5db66756066d.tar.xz
glibc-caf512dec254923b5eded0b3f36f5db66756066d.zip
Implement handling of the needed S390 relocations.
-rw-r--r--ChangeLog7
-rw-r--r--sysdeps/s390/s390-32/dl-machine.h5
-rw-r--r--sysdeps/s390/s390-64/dl-machine.h2
3 files changed, 11 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 02cae689d5..07a707b051 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2009-12-17  Martin Schwidefsky  <schwidefsky@de.ibm.com>
+
+	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Handle
+	R_390_PC32DBL. Remove unneeded R_390_PLT16DBL.
+	* sysdeps/s390/s390-32/dl-machine.h (elf_machine_rela): Remove
+	unneeded R_390_PLT16DBL and R_390_PLT32DBL.
+
 2009-12-21  Ulrich Drepper  <drepper@redhat.com>
 
 	* sysdeps/unix/sysv/linux/futimens.c: Handle AT_FDCWD.
diff --git a/sysdeps/s390/s390-32/dl-machine.h b/sysdeps/s390/s390-32/dl-machine.h
index 64bf3423b6..251a5f6922 100644
--- a/sysdeps/s390/s390-32/dl-machine.h
+++ b/sysdeps/s390/s390-32/dl-machine.h
@@ -389,10 +389,13 @@ elf_machine_rela (struct link_map *map, const Elf32_Rela *reloc,
 	  *reloc_addr = value + reloc->r_addend - (Elf32_Addr) reloc_addr;
 	  break;
 	case R_390_PC16DBL:
-	case R_390_PLT16DBL:
 	  *(unsigned short *) reloc_addr = (unsigned short)
 	    ((short) (value + reloc->r_addend - (Elf32_Addr) reloc_addr) >> 1);
 	  break;
+	case R_390_PC32DBL:
+	  *(unsigned int *) reloc_addr = (unsigned int)
+	    ((int) (value + reloc->r_addend - (Elf32_Addr) reloc_addr) >> 1);
+	  break;
 	case R_390_PC16:
 	  *(unsigned short *) reloc_addr =
 	    value + reloc->r_addend - (Elf32_Addr) reloc_addr;
diff --git a/sysdeps/s390/s390-64/dl-machine.h b/sysdeps/s390/s390-64/dl-machine.h
index fa893befdf..c4df274cdb 100644
--- a/sysdeps/s390/s390-64/dl-machine.h
+++ b/sysdeps/s390/s390-64/dl-machine.h
@@ -371,7 +371,6 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
 	  *reloc_addr = value +reloc->r_addend - (Elf64_Addr) reloc_addr;
 	  break;
 	case R_390_PC32DBL:
-	case R_390_PLT32DBL:
 	  *(unsigned int *) reloc_addr = (unsigned int)
 	    ((int) (value + reloc->r_addend - (Elf64_Addr) reloc_addr) >> 1);
 	  break;
@@ -380,7 +379,6 @@ elf_machine_rela (struct link_map *map, const Elf64_Rela *reloc,
 	    value + reloc->r_addend - (Elf64_Addr) reloc_addr;
 	  break;
 	case R_390_PC16DBL:
-	case R_390_PLT16DBL:
 	  *(unsigned short *) reloc_addr = (unsigned short)
 	    ((short) (value + reloc->r_addend - (Elf64_Addr) reloc_addr) >> 1);
 	  break;