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