This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
PATCH: Disallow IA64 imm relocations against dynamic symbols
- From: "H. J. Lu" <hjl at lucon dot org>
- To: binutils at sources dot redhat dot com
- Date: Thu, 15 Jan 2004 14:08:39 -0800
- Subject: PATCH: Disallow IA64 imm relocations against dynamic symbols
The IA64 imm relocations against dynamic symbols aren't supported by
dynamic linker. Linker disallows them in shared libraries. There is
no reason to allow them in executables either.
H.J.
----
2004-01-15 H.J. Lu <hongjiu.lu@intel.com>
* elfxx-ia64.c (elfNN_ia64_relocate_section): Disallow imm
relocations against dynamic symbols.
--- bfd/elfxx-ia64.c.imm 2004-01-13 20:58:07.000000000 -0800
+++ bfd/elfxx-ia64.c 2004-01-15 14:01:37.000000000 -0800
@@ -3987,6 +3987,24 @@ elfNN_ia64_relocate_section (output_bfd,
BFD_ASSERT (srel != NULL);
+ switch (r_type)
+ {
+ case R_IA64_IMM14:
+ case R_IA64_IMM22:
+ case R_IA64_IMM64:
+ /* ??? People shouldn't be doing non-pic code in
+ shared libraries nor dynamic executables. */
+ (*_bfd_error_handler)
+ (_("%s: non-pic code with imm relocation against dynamic symbol `%s'"),
+ bfd_archive_filename (input_bfd),
+ h->root.root.string);
+ ret_val = FALSE;
+ continue;
+
+ default:
+ break;
+ }
+
/* If we don't need dynamic symbol lookup, find a
matching RELATIVE relocation. */
dyn_r_type = r_type;
@@ -4014,17 +4032,7 @@ elfNN_ia64_relocate_section (output_bfd,
break;
default:
- /* We can't represent this without a dynamic symbol.
- Adjust the relocation to be against an output
- section symbol, which are always present in the
- dynamic symbol table. */
- /* ??? People shouldn't be doing non-pic code in
- shared libraries. Hork. */
- (*_bfd_error_handler)
- (_("%s: linking non-pic code in a shared library"),
- bfd_archive_filename (input_bfd));
- ret_val = FALSE;
- continue;
+ break;
}
dynindx = 0;
addend = value;