X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=bfd%2Flinker.c;h=d4057461a3f4a358f138f3d1b74694160e3c553a;hb=7ab967941150b2f79fc089893bf51e6bb53d245b;hp=143b8eb950e993ae0c5f6fde07023dbb4549ef16;hpb=fd3619828e94a24a92cddec42cbc0ab33352eeb4;p=deliverable%2Fbinutils-gdb.git diff --git a/bfd/linker.c b/bfd/linker.c index 143b8eb950..d4057461a3 100644 --- a/bfd/linker.c +++ b/bfd/linker.c @@ -1,5 +1,5 @@ /* linker.c -- BFD linker routines - Copyright (C) 1993-2019 Free Software Foundation, Inc. + Copyright (C) 1993-2020 Free Software Foundation, Inc. Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support This file is part of BFD, the Binary File Descriptor library. @@ -536,7 +536,7 @@ bfd_wrapped_link_hash_lookup (bfd *abfd, bfd_boolean copy, bfd_boolean follow) { - bfd_size_type amt; + size_t amt; if (info->wrap_hash != NULL) { @@ -764,7 +764,7 @@ struct bfd_link_hash_table * _bfd_generic_link_hash_table_create (bfd *abfd) { struct generic_link_hash_table *ret; - bfd_size_type amt = sizeof (struct generic_link_hash_table); + size_t amt = sizeof (struct generic_link_hash_table); ret = (struct generic_link_hash_table *) bfd_malloc (amt); if (ret == NULL) @@ -1995,7 +1995,7 @@ _bfd_generic_link_output_symbols (bfd *output_bfd, newsym = bfd_make_empty_symbol (input_bfd); if (!newsym) return FALSE; - newsym->name = input_bfd->filename; + newsym->name = bfd_get_filename (input_bfd); newsym->value = 0; newsym->flags = BSF_LOCAL | BSF_FILE; newsym->section = sec; @@ -2402,7 +2402,7 @@ _bfd_generic_reloc_link_order (bfd *abfd, NULL, NULL, 0); break; } - loc = link_order->offset * bfd_octets_per_byte (abfd); + loc = link_order->offset * bfd_octets_per_byte (abfd, sec); ok = bfd_set_section_contents (abfd, sec, buf, loc, size); free (buf); if (! ok) @@ -2422,7 +2422,7 @@ _bfd_generic_reloc_link_order (bfd *abfd, struct bfd_link_order * bfd_new_link_order (bfd *abfd, asection *section) { - bfd_size_type amt = sizeof (struct bfd_link_order); + size_t amt = sizeof (struct bfd_link_order); struct bfd_link_order *new_lo; new_lo = (struct bfd_link_order *) bfd_zalloc (abfd, amt); @@ -2469,7 +2469,7 @@ _bfd_default_link_order (bfd *abfd, static bfd_boolean default_data_link_order (bfd *abfd, - struct bfd_link_info *info ATTRIBUTE_UNUSED, + struct bfd_link_info *info, asection *sec, struct bfd_link_order *link_order) { @@ -2489,7 +2489,7 @@ default_data_link_order (bfd *abfd, fill_size = link_order->u.data.size; if (fill_size == 0) { - fill = abfd->arch_info->fill (size, bfd_big_endian (abfd), + fill = abfd->arch_info->fill (size, info->big_endian, (sec->flags & SEC_CODE) != 0); if (fill == NULL) return FALSE; @@ -2518,7 +2518,7 @@ default_data_link_order (bfd *abfd, } } - loc = link_order->offset * bfd_octets_per_byte (abfd); + loc = link_order->offset * bfd_octets_per_byte (abfd, sec); result = bfd_set_section_contents (abfd, sec, fill, loc, size); if (fill != link_order->u.data.contents) @@ -2655,18 +2655,17 @@ default_indirect_link_order (bfd *output_bfd, } /* Output the section contents. */ - loc = input_section->output_offset * bfd_octets_per_byte (output_bfd); + loc = (input_section->output_offset + * bfd_octets_per_byte (output_bfd, output_section)); if (! bfd_set_section_contents (output_bfd, output_section, new_contents, loc, input_section->size)) goto error_return; - if (contents != NULL) - free (contents); + free (contents); return TRUE; error_return: - if (contents != NULL) - free (contents); + free (contents); return FALSE; } @@ -2893,10 +2892,8 @@ _bfd_handle_already_linked (asection *sec, (_("%pB: duplicate section `%pA' has different contents\n"), sec->owner, sec); - if (sec_contents) - free (sec_contents); - if (l_sec_contents) - free (l_sec_contents); + free (sec_contents); + free (l_sec_contents); } break; } @@ -3099,7 +3096,7 @@ bfd_generic_define_common_symbol (bfd *output_bfd, /* Increase the size of the section to align the common symbol. The alignment must be a power of two. */ - alignment = bfd_octets_per_byte (output_bfd) << power_of_two; + alignment = bfd_octets_per_byte (output_bfd, section) << power_of_two; BFD_ASSERT (alignment != 0 && (alignment & -alignment) == alignment); section->size += alignment - 1; section->size &= -alignment;