X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=ld%2Fldwrite.c;h=54345abda78914db1db2f0fb2019d3641e342c75;hb=7b4ae824289504c173a597e86a00ceab452095b7;hp=aad085090e5491a05d7c4cce4ea40d77dcc59baa;hpb=e4492aa0d87eda6a9442625b59f713bcf4f08922;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/ldwrite.c b/ld/ldwrite.c index aad085090e..54345abda7 100644 --- a/ld/ldwrite.c +++ b/ld/ldwrite.c @@ -1,7 +1,5 @@ /* ldwrite.c -- write out the linked file - Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000, 2002, - 2003, 2004, 2005, 2006, 2007, 2008, 2010, 2012 - Free Software Foundation, Inc. + Copyright (C) 1991-2018 Free Software Foundation, Inc. Written by Steve Chamberlain sac@cygnus.com This file is part of the GNU Binutils. @@ -59,7 +57,7 @@ build_link_order (lang_statement_union_type *statement) link_order = bfd_new_link_order (link_info.output_bfd, output_section); if (link_order == NULL) - einfo (_("%P%F: bfd_new_link_order failed\n")); + einfo (_("%F%P: bfd_new_link_order failed\n")); link_order->type = bfd_data_link_order; link_order->offset = statement->data_statement.output_offset; @@ -93,17 +91,17 @@ build_link_order (lang_statement_union_type *statement) big_endian = TRUE; { LANG_FOR_EACH_INPUT_STATEMENT (s) - { - if (s->the_bfd != NULL) - { - if (bfd_little_endian (s->the_bfd)) - { - big_endian = FALSE; - swap = TRUE; - } - break; - } - } + { + if (s->the_bfd != NULL) + { + if (bfd_little_endian (s->the_bfd)) + { + big_endian = FALSE; + swap = TRUE; + } + break; + } + } } } @@ -205,13 +203,13 @@ build_link_order (lang_statement_union_type *statement) link_order = bfd_new_link_order (link_info.output_bfd, output_section); if (link_order == NULL) - einfo (_("%P%F: bfd_new_link_order failed\n")); + einfo (_("%F%P: bfd_new_link_order failed\n")); link_order->offset = rs->output_offset; link_order->size = bfd_get_reloc_size (rs->howto); link_order->u.reloc.p = (struct bfd_link_order_reloc *) - xmalloc (sizeof (struct bfd_link_order_reloc)); + xmalloc (sizeof (struct bfd_link_order_reloc)); link_order->u.reloc.p->reloc = rs->reloc; link_order->u.reloc.p->addend = rs->addend_value; @@ -256,6 +254,8 @@ build_link_order (lang_statement_union_type *statement) link_order = bfd_new_link_order (link_info.output_bfd, output_section); + if (link_order == NULL) + einfo (_("%F%P: bfd_new_link_order failed\n")); if ((i->flags & SEC_NEVER_LOAD) != 0 && (i->flags & SEC_DEBUGGING) == 0) @@ -295,6 +295,8 @@ build_link_order (lang_statement_union_type *statement) link_order = bfd_new_link_order (link_info.output_bfd, output_section); + if (link_order == NULL) + einfo (_("%F%P: bfd_new_link_order failed\n")); link_order->type = bfd_data_link_order; link_order->size = statement->padding_statement.size; link_order->offset = statement->padding_statement.output_offset; @@ -411,13 +413,9 @@ ds (asection *s) while (l) { if (l->type == bfd_indirect_link_order) - { - printf ("%8x %s\n", l->offset, l->u.indirect.section->owner->filename); - } + printf ("%8x %s\n", l->offset, l->u.indirect.section->owner->filename); else - { - printf (_("%8x something else\n"), l->offset); - } + printf (_("%8x something else\n"), l->offset); l = l->next; } printf ("\n"); @@ -490,13 +488,13 @@ split_sections (bfd *abfd, struct bfd_link_info *info) || info->strip == strip_some) thislines = sec->lineno_count; - if (info->relocatable) + if (bfd_link_relocatable (info)) thisrelocs = sec->reloc_count; thissize = sec->size; } - else if (info->relocatable + else if (bfd_link_relocatable (info) && (p->type == bfd_section_reloc_link_order || p->type == bfd_symbol_reloc_link_order)) thisrelocs++; @@ -574,6 +572,7 @@ ldwrite (void) /* Reset error indicator, which can typically something like invalid format from opening up the .o files. */ bfd_set_error (bfd_error_no_error); + lang_clear_os_map (); lang_for_each_statement (build_link_order); if (config.split_by_reloc != (unsigned) -1