ldlex.h 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204
  1. /* ldlex.h -
  2. Copyright (C) 1991-2022 Free Software Foundation, Inc.
  3. This file is part of the GNU Binutils.
  4. This program is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 3 of the License, or
  7. (at your option) any later version.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  11. GNU General Public License for more details.
  12. You should have received a copy of the GNU General Public License
  13. along with this program; if not, write to the Free Software
  14. Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
  15. MA 02110-1301, USA. */
  16. #ifndef LDLEX_H
  17. #define LDLEX_H
  18. #include <stdio.h>
  19. /* Codes used for the long options with no short synonyms. 150 isn't
  20. special; it's just an arbitrary non-ASCII char value. */
  21. enum option_values
  22. {
  23. OPTION_ASSERT = 150,
  24. OPTION_CALL_SHARED,
  25. OPTION_CREF,
  26. OPTION_DEFSYM,
  27. OPTION_DEMANGLE,
  28. OPTION_DYNAMIC_LINKER,
  29. OPTION_NO_DYNAMIC_LINKER,
  30. OPTION_SYSROOT,
  31. OPTION_OUT_IMPLIB,
  32. OPTION_EB,
  33. OPTION_EL,
  34. OPTION_EMBEDDED_RELOCS,
  35. OPTION_EXPORT_DYNAMIC,
  36. OPTION_NO_EXPORT_DYNAMIC,
  37. OPTION_HELP,
  38. OPTION_IGNORE,
  39. OPTION_MAP,
  40. OPTION_NO_DEMANGLE,
  41. OPTION_NO_KEEP_MEMORY,
  42. OPTION_NO_WARN_MISMATCH,
  43. OPTION_NO_WARN_SEARCH_MISMATCH,
  44. OPTION_NOINHIBIT_EXEC,
  45. OPTION_NON_SHARED,
  46. OPTION_NO_WHOLE_ARCHIVE,
  47. OPTION_OFORMAT,
  48. OPTION_RELAX,
  49. OPTION_NO_RELAX,
  50. OPTION_NO_SYMBOLIC,
  51. OPTION_RETAIN_SYMBOLS_FILE,
  52. OPTION_RPATH,
  53. OPTION_RPATH_LINK,
  54. OPTION_SHARED,
  55. OPTION_SONAME,
  56. OPTION_SORT_COMMON,
  57. OPTION_SORT_SECTION,
  58. OPTION_STATS,
  59. OPTION_SYMBOLIC,
  60. OPTION_SYMBOLIC_FUNCTIONS,
  61. OPTION_TASK_LINK,
  62. OPTION_TBSS,
  63. OPTION_TDATA,
  64. OPTION_TTEXT,
  65. OPTION_TTEXT_SEGMENT,
  66. OPTION_TRODATA_SEGMENT,
  67. OPTION_TLDATA_SEGMENT,
  68. OPTION_TRADITIONAL_FORMAT,
  69. OPTION_UR,
  70. OPTION_VERBOSE,
  71. OPTION_VERSION,
  72. OPTION_VERSION_SCRIPT,
  73. OPTION_VERSION_EXPORTS_SECTION,
  74. OPTION_DYNAMIC_LIST,
  75. OPTION_DYNAMIC_LIST_CPP_NEW,
  76. OPTION_DYNAMIC_LIST_CPP_TYPEINFO,
  77. OPTION_DYNAMIC_LIST_DATA,
  78. OPTION_EXPORT_DYNAMIC_SYMBOL,
  79. OPTION_EXPORT_DYNAMIC_SYMBOL_LIST,
  80. OPTION_WARN_COMMON,
  81. OPTION_WARN_CONSTRUCTORS,
  82. OPTION_WARN_FATAL,
  83. OPTION_NO_WARN_FATAL,
  84. OPTION_WARN_MULTIPLE_GP,
  85. OPTION_WARN_ONCE,
  86. OPTION_WARN_SECTION_ALIGN,
  87. OPTION_SPLIT_BY_RELOC,
  88. OPTION_SPLIT_BY_FILE ,
  89. OPTION_WHOLE_ARCHIVE,
  90. OPTION_ADD_DT_NEEDED_FOR_DYNAMIC,
  91. OPTION_NO_ADD_DT_NEEDED_FOR_DYNAMIC,
  92. OPTION_ADD_DT_NEEDED_FOR_REGULAR,
  93. OPTION_NO_ADD_DT_NEEDED_FOR_REGULAR,
  94. OPTION_WRAP,
  95. OPTION_FORCE_EXE_SUFFIX,
  96. OPTION_GC_SECTIONS,
  97. OPTION_NO_GC_SECTIONS,
  98. OPTION_PRINT_GC_SECTIONS,
  99. OPTION_NO_PRINT_GC_SECTIONS,
  100. OPTION_GC_KEEP_EXPORTED,
  101. OPTION_HASH_SIZE,
  102. OPTION_CHECK_SECTIONS,
  103. OPTION_NO_CHECK_SECTIONS,
  104. OPTION_NO_UNDEFINED,
  105. OPTION_INIT,
  106. OPTION_FINI,
  107. OPTION_SECTION_START,
  108. OPTION_UNIQUE,
  109. OPTION_TARGET_HELP,
  110. OPTION_ALLOW_SHLIB_UNDEFINED,
  111. OPTION_NO_ALLOW_SHLIB_UNDEFINED,
  112. OPTION_ALLOW_MULTIPLE_DEFINITION,
  113. #if SUPPORT_ERROR_HANDLING_SCRIPT
  114. OPTION_ERROR_HANDLING_SCRIPT,
  115. #endif
  116. OPTION_NO_UNDEFINED_VERSION,
  117. OPTION_DEFAULT_SYMVER,
  118. OPTION_DEFAULT_IMPORTED_SYMVER,
  119. OPTION_DISCARD_NONE,
  120. OPTION_SPARE_DYNAMIC_TAGS,
  121. OPTION_NO_DEFINE_COMMON,
  122. OPTION_NOSTDLIB,
  123. OPTION_NO_OMAGIC,
  124. OPTION_STRIP_DISCARDED,
  125. OPTION_NO_STRIP_DISCARDED,
  126. OPTION_ACCEPT_UNKNOWN_INPUT_ARCH,
  127. OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH,
  128. OPTION_PIE,
  129. OPTION_NO_PIE,
  130. OPTION_UNRESOLVED_SYMBOLS,
  131. OPTION_WARN_UNRESOLVED_SYMBOLS,
  132. OPTION_ERROR_UNRESOLVED_SYMBOLS,
  133. OPTION_WARN_TEXTREL,
  134. OPTION_WARN_ALTERNATE_EM,
  135. OPTION_REDUCE_MEMORY_OVERHEADS,
  136. OPTION_MAX_CACHE_SIZE,
  137. #if BFD_SUPPORTS_PLUGINS
  138. OPTION_PLUGIN,
  139. OPTION_PLUGIN_OPT,
  140. #endif /* BFD_SUPPORTS_PLUGINS */
  141. OPTION_DEFAULT_SCRIPT,
  142. OPTION_PRINT_OUTPUT_FORMAT,
  143. OPTION_PRINT_SYSROOT,
  144. OPTION_IGNORE_UNRESOLVED_SYMBOL,
  145. OPTION_PUSH_STATE,
  146. OPTION_POP_STATE,
  147. OPTION_DISABLE_MULTIPLE_DEFS_ABS,
  148. OPTION_PRINT_MEMORY_USAGE,
  149. OPTION_REQUIRE_DEFINED_SYMBOL,
  150. OPTION_ORPHAN_HANDLING,
  151. OPTION_FORCE_GROUP_ALLOCATION,
  152. OPTION_PRINT_MAP_DISCARDED,
  153. OPTION_NO_PRINT_MAP_DISCARDED,
  154. OPTION_NON_CONTIGUOUS_REGIONS,
  155. OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS,
  156. OPTION_DEPENDENCY_FILE,
  157. OPTION_CTF_VARIABLES,
  158. OPTION_NO_CTF_VARIABLES,
  159. OPTION_CTF_SHARE_TYPES,
  160. };
  161. /* The initial parser states. */
  162. typedef enum input_enum {
  163. input_selected, /* We've set the initial state. */
  164. input_script,
  165. input_mri_script,
  166. input_version_script,
  167. input_dynamic_list,
  168. input_defsym
  169. } input_type;
  170. extern input_type parser_input;
  171. extern unsigned int lineno;
  172. extern const char *lex_string;
  173. /* In ldlex.l. */
  174. extern int yylex (void);
  175. extern void lex_push_file (FILE *, const char *, unsigned int);
  176. extern void lex_redirect (const char *, const char *, unsigned int);
  177. extern void ldlex_script (void);
  178. extern void ldlex_inputlist (void);
  179. extern void ldlex_mri_script (void);
  180. extern void ldlex_version_script (void);
  181. extern void ldlex_version_file (void);
  182. extern void ldlex_expression (void);
  183. extern void ldlex_wild (void);
  184. extern void ldlex_popstate (void);
  185. extern void ldlex_backup (void);
  186. extern const char* ldlex_filename (void);
  187. /* In lexsup.c. */
  188. extern int lex_input (void);
  189. extern void lex_unput (int);
  190. extern void parse_args (unsigned, char **);
  191. #endif