/* ldlex.h - Copyright (C) 1991-2024 Free Software Foundation, Inc. This file is part of the GNU Binutils. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ #ifndef LDLEX_H #define LDLEX_H #include /* Codes used for the long options with no short synonyms. 150 isn't special; it's just an arbitrary non-ASCII char value. */ enum option_values { OPTION_ASSERT = 150, OPTION_CALL_SHARED, OPTION_CREF, OPTION_DEFSYM, OPTION_DEMANGLE, OPTION_DYNAMIC_LINKER, OPTION_NO_DYNAMIC_LINKER, OPTION_SYSROOT, OPTION_OUT_IMPLIB, OPTION_EB, OPTION_EL, OPTION_EMBEDDED_RELOCS, OPTION_EXPORT_DYNAMIC, OPTION_NO_EXPORT_DYNAMIC, OPTION_HELP, OPTION_IGNORE, OPTION_MAP, OPTION_NO_DEMANGLE, OPTION_NO_KEEP_MEMORY, OPTION_NO_WARN_MISMATCH, OPTION_NO_WARN_SEARCH_MISMATCH, OPTION_NOINHIBIT_EXEC, OPTION_NON_SHARED, OPTION_NO_WHOLE_ARCHIVE, OPTION_OFORMAT, OPTION_RELAX, OPTION_NO_RELAX, OPTION_NO_SYMBOLIC, OPTION_RETAIN_SYMBOLS_FILE, OPTION_RPATH, OPTION_RPATH_LINK, OPTION_SHARED, OPTION_SONAME, OPTION_SORT_COMMON, OPTION_SORT_SECTION, OPTION_SECTION_ORDERING_FILE, OPTION_STATS, OPTION_SYMBOLIC, OPTION_SYMBOLIC_FUNCTIONS, OPTION_TASK_LINK, OPTION_TBSS, OPTION_TDATA, OPTION_TTEXT, OPTION_TTEXT_SEGMENT, OPTION_TRODATA_SEGMENT, OPTION_TLDATA_SEGMENT, OPTION_TRADITIONAL_FORMAT, OPTION_UR, OPTION_VERBOSE, OPTION_VERSION, OPTION_VERSION_SCRIPT, OPTION_VERSION_EXPORTS_SECTION, OPTION_DYNAMIC_LIST, OPTION_DYNAMIC_LIST_CPP_NEW, OPTION_DYNAMIC_LIST_CPP_TYPEINFO, OPTION_DYNAMIC_LIST_DATA, OPTION_EXPORT_DYNAMIC_SYMBOL, OPTION_EXPORT_DYNAMIC_SYMBOL_LIST, OPTION_WARN_COMMON, OPTION_WARN_CONSTRUCTORS, OPTION_WARN_FATAL, OPTION_NO_WARN_FATAL, OPTION_NO_WARNINGS, OPTION_WARN_MULTIPLE_GP, OPTION_WARN_ONCE, OPTION_WARN_SECTION_ALIGN, OPTION_SPLIT_BY_RELOC, OPTION_SPLIT_BY_FILE , OPTION_WHOLE_ARCHIVE, OPTION_ADD_DT_NEEDED_FOR_DYNAMIC, OPTION_NO_ADD_DT_NEEDED_FOR_DYNAMIC, OPTION_ADD_DT_NEEDED_FOR_REGULAR, OPTION_NO_ADD_DT_NEEDED_FOR_REGULAR, OPTION_WRAP, OPTION_FORCE_EXE_SUFFIX, OPTION_GC_SECTIONS, OPTION_NO_GC_SECTIONS, OPTION_PRINT_GC_SECTIONS, OPTION_NO_PRINT_GC_SECTIONS, OPTION_GC_KEEP_EXPORTED, OPTION_HASH_SIZE, OPTION_CHECK_SECTIONS, OPTION_NO_CHECK_SECTIONS, OPTION_NO_UNDEFINED, OPTION_INIT, OPTION_FINI, OPTION_SECTION_START, OPTION_UNIQUE, OPTION_TARGET_HELP, OPTION_ALLOW_SHLIB_UNDEFINED, OPTION_NO_ALLOW_SHLIB_UNDEFINED, OPTION_ALLOW_MULTIPLE_DEFINITION, #if SUPPORT_ERROR_HANDLING_SCRIPT OPTION_ERROR_HANDLING_SCRIPT, #endif OPTION_UNDEFINED_VERSION, OPTION_NO_UNDEFINED_VERSION, OPTION_DEFAULT_SYMVER, OPTION_DEFAULT_IMPORTED_SYMVER, OPTION_DISCARD_NONE, OPTION_SPARE_DYNAMIC_TAGS, OPTION_NO_DEFINE_COMMON, OPTION_NOSTDLIB, OPTION_NO_OMAGIC, OPTION_STRIP_DISCARDED, OPTION_NO_STRIP_DISCARDED, OPTION_ACCEPT_UNKNOWN_INPUT_ARCH, OPTION_NO_ACCEPT_UNKNOWN_INPUT_ARCH, OPTION_PIE, OPTION_NO_PIE, OPTION_UNRESOLVED_SYMBOLS, OPTION_WARN_UNRESOLVED_SYMBOLS, OPTION_ERROR_UNRESOLVED_SYMBOLS, OPTION_WARN_TEXTREL, OPTION_WARN_ALTERNATE_EM, OPTION_REDUCE_MEMORY_OVERHEADS, OPTION_MAX_CACHE_SIZE, #if BFD_SUPPORTS_PLUGINS OPTION_PLUGIN, OPTION_PLUGIN_OPT, OPTION_PLUGIN_SAVE_TEMPS, #endif /* BFD_SUPPORTS_PLUGINS */ OPTION_DEFAULT_SCRIPT, OPTION_PRINT_OUTPUT_FORMAT, OPTION_PRINT_SYSROOT, OPTION_IGNORE_UNRESOLVED_SYMBOL, OPTION_PUSH_STATE, OPTION_POP_STATE, OPTION_DISABLE_MULTIPLE_DEFS_ABS, OPTION_PRINT_MEMORY_USAGE, OPTION_REQUIRE_DEFINED_SYMBOL, OPTION_ORPHAN_HANDLING, OPTION_FORCE_GROUP_ALLOCATION, OPTION_PRINT_MAP_DISCARDED, OPTION_NO_PRINT_MAP_DISCARDED, OPTION_PRINT_MAP_LOCALS, OPTION_NO_PRINT_MAP_LOCALS, OPTION_NON_CONTIGUOUS_REGIONS, OPTION_NON_CONTIGUOUS_REGIONS_WARNINGS, OPTION_DEPENDENCY_FILE, OPTION_CTF_VARIABLES, OPTION_NO_CTF_VARIABLES, OPTION_CTF_SHARE_TYPES, OPTION_ERROR_EXECSTACK, OPTION_NO_ERROR_EXECSTACK, OPTION_WARN_EXECSTACK_OBJECTS, OPTION_WARN_EXECSTACK, OPTION_NO_WARN_EXECSTACK, OPTION_WARN_RWX_SEGMENTS, OPTION_NO_WARN_RWX_SEGMENTS, OPTION_ERROR_RWX_SEGMENTS, OPTION_NO_ERROR_RWX_SEGMENTS, OPTION_ENABLE_LINKER_VERSION, OPTION_DISABLE_LINKER_VERSION, OPTION_REMAP_INPUTS, OPTION_REMAP_INPUTS_FILE, /* Used by emultempl/elf.em, emultempl/pe.em and emultempl/pep.em. */ OPTION_BUILD_ID, OPTION_EXCLUDE_LIBS, /* Used by emulparams/elf32mcore.sh, emultempl/beos.em, emultempl/pe.em and emultempl/pep.em. */ OPTION_BASE_FILE, /* Used by emultempl/ppc32elf.em and emultempl/ppc64elf.em. */ OPTION_NO_INLINE_OPT, OPTION_NO_PLT_ALIGN, OPTION_NO_STUBSYMS, OPTION_NO_TLS_GET_ADDR_OPT, OPTION_NO_TLS_OPT, OPTION_PLT_ALIGN, OPTION_STUBSYMS, /* Used by emultempl/armelf.em and emultempl/tic6xdsbt.em. */ OPTION_NO_MERGE_EXIDX_ENTRIES, /* Used by emultempl/aarch64elf.em and emultempl/armelf.em. */ OPTION_PIC_VENEER, OPTION_NO_ENUM_SIZE_WARNING, OPTION_NO_WCHAR_SIZE_WARNING, /* Used by emultempl/armelf.em and emultempl/pe.em. */ OPTION_THUMB_ENTRY, /* Used by emultempl/beos.em, emultempl/nto.em, emultempl/pe.em and emultempl/pep.em. */ OPTION_STACK, /* Used by emultempl/aarch64elf.em, emultempl/armelf.em, emultempl/cskyelf.em, emultempl/hppaelf.em, emultempl/metagelf.em and emultempl/ppc64elf.em. */ OPTION_STUBGROUP_SIZE, /* Used by emulparams/plt_unwind.sh. */ OPTION_LD_GENERATED_UNWIND_INFO, OPTION_NO_LD_GENERATED_UNWIND_INFO, /* Used by emultempl/aarch64elf.em. */ OPTION_FIX_ERRATUM_835769, OPTION_FIX_ERRATUM_843419, OPTION_NO_APPLY_DYNAMIC_RELOCS, /* Used by emultempl/aix.em. */ OPTION_AUTOIMP, OPTION_ERNOTOK, OPTION_EROK, OPTION_EXPALL, OPTION_EXPFULL, OPTION_EXPORT, OPTION_IMPORT, OPTION_INITFINI, OPTION_LOADMAP, OPTION_MAXDATA, OPTION_MAXSTACK, OPTION_MODTYPE, OPTION_NOAUTOIMP, OPTION_NOEXPALL, OPTION_NOEXPFULL, OPTION_NOSTRCMPCT, OPTION_PD, OPTION_PT, OPTION_STRCMPCT, OPTION_UNIX, OPTION_32, OPTION_64, OPTION_LIBPATH, OPTION_NOLIBPATH, /* Used by emultempl/alphaelf.em. */ OPTION_TASO, OPTION_SECUREPLT, OPTION_NO_SECUREPLT, /* Used by emultempl/armelf.em. */ OPTION_BE8, OPTION_TARGET1_REL, OPTION_TARGET1_ABS, OPTION_TARGET2, OPTION_FIX_V4BX, OPTION_USE_BLX, OPTION_VFP11_DENORM_FIX, OPTION_FIX_V4BX_INTERWORKING, OPTION_FIX_CORTEX_A8, OPTION_NO_FIX_CORTEX_A8, OPTION_FIX_ARM1176, OPTION_NO_FIX_ARM1176, OPTION_LONG_PLT, OPTION_STM32L4XX_FIX, OPTION_CMSE_IMPLIB, OPTION_IN_IMPLIB, /* Used by emultempl/avrelf.em. */ OPTION_NO_CALL_RET_REPLACEMENT, OPTION_PMEM_WRAP_AROUND, OPTION_NO_STUBS, OPTION_DEBUG_STUBS, OPTION_DEBUG_RELAX, /* Used by emultempl/bfin.em. */ OPTION_CODE_IN_L1, OPTION_DATA_IN_L1, /* Used by emultempl/cskyelf.em. */ OPTION_BRANCH_STUB, OPTION_NO_BRANCH_STUB, /* Used by emultempl/elf.em. */ OPTION_DISABLE_NEW_DTAGS, OPTION_ENABLE_NEW_DTAGS, OPTION_GROUP, OPTION_EH_FRAME_HDR, OPTION_NO_EH_FRAME_HDR, OPTION_HASH_STYLE, OPTION_PACKAGE_METADATA, OPTION_AUDIT, OPTION_COMPRESS_DEBUG, OPTION_ROSEGMENT, OPTION_NO_ROSEGMENT, /* Used by emultempl/hppaelf.em. */ OPTION_MULTI_SUBSPACE, /* Used by emultempl/ia64elf.em. */ OPTION_ITANIUM, /* Used by emultempl/m68hc1xelf.em. */ OPTION_NO_TRAMPOLINE, OPTION_BANK_WINDOW, /* Used by emultempl/m68kelf.em. */ OPTION_GOT, /* Used by emultempl/mipself.em. */ OPTION_INSN32, OPTION_NO_INSN32, OPTION_IGNORE_BRANCH_ISA, OPTION_NO_IGNORE_BRANCH_ISA, OPTION_COMPACT_BRANCHES, OPTION_NO_COMPACT_BRANCHES, /* Used by emultempl/msp430.em. */ OPTION_CODE_REGION, OPTION_DATA_REGION, OPTION_DISABLE_TRANS, /* Used by emultempl/nds32elf.em. */ OPTION_BASELINE, OPTION_ELIM_GC_RELOCS, OPTION_FP_AS_GP, OPTION_NO_FP_AS_GP, OPTION_REDUCE_FP_UPDATE, OPTION_NO_REDUCE_FP_UPDATE, OPTION_EXPORT_SYMBOLS, OPTION_HYPER_RELAX, OPTION_TLSDESC_TRAMPOLINE, OPTION_NO_TLSDESC_TRAMPOLINE, /* Used by emultempl/nto.em. */ OPTION_LAZY_STACK, /* Used by emultempl/pe.em, emultempl/pep.em and emultempl/beos.em. */ OPTION_DLL, OPTION_FILE_ALIGNMENT, OPTION_IMAGE_BASE, OPTION_MAJOR_IMAGE_VERSION, OPTION_MAJOR_OS_VERSION, OPTION_MAJOR_SUBSYSTEM_VERSION, OPTION_MINOR_IMAGE_VERSION, OPTION_MINOR_OS_VERSION, OPTION_MINOR_SUBSYSTEM_VERSION, OPTION_SECTION_ALIGNMENT, OPTION_SUBSYSTEM, OPTION_HEAP, OPTION_SUPPORT_OLD_CODE, OPTION_OUT_DEF, OPTION_EXPORT_ALL, OPTION_EXCLUDE_SYMBOLS, OPTION_EXCLUDE_ALL_SYMBOLS, OPTION_KILL_ATS, OPTION_STDCALL_ALIASES, OPTION_ENABLE_STDCALL_FIXUP, OPTION_DISABLE_STDCALL_FIXUP, OPTION_WARN_DUPLICATE_EXPORTS, OPTION_IMP_COMPAT, OPTION_ENABLE_AUTO_IMAGE_BASE, OPTION_DISABLE_AUTO_IMAGE_BASE, OPTION_DLL_SEARCH_PREFIX, OPTION_NO_DEFAULT_EXCLUDES, OPTION_DLL_ENABLE_AUTO_IMPORT, OPTION_DLL_DISABLE_AUTO_IMPORT, OPTION_ENABLE_EXTRA_PE_DEBUG, OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC, OPTION_DLL_DISABLE_RUNTIME_PSEUDO_RELOC, OPTION_LARGE_ADDRESS_AWARE, OPTION_DISABLE_LARGE_ADDRESS_AWARE, OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V1, OPTION_DLL_ENABLE_RUNTIME_PSEUDO_RELOC_V2, OPTION_EXCLUDE_MODULES_FOR_IMPLIB, OPTION_USE_NUL_PREFIXED_IMPORT_TABLES, OPTION_NO_LEADING_UNDERSCORE, OPTION_LEADING_UNDERSCORE, OPTION_ENABLE_LONG_SECTION_NAMES, OPTION_DISABLE_LONG_SECTION_NAMES, /* DLLCharacteristics flags. */ OPTION_DYNAMIC_BASE, OPTION_FORCE_INTEGRITY, OPTION_NX_COMPAT, OPTION_NO_ISOLATION, OPTION_NO_SEH, OPTION_NO_BIND, OPTION_WDM_DRIVER, OPTION_TERMINAL_SERVER_AWARE, /* Determinism. */ OPTION_INSERT_TIMESTAMP, OPTION_NO_INSERT_TIMESTAMP, OPTION_PDB, OPTION_ENABLE_RELOC_SECTION, OPTION_DISABLE_RELOC_SECTION, /* DLL Characteristics flags. */ OPTION_DISABLE_DYNAMIC_BASE, OPTION_DISABLE_FORCE_INTEGRITY, OPTION_DISABLE_NX_COMPAT, OPTION_DISABLE_NO_ISOLATION, OPTION_DISABLE_NO_SEH, OPTION_DISABLE_NO_BIND, OPTION_DISABLE_WDM_DRIVER, OPTION_DISABLE_TERMINAL_SERVER_AWARE, /* Used by emultempl/pep.em. */ OPTION_DISABLE_HIGH_ENTROPY_VA, OPTION_HIGH_ENTROPY_VA, /* Used by emultempl/ppc32elf.em. */ OPTION_NEW_PLT, OPTION_OLD_PLT, OPTION_OLD_GOT, OPTION_PPC476_WORKAROUND, OPTION_NO_PPC476_WORKAROUND, OPTION_NO_PICFIXUP, OPTION_VLE_RELOC_FIXUP, /* Used by emultempl/ppc64elf.em. */ OPTION_PLT_STATIC_CHAIN, OPTION_NO_PLT_STATIC_CHAIN, OPTION_PLT_THREAD_SAFE, OPTION_NO_PLT_THREAD_SAFE, OPTION_PLT_LOCALENTRY, OPTION_NO_PLT_LOCALENTRY, OPTION_POWER10_STUBS, OPTION_NO_POWER10_STUBS, OPTION_NO_PCREL_OPT, OPTION_SAVRES, OPTION_NO_SAVRES, OPTION_DOTSYMS, OPTION_NO_DOTSYMS, OPTION_TLS_GET_ADDR_OPT, OPTION_TLS_GET_ADDR_REGSAVE, OPTION_NO_TLS_GET_ADDR_REGSAVE, OPTION_NO_OPD_OPT, OPTION_NO_TOC_OPT, OPTION_NO_MULTI_TOC, OPTION_NO_TOC_SORT, OPTION_NON_OVERLAPPING_OPD, /* Used by emultempl/riscvelf.em. */ OPTION_RELAX_GP, OPTION_NO_RELAX_GP, OPTION_CHECK_ULEB128, OPTION_NO_CHECK_ULEB128, /* Used by emultempl/rxelf.em. */ OPTION_NO_FLAG_MISMATCH_WARNINGS, OPTION_IGNORE_LMA, OPTION_NO_IGNORE_LMA, OPTION_FLAG_MISMATCH_WARNINGS, /* Used by emultempl/s390.em. */ OPTION_PGSTE, /* Used by emultempl/spuelf.em. */ OPTION_SPU_PLUGIN, OPTION_SPU_NO_OVERLAYS, OPTION_SPU_COMPACT_STUBS, OPTION_SPU_STUB_SYMS, OPTION_SPU_NON_OVERLAY_STUBS, OPTION_SPU_LOCAL_STORE, OPTION_SPU_STACK_ANALYSIS, OPTION_SPU_STACK_SYMS, OPTION_SPU_AUTO_OVERLAY, OPTION_SPU_AUTO_RELINK, OPTION_SPU_OVERLAY_RODATA, OPTION_SPU_SOFT_ICACHE, OPTION_SPU_LINE_SIZE, OPTION_SPU_NUM_LINES, OPTION_SPU_LRLIVE, OPTION_SPU_NON_IA_TEXT, OPTION_SPU_FIXED_SPACE, OPTION_SPU_RESERVED_SPACE, OPTION_SPU_EXTRA_STACK, OPTION_SPU_NO_AUTO_OVERLAY, OPTION_SPU_EMIT_FIXUPS, /* Used by emultempl/tic6xdsbt.em. */ OPTION_DSBT_INDEX, OPTION_DSBT_SIZE, /* Used by emultempl/ticoff.em. */ OPTION_COFF_FORMAT, /* Used by emultempl/vms.em. */ OPTION_IDENTIFICATION, /* Used by emultempl/vxworks.em. */ OPTION_FORCE_DYNAMIC, /* Used by emultempl/xtensaelf.em. */ OPTION_OPT_SIZEOPT, OPTION_LITERAL_MOVEMENT, OPTION_NO_LITERAL_MOVEMENT, OPTION_ABI_WINDOWED, OPTION_ABI_CALL0, }; /* The initial parser states. */ typedef enum input_enum { input_selected, /* We've set the initial state. */ input_script, input_mri_script, input_version_script, input_section_ordering_script, input_dynamic_list, input_defsym } input_type; extern input_type parser_input; extern unsigned int lineno; extern const char *lex_string; /* In ldlex.l. */ extern int yylex (void); extern void lex_push_file (FILE *, const char *, unsigned int); extern void lex_redirect (const char *, const char *, unsigned int); extern void ldlex_script (void); extern void ldlex_inputlist (void); extern void ldlex_mri_script (void); extern void ldlex_version_script (void); extern void ldlex_version_file (void); extern void ldlex_expression (void); extern void ldlex_wild (void); extern void ldlex_popstate (void); extern void ldlex_backup (void); extern const char* ldlex_filename (void); /* In lexsup.c. */ extern int lex_input (void); extern void lex_unput (int); extern void parse_args (unsigned, char **); #endif