summaryrefslogtreecommitdiffstats
path: root/backends
diff options
context:
space:
mode:
authorUlrich Drepper <[email protected]>2006-07-05 07:34:27 +0000
committerUlrich Drepper <[email protected]>2006-07-05 07:34:27 +0000
commit4ba68f475d305b11e55c83994bad4824dad156d3 (patch)
tree80193be4e20320e129fcef4859685132c23e6b1a /backends
parentd5a7519085f35bf48c9b33b8698835b24caa2da1 (diff)
Linker work.
GNU hash support. 64-bit SysV hash support.
Diffstat (limited to 'backends')
-rw-r--r--backends/ChangeLog13
-rw-r--r--backends/alpha_init.c3
-rw-r--r--backends/common-reloc.c11
-rw-r--r--backends/ia64_reloc.def4
-rw-r--r--backends/s390_init.c4
5 files changed, 32 insertions, 3 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog
index b5ae1304..e7416332 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -1,3 +1,14 @@
+2006-07-05 Ulrich Drepper <[email protected]>
+
+ * alpha_init.c: Initialize sysvhash_entrysize.
+ * s390_init.c: Likewise.
+
+2006-07-04 Ulrich Drepper <[email protected]>
+
+ * 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 <[email protected]>
* ppc64_retval.c: Remove SVR4_STRUCT_RETURN braino.
@@ -5,7 +16,7 @@
2006-06-12 Ulrich Drepper <[email protected]>
* common-reloc.c (none_reloc_p): New function.
- (init_reloc): Hoop it up.
+ (init_reloc): Hook it up.
2006-02-22 Roland McGrath <[email protected]>
diff --git a/backends/alpha_init.c b/backends/alpha_init.c
index 98400280..1590fc88 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 <[email protected]>, 2002.
@@ -54,6 +54,7 @@ alpha_init (elf, machine, eh, ehlen)
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 9b956557..191b22a2 100644
--- a/backends/common-reloc.c
+++ b/backends/common-reloc.c
@@ -121,6 +121,14 @@ EBLHOOK(none_reloc_p) (int reloc)
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 @@ EBLHOOK(init_reloc) (Ebl *ebl)
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 0dc001da..a4234656 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 (DTPREL32LSB, REL|EXEC|DYN)
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 64e5639b..80cbb832 100644
--- a/backends/s390_init.c
+++ b/backends/s390_init.c
@@ -53,5 +53,9 @@ s390_init (elf, machine, eh, ehlen)
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;
}