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