/* Call BFD to write out the linked file. */
-
/**********************************************************************/
-
/* Wander around the input sections, make sure that
we'll never try and create an output section with more relocs
than will fit.. Do this by always assuming the worst case, and
const char *name;
int *count;
{
- char template[6];
+ char templ[6];
char *sname;
asection *n;
struct bfd_link_hash_entry *h;
/* Invent a section name from the first five chars of the base
section name and a digit suffix. */
- strncpy (template, name, sizeof (template) - 1);
- template[sizeof (template) - 1] = '\0';
- sname = bfd_get_unique_section_name (abfd, template, count);
-
- n = bfd_make_section_anyway (abfd, sname);
-
- /* Create a symbol of the same name. */
+ strncpy (templ, name, sizeof (templ) - 1);
+ templ[sizeof (templ) - 1] = '\0';
+ if ((sname = bfd_get_unique_section_name (abfd, templ, count)) == NULL
+ || (n = bfd_make_section_anyway (abfd, sname)) == NULL
+ || (h = bfd_link_hash_lookup (link_info.hash,
+ sname, true, true, false)) == NULL)
+ {
+ einfo (_("%F%P: clone section failed: %E\n"));
+ /* Silence gcc warnings. einfo exits, so we never reach here. */
+ return NULL;
+ }
- h = bfd_link_hash_lookup (link_info.hash,
- sname, true, true, false);
+ /* Set up section symbol. */
h->type = bfd_link_hash_defined;
h->u.def.value = 0;
h->u.def.section = n;
}
#if TESTING
-static void
+static void
ds (s)
asection *s;
{
}
printf ("\n");
}
+
dump (s, a1, a2)
char *s;
asection *a1;
ds (a2);
}
-static void
+static void
sanity_check (abfd)
bfd *abfd;
{
#define dump(a, b, c)
#endif
-static void
+static void
split_sections (abfd, info)
bfd *abfd;
struct bfd_link_info *info;
}
sanity_check (abfd);
}
+
/**********************************************************************/
+
void
ldwrite ()
{
out. */
if (bfd_get_error () != bfd_error_no_error)
- einfo (_("%F%P: final link failed: %E\n"), output_bfd);
+ einfo (_("%F%P: final link failed: %E\n"));
else
- xexit(1);
+ xexit (1);
}
}