xref: /dflybsd-src/contrib/binutils-2.34/ld/ldlex.h (revision b52ef7118d1621abed722c5bbbd542210290ecef)
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