| 1 | /* ldlex.h - |
| 2 | Copyright (C) 1991-2017 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 LDLEX_H |
| 22 | #define LDLEX_H |
| 23 | |
| 24 | #include <stdio.h> |
| 25 | |
| 26 | /* Codes used for the long options with no short synonyms. 150 isn't |
| 27 | special; it's just an arbitrary non-ASCII char value. */ |
| 28 | enum option_values |
| 29 | { |
| 30 | OPTION_ASSERT = 150, |
| 31 | OPTION_CALL_SHARED, |
| 32 | OPTION_CREF, |
| 33 | OPTION_DEFSYM, |
| 34 | OPTION_DEMANGLE, |
| 35 | OPTION_DYNAMIC_LINKER, |
| 36 | OPTION_NO_DYNAMIC_LINKER, |
| 37 | OPTION_SYSROOT, |
| 38 | OPTION_OUT_IMPLIB, |
| 39 | OPTION_EB, |
| 40 | OPTION_EL, |
| 41 | OPTION_EMBEDDED_RELOCS, |
| 42 | OPTION_EXPORT_DYNAMIC, |
| 43 | OPTION_NO_EXPORT_DYNAMIC, |
| 44 | OPTION_HELP, |
| 45 | OPTION_IGNORE, |
| 46 | OPTION_MAP, |
| 47 | OPTION_NO_DEMANGLE, |
| 48 | OPTION_NO_KEEP_MEMORY, |
| 49 | OPTION_NO_WARN_MISMATCH, |
| 50 | OPTION_NO_WARN_SEARCH_MISMATCH, |
| 51 | OPTION_NOINHIBIT_EXEC, |
| 52 | OPTION_NON_SHARED, |
| 53 | OPTION_NO_WHOLE_ARCHIVE, |
| 54 | OPTION_OFORMAT, |
| 55 | OPTION_RELAX, |
| 56 | OPTION_NO_RELAX, |
| 57 | OPTION_RETAIN_SYMBOLS_FILE, |
| 58 | OPTION_RPATH, |
| 59 | OPTION_RPATH_LINK, |
| 60 | OPTION_SHARED, |
| 61 | OPTION_SONAME, |
| 62 | OPTION_SORT_COMMON, |
| 63 | OPTION_SORT_SECTION, |
| 64 | OPTION_STATS, |
| 65 | OPTION_SYMBOLIC, |
| 66 | OPTION_SYMBOLIC_FUNCTIONS, |
| 67 | OPTION_TASK_LINK, |
| 68 | OPTION_TBSS, |
| 69 | OPTION_TDATA, |
| 70 | OPTION_TTEXT, |
| 71 | OPTION_TTEXT_SEGMENT, |
| 72 | OPTION_TRODATA_SEGMENT, |
| 73 | OPTION_TLDATA_SEGMENT, |
| 74 | OPTION_TRADITIONAL_FORMAT, |
| 75 | OPTION_UR, |
| 76 | OPTION_VERBOSE, |
| 77 | OPTION_VERSION, |
| 78 | OPTION_VERSION_SCRIPT, |
| 79 | OPTION_VERSION_EXPORTS_SECTION, |
| 80 | OPTION_DYNAMIC_LIST, |
| 81 | OPTION_DYNAMIC_LIST_CPP_NEW, |
| 82 | OPTION_DYNAMIC_LIST_CPP_TYPEINFO, |
| 83 | OPTION_DYNAMIC_LIST_DATA, |
| 84 | OPTION_WARN_COMMON, |
| 85 | OPTION_WARN_CONSTRUCTORS, |
| 86 | OPTION_WARN_FATAL, |
| 87 | OPTION_NO_WARN_FATAL, |
| 88 | OPTION_WARN_MULTIPLE_GP, |
| 89 | OPTION_WARN_ONCE, |
| 90 | OPTION_WARN_SECTION_ALIGN, |
| 91 | OPTION_SPLIT_BY_RELOC, |
| 92 | OPTION_SPLIT_BY_FILE , |
| 93 | OPTION_WHOLE_ARCHIVE, |
| 94 | OPTION_ADD_DT_NEEDED_FOR_DYNAMIC, |
| 95 | OPTION_NO_ADD_DT_NEEDED_FOR_DYNAMIC, |
| 96 | OPTION_ADD_DT_NEEDED_FOR_REGULAR, |
| 97 | OPTION_NO_ADD_DT_NEEDED_FOR_REGULAR, |
| 98 | OPTION_WRAP, |
| 99 | OPTION_FORCE_EXE_SUFFIX, |
| 100 | OPTION_GC_SECTIONS, |
| 101 | OPTION_NO_GC_SECTIONS, |
| 102 | OPTION_PRINT_GC_SECTIONS, |
| 103 | OPTION_NO_PRINT_GC_SECTIONS, |
| 104 | OPTION_GC_KEEP_EXPORTED, |
| 105 | OPTION_HASH_SIZE, |
| 106 | OPTION_CHECK_SECTIONS, |
| 107 | OPTION_NO_CHECK_SECTIONS, |
| 108 | OPTION_NO_UNDEFINED, |
| 109 | OPTION_INIT, |
| 110 | OPTION_FINI, |
| 111 | OPTION_SECTION_START, |
| 112 | OPTION_UNIQUE, |
| 113 | OPTION_TARGET_HELP, |
| 114 | OPTION_ALLOW_SHLIB_UNDEFINED, |
| 115 | OPTION_NO_ALLOW_SHLIB_UNDEFINED, |
| 116 | OPTION_ALLOW_MULTIPLE_DEFINITION, |
| 117 | OPTION_NO_UNDEFINED_VERSION, |
| 118 | OPTION_DEFAULT_SYMVER, |
| 119 | OPTION_DEFAULT_IMPORTED_SYMVER, |
| 120 | OPTION_DISCARD_NONE, |
| 121 | OPTION_SPARE_DYNAMIC_TAGS, |
| 122 | OPTION_NO_DEFINE_COMMON, |
| 123 | OPTION_NOSTDLIB, |
| 124 | OPTION_NO_OMAGIC, |
| 125 | OPTION_STRIP_DISCARDED, |
| 126 | OPTION_NO_STRIP_DISCARDED, |
| 127 | OPTION_ACCEPT_UNKNOWN_INPUT_ARCH, |
| 128 | OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH, |
| 129 | OPTION_PIE, |
| 130 | OPTION_UNRESOLVED_SYMBOLS, |
| 131 | OPTION_WARN_UNRESOLVED_SYMBOLS, |
| 132 | OPTION_ERROR_UNRESOLVED_SYMBOLS, |
| 133 | OPTION_WARN_SHARED_TEXTREL, |
| 134 | OPTION_WARN_ALTERNATE_EM, |
| 135 | OPTION_REDUCE_MEMORY_OVERHEADS, |
| 136 | #ifdef ENABLE_PLUGINS |
| 137 | OPTION_PLUGIN, |
| 138 | OPTION_PLUGIN_OPT, |
| 139 | #endif /* ENABLE_PLUGINS */ |
| 140 | OPTION_DEFAULT_SCRIPT, |
| 141 | OPTION_PRINT_OUTPUT_FORMAT, |
| 142 | OPTION_PRINT_SYSROOT, |
| 143 | OPTION_IGNORE_UNRESOLVED_SYMBOL, |
| 144 | OPTION_PUSH_STATE, |
| 145 | OPTION_POP_STATE, |
| 146 | OPTION_PRINT_MEMORY_USAGE, |
| 147 | OPTION_REQUIRE_DEFINED_SYMBOL, |
| 148 | OPTION_ORPHAN_HANDLING, |
| 149 | OPTION_FORCE_GROUP_ALLOCATION, |
| 150 | }; |
| 151 | |
| 152 | /* The initial parser states. */ |
| 153 | typedef enum input_enum { |
| 154 | input_selected, /* We've set the initial state. */ |
| 155 | input_script, |
| 156 | input_mri_script, |
| 157 | input_version_script, |
| 158 | input_dynamic_list, |
| 159 | input_defsym |
| 160 | } input_type; |
| 161 | |
| 162 | extern input_type parser_input; |
| 163 | |
| 164 | extern unsigned int lineno; |
| 165 | extern const char *lex_string; |
| 166 | |
| 167 | /* In ldlex.l. */ |
| 168 | extern int yylex (void); |
| 169 | extern void lex_push_file (FILE *, const char *, unsigned int); |
| 170 | extern void lex_redirect (const char *, const char *, unsigned int); |
| 171 | extern void ldlex_script (void); |
| 172 | extern void ldlex_inputlist (void); |
| 173 | extern void ldlex_mri_script (void); |
| 174 | extern void ldlex_version_script (void); |
| 175 | extern void ldlex_version_file (void); |
| 176 | extern void ldlex_defsym (void); |
| 177 | extern void ldlex_expression (void); |
| 178 | extern void ldlex_both (void); |
| 179 | extern void ldlex_command (void); |
| 180 | extern void ldlex_popstate (void); |
| 181 | extern const char* ldlex_filename (void); |
| 182 | |
| 183 | /* In lexsup.c. */ |
| 184 | extern int lex_input (void); |
| 185 | extern void lex_unput (int); |
| 186 | extern void parse_args (unsigned, char **); |
| 187 | |
| 188 | #endif |