Subversion Repositories Kolibri OS

Rev

Rev 5199 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

  1. /* ldctor.h - linker constructor support
  2.    Copyright (C) 1991-2015 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 bfd_boolean 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.   struct set_element *next;             /* Next element.  */
  44.   const char *name;                     /* Name in set (may be NULL).  */
  45.   asection *section;                    /* Section of value in set.  */
  46.   bfd_vma value;                        /* Value in set.  */
  47. };
  48.  
  49. /* The sets we have seen.  */
  50.  
  51. extern struct set_info *sets;
  52.  
  53. extern void ldctor_add_set_entry
  54.   (struct bfd_link_hash_entry *, bfd_reloc_code_real_type, const char *,
  55.    asection *, bfd_vma);
  56. extern void ldctor_build_sets
  57.   (void);
  58.  
  59. #endif
  60.