(root)/
binutils-2.41/
ld/
ldctor.h
       1  /* ldctor.h - linker constructor support
       2     Copyright (C) 1991-2023 Free Software Foundation, Inc.
       3  
       4     This file is part of the GNU Binutils.
       5  
       6     This program is free software; you can redistribute it and/or modify
       7     it under the terms of the GNU General Public License as published by
       8     the Free Software Foundation; either version 3 of the License, or
       9     (at your option) any later version.
      10  
      11     This program is distributed in the hope that it will be useful,
      12     but WITHOUT ANY WARRANTY; without even the implied warranty of
      13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      14     GNU General Public License for more details.
      15  
      16     You should have received a copy of the GNU General Public License
      17     along with this program; if not, write to the Free Software
      18     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      19     MA 02110-1301, USA.  */
      20  
      21  #ifndef LDCTOR_H
      22  #define LDCTOR_H
      23  
      24  /* List of statements needed to handle constructors */
      25  extern lang_statement_list_type constructor_list;
      26  
      27  /* Whether the constructors should be sorted.  Note that this is
      28     global for the entire link; we assume that there is only a single
      29     CONSTRUCTORS command in the linker script.  */
      30  extern bool constructors_sorted;
      31  
      32  /* We keep a list of these structures for each set we build.  */
      33  
      34  struct set_info {
      35    struct set_info *next;		/* Next set.  */
      36    struct bfd_link_hash_entry *h;	/* Hash table entry.  */
      37    bfd_reloc_code_real_type reloc;	/* Reloc to use for an entry.  */
      38    size_t count;				/* Number of elements.  */
      39    struct set_element *elements;		/* Elements in set.  */
      40  };
      41  
      42  struct set_element {
      43    union {
      44      struct set_element *next;		/* Next element.  */
      45      long idx;
      46    } u;
      47    const char *name;			/* Name in set (may be NULL).  */
      48    asection *section;			/* Section of value in set.  */
      49    bfd_vma value;			/* Value in set.  */
      50  };
      51  
      52  /* The sets we have seen.  */
      53  
      54  extern struct set_info *sets;
      55  
      56  extern void ldctor_add_set_entry
      57    (struct bfd_link_hash_entry *, bfd_reloc_code_real_type, const char *,
      58     asection *, bfd_vma);
      59  extern void ldctor_build_sets
      60    (void);
      61  
      62  #endif