This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
PATCH: Fix "FAIL: objcopy (simple copy)" for tic54x-coff
- From: "H. J. Lu" <hjl at lucon dot org>
- To: binutils at sources dot redhat dot com
- Date: Mon, 21 Feb 2005 13:09:09 -0800
- Subject: PATCH: Fix "FAIL: objcopy (simple copy)" for tic54x-coff
TI relocation has a r_reserved field. But we never initialize it and
we get some random values. This patch makes sure that it is always
initialized.
H.J.
----
bfd/
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* coffcode.h (coff_write_relocs): Clear the r_reserved field
if COFF_REL_HAS_R_RESERVED is defined before swapping out
relocation.
include/coff/
2005-02-21 H.J. Lu <hongjiu.lu@intel.com>
* ti.h (COFF_REL_HAS_R_RESERVED): Defined.
* tic80.h (COFF_REL_HAS_R_RESERVED): Defined.
--- binutils/bfd/coffcode.h.ti 2005-02-21 10:18:36.000000000 -0800
+++ binutils/bfd/coffcode.h 2005-02-21 13:03:05.178091748 -0800
@@ -2510,6 +2510,10 @@ coff_write_relocs (abfd, first_undef)
if (bfd_seek (abfd, s->rel_filepos, SEEK_SET) != 0)
return FALSE;
+#ifdef COFF_REL_HAS_R_RESERVED
+ memset (&dst.r_reserved, 0, sizeof (dst.r_reserved));
+#endif
+
#ifdef COFF_WITH_PE
if (obj_pe (abfd) && s->reloc_count >= 0xffff)
{
--- binutils/include/coff/ti.h.ti 2003-08-07 09:02:59.000000000 -0700
+++ binutils/include/coff/ti.h 2005-02-21 12:49:58.767373577 -0800
@@ -441,6 +441,9 @@ union external_auxent {
/********************** RELOCATION DIRECTIVES **********************/
+/* Relocation has r_reserved. */
+#define COFF_REL_HAS_R_RESERVED 1
+
struct external_reloc_v0
{
char r_vaddr[4];
--- binutils/include/coff/tic80.h.ti 2001-03-15 15:06:40.000000000 -0800
+++ binutils/include/coff/tic80.h 2005-02-21 12:50:23.729673155 -0800
@@ -81,6 +81,9 @@ struct external_scnhdr
/********************** RELOCATION DIRECTIVES **********************/
+/* Relocation has r_reserved. */
+#define COFF_REL_HAS_R_RESERVED 1
+
/* The external reloc has an offset field, because some of the reloc
types on the h8 don't have room in the instruction for the entire
offset - eg the strange jump and high page addressing modes. */