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