+2015-01-19 Alan Modra <amodra@gmail.com>
+
+ * read.c (s_reloc): Match BFD_RELOC_NONE, BFD_RELOC{8,16,32,64}.
+ * write.c (get_frag_for_reloc): Allow match just past end of frag.
+
2015-01-16 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* config/tc-s390.c (struct pd_reg): Remove.
char *r_name;
int c;
struct reloc_list *reloc;
+ struct _bfd_rel { char *name; bfd_reloc_code_real_type code; };
+ static struct _bfd_rel bfd_relocs[] = {
+ { "NONE", BFD_RELOC_NONE },
+ { "8", BFD_RELOC_8 },
+ { "16", BFD_RELOC_16 },
+ { "32", BFD_RELOC_32 },
+ { "64", BFD_RELOC_64 }
+ };
reloc = (struct reloc_list *) xmalloc (sizeof (*reloc));
SKIP_WHITESPACE ();
r_name = input_line_pointer;
c = get_symbol_end ();
- reloc->u.a.howto = bfd_reloc_name_lookup (stdoutput, r_name);
+ if (strncasecmp (r_name, "BFD_RELOC_", 10) == 0)
+ {
+ unsigned int i;
+
+ for (reloc->u.a.howto = NULL, i = 0; i < ARRAY_SIZE (bfd_relocs); i++)
+ if (strcasecmp (r_name + 10, bfd_relocs[i].name) == 0)
+ {
+ reloc->u.a.howto = bfd_reloc_type_lookup (stdoutput,
+ bfd_relocs[i].code);
+ break;
+ }
+ }
+ else
+ reloc->u.a.howto = bfd_reloc_name_lookup (stdoutput, r_name);
*input_line_pointer = c;
if (reloc->u.a.howto == NULL)
{
+2015-01-19 Alan Modra <amodra@gmail.com>
+
+ * gas/all/none.s,
+ * gas/all/none.d: New test.
+ * gas/all/gas.exp: Run it.
+
2015-01-16 Andreas Krebbel <krebbel@linux.vnet.ibm.com>
* gas/s390/esa-g5.d: Add a variant without the optional operand.
&& r->u.b.r.address < f->fr_address + f->fr_fix)
return f;
+ for (f = seginfo->frchainP->frch_root; f != NULL; f = f->fr_next)
+ if (f->fr_address <= r->u.b.r.address
+ && r->u.b.r.address <= f->fr_address + f->fr_fix)
+ return f;
+
as_bad_where (r->file, r->line,
_("reloc not within (fixed part of) section"));
return NULL;