Move bfd_init to bfd.c
authorAlan Modra <amodra@gmail.com>
Fri, 6 Jan 2023 10:45:31 +0000 (21:15 +1030)
committerAlan Modra <amodra@gmail.com>
Mon, 9 Jan 2023 22:45:51 +0000 (09:15 +1030)
init.c contains just one function that doesn't do much.  Move it to
bfd.c and give it something to do, initialising static state.  So far
the only initialisation is for bfd.c static variables.

The idea behind reinitialising state is to see whether some set of
flaky oss-fuzz crashes go away.  oss-fuzz stresses binutils in ways
that can't occur in reality, feeding multiple testcases into the
internals of binutils.  So one testcase may affect the result of the
next testcase.

* init.c: Delete file.  Move bfd_init to..
* bfd.c (bfd_init): ..here.  Init static variables.
* Makefile.am (BFD32_LIBS): Remove init.lo.
(BFD32_LIBS_CFILES, BFD_H_FILES): Remove init.c.
* doc/local.mk: Remove mention of init.texi and init.c.
* Makefile.in: Regenerate.
* bfd-in2.h: Regenerate.
* po/SRC-POTFILES.in: Regenerate.

bfd/Makefile.am
bfd/Makefile.in
bfd/bfd-in2.h
bfd/bfd.c
bfd/doc/local.mk
bfd/init.c
bfd/po/SRC-POTFILES.in

index 75d21db88d1353f71687f6b27fd0e9206a975e93..a745372c0a4820ee9bfc3a865f23854be14bd8a5 100644 (file)
@@ -77,7 +77,7 @@ BFD_H = bfd.h
 BFD32_LIBS = \
        archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo \
        coff-bfd.lo compress.lo corefile.lo elf-properties.lo format.lo \
-       hash.lo init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+       hash.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
        section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
        binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 
@@ -86,7 +86,7 @@ BFD64_LIBS = archive64.lo
 BFD32_LIBS_CFILES = \
        archive.c archures.c bfd.c bfdio.c bfdwin.c cache.c coff-bfd.c \
        compress.c corefile.c elf-properties.c format.c hash.c \
-       init.c libbfd.c linker.c merge.c opncls.c reloc.c \
+       libbfd.c linker.c merge.c opncls.c reloc.c \
        section.c simple.c stab-syms.c stabs.c syms.c targets.c \
        binary.c ihex.c srec.c tekhex.c verilog.c
 
@@ -923,7 +923,7 @@ stmp-bfd-h: bfd-in3.h
        rm -f bfd-tmp.h
        touch stmp-bfd-h
 
-BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c \
+BFD_H_FILES = bfd-in.h opncls.c libbfd.c \
        bfdio.c bfdwin.c section.c archures.c reloc.c \
        syms.c bfd.c archive.c corefile.c targets.c format.c \
        linker.c simple.c compress.c
index 0b0bb1a950e2e2cce2afd34e3fbf26cf762010d8..1e0c2dcae1e82e555a79c13cf32c45d28d6620ba 100644 (file)
@@ -186,10 +186,9 @@ LTLIBRARIES = $(bfdlib_LTLIBRARIES) $(noinst_LTLIBRARIES)
 am__DEPENDENCIES_1 =
 am__objects_1 = archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo \
        cache.lo coff-bfd.lo compress.lo corefile.lo elf-properties.lo \
-       format.lo hash.lo init.lo libbfd.lo linker.lo merge.lo \
-       opncls.lo reloc.lo section.lo simple.lo stab-syms.lo stabs.lo \
-       syms.lo targets.lo binary.lo ihex.lo srec.lo tekhex.lo \
-       verilog.lo
+       format.lo hash.lo libbfd.lo linker.lo merge.lo opncls.lo \
+       reloc.lo section.lo simple.lo stab-syms.lo stabs.lo syms.lo \
+       targets.lo binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 am_libbfd_la_OBJECTS = $(am__objects_1)
 libbfd_la_OBJECTS = $(am_libbfd_la_OBJECTS)
 AM_V_lt = $(am__v_lt_@AM_V@)
@@ -546,7 +545,7 @@ BFD_H = bfd.h
 BFD32_LIBS = \
        archive.lo archures.lo bfd.lo bfdio.lo bfdwin.lo cache.lo \
        coff-bfd.lo compress.lo corefile.lo elf-properties.lo format.lo \
-       hash.lo init.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
+       hash.lo libbfd.lo linker.lo merge.lo opncls.lo reloc.lo \
        section.lo simple.lo stab-syms.lo stabs.lo syms.lo targets.lo \
        binary.lo ihex.lo srec.lo tekhex.lo verilog.lo
 
@@ -554,7 +553,7 @@ BFD64_LIBS = archive64.lo
 BFD32_LIBS_CFILES = \
        archive.c archures.c bfd.c bfdio.c bfdwin.c cache.c coff-bfd.c \
        compress.c corefile.c elf-properties.c format.c hash.c \
-       init.c libbfd.c linker.c merge.c opncls.c reloc.c \
+       libbfd.c linker.c merge.c opncls.c reloc.c \
        section.c simple.c stab-syms.c stabs.c syms.c targets.c \
        binary.c ihex.c srec.c tekhex.c verilog.c
 
@@ -1216,7 +1215,7 @@ libbfd_la_LIBADD = `cat ofiles` @SHARED_LIBADD@ $(LIBDL) $(ZLIB) $(ZSTD_LIBS) ..
 # everything else starts using libtool.  FIXME.
 noinst_LIBRARIES = libbfd.a
 libbfd_a_SOURCES = 
-BFD_H_FILES = bfd-in.h init.c opncls.c libbfd.c \
+BFD_H_FILES = bfd-in.h opncls.c libbfd.c \
        bfdio.c bfdwin.c section.c archures.c reloc.c \
        syms.c bfd.c archive.c corefile.c targets.c format.c \
        linker.c simple.c compress.c
@@ -1263,7 +1262,6 @@ DOCFILES = \
        doc/elf.texi \
        doc/format.texi \
        doc/hash.texi \
-       doc/init.texi \
        doc/libbfd.texi \
        doc/linker.texi \
        doc/mmo.texi \
@@ -1296,13 +1294,12 @@ SRCPROT = $(srcdir)/archive.c $(srcdir)/archures.c \
        $(srcdir)/bfdio.c $(srcdir)/bfdwin.c \
        $(srcdir)/opncls.c $(srcdir)/reloc.c \
        $(srcdir)/section.c $(srcdir)/syms.c \
-       $(srcdir)/targets.c $(srcdir)/init.c
+       $(srcdir)/targets.c
 
 SRCIPROT = $(srcdir)/cache.c $(srcdir)/libbfd.c \
        $(srcdir)/bfdio.c $(srcdir)/bfdwin.c \
        $(srcdir)/reloc.c $(srcdir)/cpu-h8300.c \
-       $(srcdir)/archures.c \
-       $(srcdir)/init.c
+       $(srcdir)/archures.c
 
 TEXIDIR = $(srcdir)/../texinfo/fsf
 info_TEXINFOS = doc/bfd.texi
@@ -1682,7 +1679,6 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386lynx.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/i386msdos.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ihex.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/init.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/irix-core.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libbfd.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/linker.Plo@am__quote@
index aeb8d5de7b9a7a23755ead1f99ff356987319895..bb2b30200dc86fa4a904efef65f829571eab2cd0 100644 (file)
@@ -1,8 +1,8 @@
 /* DO NOT EDIT!  -*- buffer-read-only: t -*-  This file is automatically
-   generated from "bfd-in.h", "init.c", "opncls.c", "libbfd.c",
-   "bfdio.c", "bfdwin.c", "section.c", "archures.c", "reloc.c",
-   "syms.c", "bfd.c", "archive.c", "corefile.c", "targets.c", "format.c",
-   "linker.c", "simple.c" and "compress.c".
+   generated from "bfd-in.h", "opncls.c", "libbfd.c", "bfdio.c",
+   "bfdwin.c", "section.c", "archures.c", "reloc.c", "syms.c", "bfd.c",
+   "archive.c", "corefile.c", "targets.c", "format.c", "linker.c",
+   "simple.c" and "compress.c".
    Run "make headers" in your build bfd/ to regenerate.  */
 
 /* Main header file for the bfd library -- portable access to object files.
@@ -488,13 +488,6 @@ startswith (const char *str, const char *prefix)
 {
   return strncmp (str, prefix, strlen (prefix)) == 0;
 }
-/* Extracted from init.c.  */
-unsigned int bfd_init (void);
-
-
-/* Value returned by bfd_init.  */
-
-#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
 /* Extracted from opncls.c.  */
 /* Set to N to open the next N BFDs using an alternate id space.  */
 extern unsigned int bfd_use_reserved_id;
@@ -7263,6 +7256,11 @@ bfd_vma bfd_emul_get_commonpagesize (const char *);
 
 char *bfd_demangle (bfd *, const char *, int);
 
+unsigned int bfd_init (void);
+
+/* Value returned by bfd_init.  */
+#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
+
 /* Extracted from archive.c.  */
 symindex bfd_get_next_mapent
    (bfd *abfd, symindex previous, carsym **sym);
index 9cbb674b989b7cef0bf132d0c24f8a8e22476bbd..1d1c44989384bd4ae0bc944d51fd6d3f2800a0bc 100644 (file)
--- a/bfd/bfd.c
+++ b/bfd/bfd.c
@@ -696,9 +696,9 @@ CODE_FRAGMENT
 .
 */
 
-static bfd_error_type bfd_error = bfd_error_no_error;
-static bfd *input_bfd = NULL;
-static bfd_error_type input_error = bfd_error_no_error;
+static bfd_error_type bfd_error;
+static bfd *input_bfd;
+static bfd_error_type input_error;
 
 const char *const bfd_errmsgs[] =
 {
@@ -2605,3 +2605,34 @@ _bfd_get_link_info (bfd *abfd)
 
   return elf_link_info (abfd);
 }
+
+/*
+FUNCTION
+       bfd_init
+
+SYNOPSIS
+       unsigned int bfd_init (void);
+
+DESCRIPTION
+       This routine must be called before any other BFD function to
+       initialize magical internal data structures.
+       Returns a magic number, which may be used to check
+       that the bfd library is configured as expected by users.
+
+.{* Value returned by bfd_init.  *}
+.#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
+.
+*/
+
+unsigned int
+bfd_init (void)
+{
+  bfd_error = bfd_error_no_error;
+  input_bfd = NULL;
+  input_error = bfd_error_no_error;
+  _bfd_error_program_name = NULL;
+  _bfd_error_internal = error_handler_fprintf;
+  _bfd_assert_handler = _bfd_default_assert_handler;
+
+  return BFD_INIT_MAGIC;
+}
index cf2b479c1c99c036efddb079da5b8664668eda3b..41ab89fc6d884cbbb41206979e3dc8addd4335b2 100644 (file)
@@ -32,7 +32,6 @@ DOCFILES = \
        %D%/elf.texi \
        %D%/format.texi \
        %D%/hash.texi \
-       %D%/init.texi \
        %D%/libbfd.texi \
        %D%/linker.texi \
        %D%/mmo.texi \
@@ -64,13 +63,12 @@ SRCPROT = $(srcdir)/archive.c $(srcdir)/archures.c \
        $(srcdir)/bfdio.c $(srcdir)/bfdwin.c \
        $(srcdir)/opncls.c $(srcdir)/reloc.c \
        $(srcdir)/section.c $(srcdir)/syms.c \
-       $(srcdir)/targets.c $(srcdir)/init.c
+       $(srcdir)/targets.c
 
 SRCIPROT = $(srcdir)/cache.c $(srcdir)/libbfd.c \
        $(srcdir)/bfdio.c $(srcdir)/bfdwin.c \
        $(srcdir)/reloc.c $(srcdir)/cpu-h8300.c \
-       $(srcdir)/archures.c \
-       $(srcdir)/init.c
+       $(srcdir)/archures.c
 
 TEXIDIR = $(srcdir)/../texinfo/fsf
 
index eee9891b1b5d720a57b7bfa3cc318932ae098619..bcae3cbdb99bf8b714a1eb36aa811d96ee3c32d1 100644 (file)
@@ -33,29 +33,3 @@ SUBSECTION
        These are the functions that handle initializing a BFD.
 */
 
-/*
-FUNCTION
-       bfd_init
-
-SYNOPSIS
-       unsigned int bfd_init (void);
-
-DESCRIPTION
-       This routine must be called before any other BFD function to
-       initialize magical internal data structures.
-       Returns a magic number, which may be used to check
-       that the bfd library is configured as expected by users.
-.
-.{* Value returned by bfd_init.  *}
-.
-.#define BFD_INIT_MAGIC (sizeof (struct bfd_section))
-*/
-
-/* Actually, there is currently nothing for this function to do.
-   However, someday it may be needed, so keep it around.  */
-
-unsigned int
-bfd_init (void)
-{
-  return BFD_INIT_MAGIC;
-}
index 26d5a2ce25d753a4768501047a28403027778c69..a127ac0904cd2b7ee148cb8cb121056912372991 100644 (file)
@@ -284,7 +284,6 @@ i386bsd.c
 i386lynx.c
 i386msdos.c
 ihex.c
-init.c
 irix-core.c
 libaout.h
 libbfd.c