2002-09-21 Alan Modra <amodra@bigpond.net.au>
+ * elf32-ppc.c (ppc_elf_relocate_section): Allow ".sbss.*" and
+ ".sdata.*" for R_PPC_SDAREL16, ".sbss2*" and ".sdata2*" for
+ R_PPC_EMB_SDA2REL. Similarly for R_PPC_EMB_SDA21 and
+ R_PPC_EMB_RELSDA.
+
* elfcode.h (elf_slurp_reloc_table_from_section): Make "symcount"
unsigned. Move "symcount" assignment out of loop.
* Makefile.am: Run "make dep-am".
BFD_ASSERT (sec != (asection *) 0);
name = bfd_get_section_name (abfd, sec->output_section);
- if (strcmp (name, ".sdata") != 0
- && strcmp (name, ".sbss") != 0)
+ if (! ((strncmp (name, ".sdata", 6) == 0
+ && (name[6] == 0 || name[6] == '.'))
+ || (strncmp (name, ".sbss", 5) == 0
+ && (name[5] == 0 || name[5] == '.'))))
{
(*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
bfd_archive_filename (input_bfd),
BFD_ASSERT (sec != (asection *) 0);
name = bfd_get_section_name (abfd, sec->output_section);
- if (strcmp (name, ".sdata2") != 0 && strcmp (name, ".sbss2") != 0)
+ if (! (strncmp (name, ".sdata2", 7) == 0
+ || strncmp (name, ".sbss2", 6) == 0))
{
(*_bfd_error_handler) (_("%s: The target (%s) of a %s relocation is in the wrong output section (%s)"),
bfd_archive_filename (input_bfd),
BFD_ASSERT (sec != (asection *) 0);
name = bfd_get_section_name (abfd, sec->output_section);
- if (strcmp (name, ".sdata") == 0 || strcmp (name, ".sbss") == 0)
+ if (((strncmp (name, ".sdata", 6) == 0
+ && (name[6] == 0 || name[6] == '.'))
+ || (strncmp (name, ".sbss", 5) == 0
+ && (name[5] == 0 || name[5] == '.'))))
{
reg = 13;
addend -= (sdata->sym_hash->root.u.def.value
+ sdata->sym_hash->root.u.def.section->output_offset);
}
- else if (strcmp (name, ".sdata2") == 0
- || strcmp (name, ".sbss2") == 0)
+ else if (strncmp (name, ".sdata2", 7) == 0
+ || strncmp (name, ".sbss2", 6) == 0)
{
reg = 2;
addend -= (sdata2->sym_hash->root.u.def.value