merge of 2d5572f10b65f0ac7fdf54361b4dae41ebbd51d0
and fda3a25581b7bfac581504e9e887e9b97f234f86
diff --git a/backends/ChangeLog b/backends/ChangeLog
index b5ae130..e741633 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,14 @@
+2006-07-05 Ulrich Drepper <drepper@redhat.com>
+
+ * alpha_init.c: Initialize sysvhash_entrysize.
+ * s390_init.c: Likewise.
+
+2006-07-04 Ulrich Drepper <drepper@redhat.com>
+
+ * common-reloc.c (relative_reloc_p): New function.
+ (init_reloc): Hook it up.
+ * ia64_reloc.def: Define NO_RELATIVE_RELOC.
+
2006-06-13 Roland McGrath <roland@redhat.com>
* ppc64_retval.c: Remove SVR4_STRUCT_RETURN braino.
@@ -5,7 +16,7 @@
2006-06-12 Ulrich Drepper <drepper@redhat.com>
* common-reloc.c (none_reloc_p): New function.
- (init_reloc): Hoop it up.
+ (init_reloc): Hook it up.
2006-02-22 Roland McGrath <roland@redhat.com>
diff --git a/backends/alpha_init.c b/backends/alpha_init.c
index 9840028..1590fc8 100644
--- a/backends/alpha_init.c
+++ b/backends/alpha_init.c
@@ -1,5 +1,5 @@
/* Initialization of Alpha specific backend library.
- Copyright (C) 2002, 2005 Red Hat, Inc.
+ Copyright (C) 2002, 2005, 2006 Red Hat, Inc.
This file is part of Red Hat elfutils.
Written by Ulrich Drepper <drepper@redhat.com>, 2002.
@@ -54,6 +54,7 @@
HOOK (eh, dynamic_tag_check);
HOOK (eh, reloc_simple_type);
HOOK (eh, return_value_location);
+ eh->sysvhash_entrysize = sizeof (Elf64_Xword);
return MODVERSION;
}
diff --git a/backends/common-reloc.c b/backends/common-reloc.c
index 9b95655..191b22a 100644
--- a/backends/common-reloc.c
+++ b/backends/common-reloc.c
@@ -121,6 +121,14 @@
return reloc == R_TYPE (NONE);
}
+#ifndef NO_RELATIVE_RELOC
+bool
+EBLHOOK(relative_reloc_p) (int reloc)
+{
+ return reloc == R_TYPE (RELATIVE);
+}
+#endif
+
static void
EBLHOOK(init_reloc) (Ebl *ebl)
{
@@ -129,4 +137,7 @@
ebl->reloc_valid_use = EBLHOOK(reloc_valid_use);
ebl->copy_reloc_p = EBLHOOK(copy_reloc_p);
ebl->none_reloc_p = EBLHOOK(none_reloc_p);
+#ifndef NO_RELATIVE_RELOC
+ ebl->relative_reloc_p = EBLHOOK(relative_reloc_p);
+#endif
}
diff --git a/backends/ia64_reloc.def b/backends/ia64_reloc.def
index 0dc001d..a423465 100644
--- a/backends/ia64_reloc.def
+++ b/backends/ia64_reloc.def
@@ -1,5 +1,5 @@
/* List the relocation types for ia64. -*- C -*-
- Copyright (C) 2005 Red Hat, Inc.
+ Copyright (C) 2005, 2006 Red Hat, Inc.
This file is part of Red Hat elfutils.
Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -106,3 +106,5 @@
RELOC_TYPE (DTPREL64MSB, REL|EXEC|DYN)
RELOC_TYPE (DTPREL64LSB, REL|EXEC|DYN)
RELOC_TYPE (LTOFF_DTPREL22, REL)
+
+#define NO_RELATIVE_RELOC 1
diff --git a/backends/s390_init.c b/backends/s390_init.c
index 64e5639..80cbb83 100644
--- a/backends/s390_init.c
+++ b/backends/s390_init.c
@@ -53,5 +53,9 @@
HOOK (eh, register_name);
HOOK (eh, return_value_location);
+ /* Only the 64-bit format uses the incorrect hash table entry size. */
+ if (eh->class == ELFCLASS64)
+ eh->sysvhash_entrysize = sizeof (Elf64_Xword);
+
return MODVERSION;
}