[Patch V2]: xcoff: fix 16 bit relative branches
Richard Sandiford
rsandifo@linux.vnet.ibm.com
Mon Jul 22 16:33:00 GMT 2013
Tristan Gingold <gingold@adacore.com> writes:
> diff --git a/bfd/coff-rs6000.c b/bfd/coff-rs6000.c
> index 9abe04d..3f60184 100644
> --- a/bfd/coff-rs6000.c
> +++ b/bfd/coff-rs6000.c
> @@ -952,7 +952,7 @@ reloc_howto_type xcoff_howto_table[] =
> 0xffff, /* dst_mask */
> FALSE), /* pcrel_offset */
>
> - /* Modifiable relative branch. */
> + /* 0x14 Modifiable relative branch. */
> HOWTO (R_RRTBI, /* type */
> 1, /* rightshift */
> 2, /* size (0 = byte, 1 = short, 2 = long) */
> @@ -1012,7 +1012,7 @@ reloc_howto_type xcoff_howto_table[] =
> 0xffff, /* dst_mask */
> FALSE), /* pcrel_offset */
>
> - /* Modifiable branch absolute. */
> + /* 0x18 Modifiable branch absolute. */
> HOWTO (R_RBA, /* type */
> 0, /* rightshift */
> 2, /* size (0 = byte, 1 = short, 2 = long) */
> @@ -1072,7 +1072,7 @@ reloc_howto_type xcoff_howto_table[] =
> 0xffff, /* dst_mask */
> FALSE), /* pcrel_offset */
>
> - /* 16 bit Non modifiable absolute branch. */
> + /* 0x1c: 16 bit Non modifiable absolute branch. */
> HOWTO (R_BA, /* type */
> 0, /* rightshift */
> 1, /* size (0 = byte, 1 = short, 2 = long) */
Wasn't sure whether this was part of the patch or just something you
did for debugging. If it's part of the patch, we should probably do
it for all entries, and do it in coff64-rs6000.c too.
Would you mind also adding "bnel" tests to xcoff-br16-1.s and
xcoff-br16-2.s? It sounds like they might have failed without your
0xffff->0xfffc change, whereas plain bne wouldn't be affected.
Otherwise, OK for the bfd and testsuite changes, thanks. I'll punt
on the gas bits :-)
Richard
More information about the Binutils
mailing list