X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=bfd%2Fsimple.c;h=6ccafd2259df281c496e9a24af0e63775fa6a94f;hb=d942d8db12adf4c9e5c7d9ed6496a779ece7149e;hp=1e320fc391754b758010dc4919fdd6e0cdb20d83;hpb=b3adc24a0713411ab38a21dc894dd40dbc5c8f4f;p=binutils-gdb.git diff --git a/bfd/simple.c b/bfd/simple.c index 1e320fc3917..6ccafd2259d 100644 --- a/bfd/simple.c +++ b/bfd/simple.c @@ -1,5 +1,5 @@ /* simple.c -- BFD simple client routines - Copyright (C) 2002-2020 Free Software Foundation, Inc. + Copyright (C) 2002-2022 Free Software Foundation, Inc. Contributed by MontaVista Software, Inc. This file is part of BFD, the Binary File Descriptor library. @@ -24,6 +24,35 @@ #include "libbfd.h" #include "bfdlink.h" +static void +simple_dummy_add_to_set (struct bfd_link_info * info ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry *entry ATTRIBUTE_UNUSED, + bfd_reloc_code_real_type reloc ATTRIBUTE_UNUSED, + bfd *abfd ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED, + bfd_vma value ATTRIBUTE_UNUSED) +{ +} + +static void +simple_dummy_constructor (struct bfd_link_info * info ATTRIBUTE_UNUSED, + bool constructor ATTRIBUTE_UNUSED, + const char *name ATTRIBUTE_UNUSED, + bfd *abfd ATTRIBUTE_UNUSED, + asection *sec ATTRIBUTE_UNUSED, + bfd_vma value ATTRIBUTE_UNUSED) +{ +} + +static void +simple_dummy_multiple_common (struct bfd_link_info * info ATTRIBUTE_UNUSED, + struct bfd_link_hash_entry * entry ATTRIBUTE_UNUSED, + bfd * abfd ATTRIBUTE_UNUSED, + enum bfd_link_hash_type type ATTRIBUTE_UNUSED, + bfd_vma size ATTRIBUTE_UNUSED) +{ +} + static void simple_dummy_warning (struct bfd_link_info *link_info ATTRIBUTE_UNUSED, const char *warning ATTRIBUTE_UNUSED, @@ -40,7 +69,7 @@ simple_dummy_undefined_symbol (struct bfd_link_info *link_info ATTRIBUTE_UNUSED, bfd *abfd ATTRIBUTE_UNUSED, asection *section ATTRIBUTE_UNUSED, bfd_vma address ATTRIBUTE_UNUSED, - bfd_boolean fatal ATTRIBUTE_UNUSED) + bool fatal ATTRIBUTE_UNUSED) { } @@ -208,6 +237,9 @@ bfd_simple_get_relocated_section_contents (bfd *abfd, abfd->link.next = NULL; link_info.hash = _bfd_generic_link_hash_table_create (abfd); link_info.callbacks = &callbacks; + /* Make sure that any fields not initialised below do not + result in a potential indirection via a random address. */ + memset (&callbacks, 0, sizeof callbacks); callbacks.warning = simple_dummy_warning; callbacks.undefined_symbol = simple_dummy_undefined_symbol; callbacks.reloc_overflow = simple_dummy_reloc_overflow; @@ -215,6 +247,9 @@ bfd_simple_get_relocated_section_contents (bfd *abfd, callbacks.unattached_reloc = simple_dummy_unattached_reloc; callbacks.multiple_definition = simple_dummy_multiple_definition; callbacks.einfo = simple_dummy_einfo; + callbacks.multiple_common = simple_dummy_multiple_common; + callbacks.constructor = simple_dummy_constructor; + callbacks.add_to_set = simple_dummy_add_to_set; memset (&link_order, 0, sizeof (link_order)); link_order.next = NULL; @@ -242,8 +277,7 @@ bfd_simple_get_relocated_section_contents (bfd *abfd, * saved_offsets.section_count); if (saved_offsets.sections == NULL) { - if (data) - free (data); + free (data); _bfd_generic_link_hash_table_free (abfd); abfd->link.next = link_next; return NULL; @@ -267,7 +301,7 @@ bfd_simple_get_relocated_section_contents (bfd *abfd, outbuf, 0, symbol_table); - if (contents == NULL && data != NULL) + if (contents == NULL) free (data); bfd_map_over_sections (abfd, simple_restore_output_info, &saved_offsets);