1 /* A Bison parser, made by GNU Bison 3.8.2. */
2
3 /* Bison implementation for Yacc-like parsers in C
4
5 Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation,
6 Inc.
7
8 This program is free software: you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation, either version 3 of the License, or
11 (at your option) any later version.
12
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with this program. If not, see <https://www.gnu.org/licenses/>. */
20
21 /* As a special exception, you may create a larger work that contains
22 part or all of the Bison parser skeleton and distribute that work
23 under terms of your choice, so long as that work isn't itself a
24 parser generator using the skeleton or a modified version thereof
25 as a parser skeleton. Alternatively, if you modify or redistribute
26 the parser skeleton itself, you may (at your option) remove this
27 special exception, which will cause the skeleton and the resulting
28 Bison output files to be licensed under the GNU General Public
29 License without this special exception.
30
31 This special exception was added by the Free Software Foundation in
32 version 2.2 of Bison. */
33
34 /* C LALR(1) parser skeleton written by Richard Stallman, by
35 simplifying the original so-called "semantic" parser. */
36
37 /* DO NOT RELY ON FEATURES THAT ARE NOT DOCUMENTED in the manual,
38 especially those whose name start with YY_ or yy_. They are
39 private implementation details that can be changed or removed. */
40
41 /* All symbols defined below should begin with yy or YY, to avoid
42 infringing on user name space. This should be done even for local
43 variables, as they might otherwise be expanded by user macros.
44 There are some unavoidable exceptions within include files to
45 define necessary library symbols; they are noted "INFRINGES ON
46 USER NAME SPACE" below. */
47
48 /* Identify Bison output, and Bison version. */
49 #define YYBISON 30802
50
51 /* Bison version string. */
52 #define YYBISON_VERSION "3.8.2"
53
54 /* Skeleton name. */
55 #define YYSKELETON_NAME "yacc.c"
56
57 /* Pure parsers. */
58 #define YYPURE 1
59
60 /* Push parsers. */
61 #define YYPUSH 0
62
63 /* Pull parsers. */
64 #define YYPULL 1
65
66
67
68
69 /* First part of user prologue. */
70 #line 26 "yyscript.y"
71
72
73 #include "config.h"
74
75 #include <stddef.h>
76 #include <stdint.h>
77 #include <stdlib.h>
78 #include <string.h>
79
80 #include "script-c.h"
81
82
83 #line 84 "yyscript.c"
84
85 # ifndef YY_CAST
86 # ifdef __cplusplus
87 # define YY_CAST(Type, Val) static_cast<Type> (Val)
88 # define YY_REINTERPRET_CAST(Type, Val) reinterpret_cast<Type> (Val)
89 # else
90 # define YY_CAST(Type, Val) ((Type) (Val))
91 # define YY_REINTERPRET_CAST(Type, Val) ((Type) (Val))
92 # endif
93 # endif
94 # ifndef YY_NULLPTR
95 # if defined __cplusplus
96 # if 201103L <= __cplusplus
97 # define YY_NULLPTR nullptr
98 # else
99 # define YY_NULLPTR 0
100 # endif
101 # else
102 # define YY_NULLPTR ((void*)0)
103 # endif
104 # endif
105
106 /* Use api.header.include to #include this header
107 instead of duplicating it here. */
108 #ifndef YY_YY_YYSCRIPT_H_INCLUDED
109 # define YY_YY_YYSCRIPT_H_INCLUDED
110 /* Debug traces. */
111 #ifndef YYDEBUG
112 # define YYDEBUG 0
113 #endif
114 #if YYDEBUG
115 extern int yydebug;
116 #endif
117
118 /* Token kinds. */
119 #ifndef YYTOKENTYPE
120 # define YYTOKENTYPE
121 enum yytokentype
122 {
123 YYEMPTY = -2,
124 YYEOF = 0, /* "end of file" */
125 YYerror = 256, /* error */
126 YYUNDEF = 257, /* "invalid token" */
127 PLUSEQ = 258, /* PLUSEQ */
128 MINUSEQ = 259, /* MINUSEQ */
129 MULTEQ = 260, /* MULTEQ */
130 DIVEQ = 261, /* DIVEQ */
131 LSHIFTEQ = 262, /* LSHIFTEQ */
132 RSHIFTEQ = 263, /* RSHIFTEQ */
133 ANDEQ = 264, /* ANDEQ */
134 OREQ = 265, /* OREQ */
135 OROR = 266, /* OROR */
136 ANDAND = 267, /* ANDAND */
137 EQ = 268, /* EQ */
138 NE = 269, /* NE */
139 LE = 270, /* LE */
140 GE = 271, /* GE */
141 LSHIFT = 272, /* LSHIFT */
142 RSHIFT = 273, /* RSHIFT */
143 UNARY = 274, /* UNARY */
144 STRING = 275, /* STRING */
145 QUOTED_STRING = 276, /* QUOTED_STRING */
146 INTEGER = 277, /* INTEGER */
147 ABSOLUTE = 278, /* ABSOLUTE */
148 ADDR = 279, /* ADDR */
149 ALIGN_K = 280, /* ALIGN_K */
150 ALIGNOF = 281, /* ALIGNOF */
151 ASSERT_K = 282, /* ASSERT_K */
152 AS_NEEDED = 283, /* AS_NEEDED */
153 AT = 284, /* AT */
154 BIND = 285, /* BIND */
155 BLOCK = 286, /* BLOCK */
156 BYTE = 287, /* BYTE */
157 CONSTANT = 288, /* CONSTANT */
158 CONSTRUCTORS = 289, /* CONSTRUCTORS */
159 COPY = 290, /* COPY */
160 CREATE_OBJECT_SYMBOLS = 291, /* CREATE_OBJECT_SYMBOLS */
161 DATA_SEGMENT_ALIGN = 292, /* DATA_SEGMENT_ALIGN */
162 DATA_SEGMENT_END = 293, /* DATA_SEGMENT_END */
163 DATA_SEGMENT_RELRO_END = 294, /* DATA_SEGMENT_RELRO_END */
164 DEFINED = 295, /* DEFINED */
165 DSECT = 296, /* DSECT */
166 ENTRY = 297, /* ENTRY */
167 EXCLUDE_FILE = 298, /* EXCLUDE_FILE */
168 EXTERN = 299, /* EXTERN */
169 FILL = 300, /* FILL */
170 FLOAT = 301, /* FLOAT */
171 FORCE_COMMON_ALLOCATION = 302, /* FORCE_COMMON_ALLOCATION */
172 GLOBAL = 303, /* GLOBAL */
173 GROUP = 304, /* GROUP */
174 HIDDEN = 305, /* HIDDEN */
175 HLL = 306, /* HLL */
176 INCLUDE = 307, /* INCLUDE */
177 INHIBIT_COMMON_ALLOCATION = 308, /* INHIBIT_COMMON_ALLOCATION */
178 INFO = 309, /* INFO */
179 INPUT = 310, /* INPUT */
180 KEEP = 311, /* KEEP */
181 LEN = 312, /* LEN */
182 LENGTH = 313, /* LENGTH */
183 LOADADDR = 314, /* LOADADDR */
184 LOCAL = 315, /* LOCAL */
185 LONG = 316, /* LONG */
186 MAP = 317, /* MAP */
187 MAX_K = 318, /* MAX_K */
188 MEMORY = 319, /* MEMORY */
189 MIN_K = 320, /* MIN_K */
190 NEXT = 321, /* NEXT */
191 NOCROSSREFS = 322, /* NOCROSSREFS */
192 NOFLOAT = 323, /* NOFLOAT */
193 NOLOAD = 324, /* NOLOAD */
194 ONLY_IF_RO = 325, /* ONLY_IF_RO */
195 ONLY_IF_RW = 326, /* ONLY_IF_RW */
196 ORG = 327, /* ORG */
197 ORIGIN = 328, /* ORIGIN */
198 OUTPUT = 329, /* OUTPUT */
199 OUTPUT_ARCH = 330, /* OUTPUT_ARCH */
200 OUTPUT_FORMAT = 331, /* OUTPUT_FORMAT */
201 OVERLAY = 332, /* OVERLAY */
202 PHDRS = 333, /* PHDRS */
203 PROVIDE = 334, /* PROVIDE */
204 PROVIDE_HIDDEN = 335, /* PROVIDE_HIDDEN */
205 QUAD = 336, /* QUAD */
206 SEARCH_DIR = 337, /* SEARCH_DIR */
207 SECTIONS = 338, /* SECTIONS */
208 SEGMENT_START = 339, /* SEGMENT_START */
209 SHORT = 340, /* SHORT */
210 SIZEOF = 341, /* SIZEOF */
211 SIZEOF_HEADERS = 342, /* SIZEOF_HEADERS */
212 SORT_BY_ALIGNMENT = 343, /* SORT_BY_ALIGNMENT */
213 SORT_BY_INIT_PRIORITY = 344, /* SORT_BY_INIT_PRIORITY */
214 SORT_BY_NAME = 345, /* SORT_BY_NAME */
215 SPECIAL = 346, /* SPECIAL */
216 SQUAD = 347, /* SQUAD */
217 STARTUP = 348, /* STARTUP */
218 SUBALIGN = 349, /* SUBALIGN */
219 SYSLIB = 350, /* SYSLIB */
220 TARGET_K = 351, /* TARGET_K */
221 TRUNCATE = 352, /* TRUNCATE */
222 VERSIONK = 353, /* VERSIONK */
223 OPTION = 354, /* OPTION */
224 PARSING_LINKER_SCRIPT = 355, /* PARSING_LINKER_SCRIPT */
225 PARSING_VERSION_SCRIPT = 356, /* PARSING_VERSION_SCRIPT */
226 PARSING_DEFSYM = 357, /* PARSING_DEFSYM */
227 PARSING_DYNAMIC_LIST = 358, /* PARSING_DYNAMIC_LIST */
228 PARSING_SECTIONS_BLOCK = 359, /* PARSING_SECTIONS_BLOCK */
229 PARSING_SECTION_COMMANDS = 360, /* PARSING_SECTION_COMMANDS */
230 PARSING_MEMORY_DEF = 361 /* PARSING_MEMORY_DEF */
231 };
232 typedef enum yytokentype yytoken_kind_t;
233 #endif
234 /* Token kinds. */
235 #define YYEMPTY -2
236 #define YYEOF 0
237 #define YYerror 256
238 #define YYUNDEF 257
239 #define PLUSEQ 258
240 #define MINUSEQ 259
241 #define MULTEQ 260
242 #define DIVEQ 261
243 #define LSHIFTEQ 262
244 #define RSHIFTEQ 263
245 #define ANDEQ 264
246 #define OREQ 265
247 #define OROR 266
248 #define ANDAND 267
249 #define EQ 268
250 #define NE 269
251 #define LE 270
252 #define GE 271
253 #define LSHIFT 272
254 #define RSHIFT 273
255 #define UNARY 274
256 #define STRING 275
257 #define QUOTED_STRING 276
258 #define INTEGER 277
259 #define ABSOLUTE 278
260 #define ADDR 279
261 #define ALIGN_K 280
262 #define ALIGNOF 281
263 #define ASSERT_K 282
264 #define AS_NEEDED 283
265 #define AT 284
266 #define BIND 285
267 #define BLOCK 286
268 #define BYTE 287
269 #define CONSTANT 288
270 #define CONSTRUCTORS 289
271 #define COPY 290
272 #define CREATE_OBJECT_SYMBOLS 291
273 #define DATA_SEGMENT_ALIGN 292
274 #define DATA_SEGMENT_END 293
275 #define DATA_SEGMENT_RELRO_END 294
276 #define DEFINED 295
277 #define DSECT 296
278 #define ENTRY 297
279 #define EXCLUDE_FILE 298
280 #define EXTERN 299
281 #define FILL 300
282 #define FLOAT 301
283 #define FORCE_COMMON_ALLOCATION 302
284 #define GLOBAL 303
285 #define GROUP 304
286 #define HIDDEN 305
287 #define HLL 306
288 #define INCLUDE 307
289 #define INHIBIT_COMMON_ALLOCATION 308
290 #define INFO 309
291 #define INPUT 310
292 #define KEEP 311
293 #define LEN 312
294 #define LENGTH 313
295 #define LOADADDR 314
296 #define LOCAL 315
297 #define LONG 316
298 #define MAP 317
299 #define MAX_K 318
300 #define MEMORY 319
301 #define MIN_K 320
302 #define NEXT 321
303 #define NOCROSSREFS 322
304 #define NOFLOAT 323
305 #define NOLOAD 324
306 #define ONLY_IF_RO 325
307 #define ONLY_IF_RW 326
308 #define ORG 327
309 #define ORIGIN 328
310 #define OUTPUT 329
311 #define OUTPUT_ARCH 330
312 #define OUTPUT_FORMAT 331
313 #define OVERLAY 332
314 #define PHDRS 333
315 #define PROVIDE 334
316 #define PROVIDE_HIDDEN 335
317 #define QUAD 336
318 #define SEARCH_DIR 337
319 #define SECTIONS 338
320 #define SEGMENT_START 339
321 #define SHORT 340
322 #define SIZEOF 341
323 #define SIZEOF_HEADERS 342
324 #define SORT_BY_ALIGNMENT 343
325 #define SORT_BY_INIT_PRIORITY 344
326 #define SORT_BY_NAME 345
327 #define SPECIAL 346
328 #define SQUAD 347
329 #define STARTUP 348
330 #define SUBALIGN 349
331 #define SYSLIB 350
332 #define TARGET_K 351
333 #define TRUNCATE 352
334 #define VERSIONK 353
335 #define OPTION 354
336 #define PARSING_LINKER_SCRIPT 355
337 #define PARSING_VERSION_SCRIPT 356
338 #define PARSING_DEFSYM 357
339 #define PARSING_DYNAMIC_LIST 358
340 #define PARSING_SECTIONS_BLOCK 359
341 #define PARSING_SECTION_COMMANDS 360
342 #define PARSING_MEMORY_DEF 361
343
344 /* Value type. */
345 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
346 union YYSTYPE
347 {
348 #line 53 "yyscript.y"
349
350 /* A string. */
351 struct Parser_string string;
352 /* A number. */
353 uint64_t integer;
354 /* An expression. */
355 Expression_ptr expr;
356 /* An output section header. */
357 struct Parser_output_section_header output_section_header;
358 /* An output section trailer. */
359 struct Parser_output_section_trailer output_section_trailer;
360 /* A section constraint. */
361 enum Section_constraint constraint;
362 /* A complete input section specification. */
363 struct Input_section_spec input_section_spec;
364 /* A list of wildcard specifications, with exclusions. */
365 struct Wildcard_sections wildcard_sections;
366 /* A single wildcard specification. */
367 struct Wildcard_section wildcard_section;
368 /* A list of strings. */
369 String_list_ptr string_list;
370 /* Information for a program header. */
371 struct Phdr_info phdr_info;
372 /* Used for version scripts and within VERSION {}. */
373 struct Version_dependency_list* deplist;
374 struct Version_expression_list* versyms;
375 struct Version_tree* versnode;
376 enum Script_section_type section_type;
377
378 #line 379 "yyscript.c"
379
380 };
381 typedef union YYSTYPE YYSTYPE;
382 # define YYSTYPE_IS_TRIVIAL 1
383 # define YYSTYPE_IS_DECLARED 1
384 #endif
385
386
387
388
389 int yyparse (void* closure);
390
391
392 #endif /* !YY_YY_YYSCRIPT_H_INCLUDED */
393 /* Symbol kind. */
394 enum yysymbol_kind_t
395 {
396 YYSYMBOL_YYEMPTY = -2,
397 YYSYMBOL_YYEOF = 0, /* "end of file" */
398 YYSYMBOL_YYerror = 1, /* error */
399 YYSYMBOL_YYUNDEF = 2, /* "invalid token" */
400 YYSYMBOL_PLUSEQ = 3, /* PLUSEQ */
401 YYSYMBOL_MINUSEQ = 4, /* MINUSEQ */
402 YYSYMBOL_MULTEQ = 5, /* MULTEQ */
403 YYSYMBOL_DIVEQ = 6, /* DIVEQ */
404 YYSYMBOL_7_ = 7, /* '=' */
405 YYSYMBOL_LSHIFTEQ = 8, /* LSHIFTEQ */
406 YYSYMBOL_RSHIFTEQ = 9, /* RSHIFTEQ */
407 YYSYMBOL_ANDEQ = 10, /* ANDEQ */
408 YYSYMBOL_OREQ = 11, /* OREQ */
409 YYSYMBOL_12_ = 12, /* '?' */
410 YYSYMBOL_13_ = 13, /* ':' */
411 YYSYMBOL_OROR = 14, /* OROR */
412 YYSYMBOL_ANDAND = 15, /* ANDAND */
413 YYSYMBOL_16_ = 16, /* '|' */
414 YYSYMBOL_17_ = 17, /* '^' */
415 YYSYMBOL_18_ = 18, /* '&' */
416 YYSYMBOL_EQ = 19, /* EQ */
417 YYSYMBOL_NE = 20, /* NE */
418 YYSYMBOL_21_ = 21, /* '<' */
419 YYSYMBOL_22_ = 22, /* '>' */
420 YYSYMBOL_LE = 23, /* LE */
421 YYSYMBOL_GE = 24, /* GE */
422 YYSYMBOL_LSHIFT = 25, /* LSHIFT */
423 YYSYMBOL_RSHIFT = 26, /* RSHIFT */
424 YYSYMBOL_27_ = 27, /* '+' */
425 YYSYMBOL_28_ = 28, /* '-' */
426 YYSYMBOL_29_ = 29, /* '*' */
427 YYSYMBOL_30_ = 30, /* '/' */
428 YYSYMBOL_31_ = 31, /* '%' */
429 YYSYMBOL_UNARY = 32, /* UNARY */
430 YYSYMBOL_STRING = 33, /* STRING */
431 YYSYMBOL_QUOTED_STRING = 34, /* QUOTED_STRING */
432 YYSYMBOL_INTEGER = 35, /* INTEGER */
433 YYSYMBOL_ABSOLUTE = 36, /* ABSOLUTE */
434 YYSYMBOL_ADDR = 37, /* ADDR */
435 YYSYMBOL_ALIGN_K = 38, /* ALIGN_K */
436 YYSYMBOL_ALIGNOF = 39, /* ALIGNOF */
437 YYSYMBOL_ASSERT_K = 40, /* ASSERT_K */
438 YYSYMBOL_AS_NEEDED = 41, /* AS_NEEDED */
439 YYSYMBOL_AT = 42, /* AT */
440 YYSYMBOL_BIND = 43, /* BIND */
441 YYSYMBOL_BLOCK = 44, /* BLOCK */
442 YYSYMBOL_BYTE = 45, /* BYTE */
443 YYSYMBOL_CONSTANT = 46, /* CONSTANT */
444 YYSYMBOL_CONSTRUCTORS = 47, /* CONSTRUCTORS */
445 YYSYMBOL_COPY = 48, /* COPY */
446 YYSYMBOL_CREATE_OBJECT_SYMBOLS = 49, /* CREATE_OBJECT_SYMBOLS */
447 YYSYMBOL_DATA_SEGMENT_ALIGN = 50, /* DATA_SEGMENT_ALIGN */
448 YYSYMBOL_DATA_SEGMENT_END = 51, /* DATA_SEGMENT_END */
449 YYSYMBOL_DATA_SEGMENT_RELRO_END = 52, /* DATA_SEGMENT_RELRO_END */
450 YYSYMBOL_DEFINED = 53, /* DEFINED */
451 YYSYMBOL_DSECT = 54, /* DSECT */
452 YYSYMBOL_ENTRY = 55, /* ENTRY */
453 YYSYMBOL_EXCLUDE_FILE = 56, /* EXCLUDE_FILE */
454 YYSYMBOL_EXTERN = 57, /* EXTERN */
455 YYSYMBOL_FILL = 58, /* FILL */
456 YYSYMBOL_FLOAT = 59, /* FLOAT */
457 YYSYMBOL_FORCE_COMMON_ALLOCATION = 60, /* FORCE_COMMON_ALLOCATION */
458 YYSYMBOL_GLOBAL = 61, /* GLOBAL */
459 YYSYMBOL_GROUP = 62, /* GROUP */
460 YYSYMBOL_HIDDEN = 63, /* HIDDEN */
461 YYSYMBOL_HLL = 64, /* HLL */
462 YYSYMBOL_INCLUDE = 65, /* INCLUDE */
463 YYSYMBOL_INHIBIT_COMMON_ALLOCATION = 66, /* INHIBIT_COMMON_ALLOCATION */
464 YYSYMBOL_INFO = 67, /* INFO */
465 YYSYMBOL_INPUT = 68, /* INPUT */
466 YYSYMBOL_KEEP = 69, /* KEEP */
467 YYSYMBOL_LEN = 70, /* LEN */
468 YYSYMBOL_LENGTH = 71, /* LENGTH */
469 YYSYMBOL_LOADADDR = 72, /* LOADADDR */
470 YYSYMBOL_LOCAL = 73, /* LOCAL */
471 YYSYMBOL_LONG = 74, /* LONG */
472 YYSYMBOL_MAP = 75, /* MAP */
473 YYSYMBOL_MAX_K = 76, /* MAX_K */
474 YYSYMBOL_MEMORY = 77, /* MEMORY */
475 YYSYMBOL_MIN_K = 78, /* MIN_K */
476 YYSYMBOL_NEXT = 79, /* NEXT */
477 YYSYMBOL_NOCROSSREFS = 80, /* NOCROSSREFS */
478 YYSYMBOL_NOFLOAT = 81, /* NOFLOAT */
479 YYSYMBOL_NOLOAD = 82, /* NOLOAD */
480 YYSYMBOL_ONLY_IF_RO = 83, /* ONLY_IF_RO */
481 YYSYMBOL_ONLY_IF_RW = 84, /* ONLY_IF_RW */
482 YYSYMBOL_ORG = 85, /* ORG */
483 YYSYMBOL_ORIGIN = 86, /* ORIGIN */
484 YYSYMBOL_OUTPUT = 87, /* OUTPUT */
485 YYSYMBOL_OUTPUT_ARCH = 88, /* OUTPUT_ARCH */
486 YYSYMBOL_OUTPUT_FORMAT = 89, /* OUTPUT_FORMAT */
487 YYSYMBOL_OVERLAY = 90, /* OVERLAY */
488 YYSYMBOL_PHDRS = 91, /* PHDRS */
489 YYSYMBOL_PROVIDE = 92, /* PROVIDE */
490 YYSYMBOL_PROVIDE_HIDDEN = 93, /* PROVIDE_HIDDEN */
491 YYSYMBOL_QUAD = 94, /* QUAD */
492 YYSYMBOL_SEARCH_DIR = 95, /* SEARCH_DIR */
493 YYSYMBOL_SECTIONS = 96, /* SECTIONS */
494 YYSYMBOL_SEGMENT_START = 97, /* SEGMENT_START */
495 YYSYMBOL_SHORT = 98, /* SHORT */
496 YYSYMBOL_SIZEOF = 99, /* SIZEOF */
497 YYSYMBOL_SIZEOF_HEADERS = 100, /* SIZEOF_HEADERS */
498 YYSYMBOL_SORT_BY_ALIGNMENT = 101, /* SORT_BY_ALIGNMENT */
499 YYSYMBOL_SORT_BY_INIT_PRIORITY = 102, /* SORT_BY_INIT_PRIORITY */
500 YYSYMBOL_SORT_BY_NAME = 103, /* SORT_BY_NAME */
501 YYSYMBOL_SPECIAL = 104, /* SPECIAL */
502 YYSYMBOL_SQUAD = 105, /* SQUAD */
503 YYSYMBOL_STARTUP = 106, /* STARTUP */
504 YYSYMBOL_SUBALIGN = 107, /* SUBALIGN */
505 YYSYMBOL_SYSLIB = 108, /* SYSLIB */
506 YYSYMBOL_TARGET_K = 109, /* TARGET_K */
507 YYSYMBOL_TRUNCATE = 110, /* TRUNCATE */
508 YYSYMBOL_VERSIONK = 111, /* VERSIONK */
509 YYSYMBOL_OPTION = 112, /* OPTION */
510 YYSYMBOL_PARSING_LINKER_SCRIPT = 113, /* PARSING_LINKER_SCRIPT */
511 YYSYMBOL_PARSING_VERSION_SCRIPT = 114, /* PARSING_VERSION_SCRIPT */
512 YYSYMBOL_PARSING_DEFSYM = 115, /* PARSING_DEFSYM */
513 YYSYMBOL_PARSING_DYNAMIC_LIST = 116, /* PARSING_DYNAMIC_LIST */
514 YYSYMBOL_PARSING_SECTIONS_BLOCK = 117, /* PARSING_SECTIONS_BLOCK */
515 YYSYMBOL_PARSING_SECTION_COMMANDS = 118, /* PARSING_SECTION_COMMANDS */
516 YYSYMBOL_PARSING_MEMORY_DEF = 119, /* PARSING_MEMORY_DEF */
517 YYSYMBOL_120_ = 120, /* '(' */
518 YYSYMBOL_121_ = 121, /* ')' */
519 YYSYMBOL_122_ = 122, /* '{' */
520 YYSYMBOL_123_ = 123, /* '}' */
521 YYSYMBOL_124_ = 124, /* ',' */
522 YYSYMBOL_125_ = 125, /* ';' */
523 YYSYMBOL_126_ = 126, /* '!' */
524 YYSYMBOL_127_o_ = 127, /* 'o' */
525 YYSYMBOL_128_l_ = 128, /* 'l' */
526 YYSYMBOL_129_ = 129, /* '~' */
527 YYSYMBOL_YYACCEPT = 130, /* $accept */
528 YYSYMBOL_top = 131, /* top */
529 YYSYMBOL_linker_script = 132, /* linker_script */
530 YYSYMBOL_file_cmd = 133, /* file_cmd */
531 YYSYMBOL_134_1 = 134, /* $@1 */
532 YYSYMBOL_135_2 = 135, /* $@2 */
533 YYSYMBOL_136_3 = 136, /* $@3 */
534 YYSYMBOL_ignore_cmd = 137, /* ignore_cmd */
535 YYSYMBOL_extern_name_list = 138, /* extern_name_list */
536 YYSYMBOL_139_4 = 139, /* $@4 */
537 YYSYMBOL_extern_name_list_body = 140, /* extern_name_list_body */
538 YYSYMBOL_input_list = 141, /* input_list */
539 YYSYMBOL_input_list_element = 142, /* input_list_element */
540 YYSYMBOL_143_5 = 143, /* $@5 */
541 YYSYMBOL_sections_block = 144, /* sections_block */
542 YYSYMBOL_section_block_cmd = 145, /* section_block_cmd */
543 YYSYMBOL_146_6 = 146, /* $@6 */
544 YYSYMBOL_section_header = 147, /* section_header */
545 YYSYMBOL_148_7 = 148, /* $@7 */
546 YYSYMBOL_149_8 = 149, /* $@8 */
547 YYSYMBOL_opt_address_and_section_type = 150, /* opt_address_and_section_type */
548 YYSYMBOL_section_type = 151, /* section_type */
549 YYSYMBOL_opt_at = 152, /* opt_at */
550 YYSYMBOL_opt_align = 153, /* opt_align */
551 YYSYMBOL_opt_subalign = 154, /* opt_subalign */
552 YYSYMBOL_opt_constraint = 155, /* opt_constraint */
553 YYSYMBOL_section_trailer = 156, /* section_trailer */
554 YYSYMBOL_opt_memspec = 157, /* opt_memspec */
555 YYSYMBOL_opt_at_memspec = 158, /* opt_at_memspec */
556 YYSYMBOL_opt_phdr = 159, /* opt_phdr */
557 YYSYMBOL_opt_fill = 160, /* opt_fill */
558 YYSYMBOL_section_cmds = 161, /* section_cmds */
559 YYSYMBOL_section_cmd = 162, /* section_cmd */
560 YYSYMBOL_data_length = 163, /* data_length */
561 YYSYMBOL_input_section_spec = 164, /* input_section_spec */
562 YYSYMBOL_input_section_no_keep = 165, /* input_section_no_keep */
563 YYSYMBOL_wildcard_file = 166, /* wildcard_file */
564 YYSYMBOL_wildcard_sections = 167, /* wildcard_sections */
565 YYSYMBOL_wildcard_section = 168, /* wildcard_section */
566 YYSYMBOL_exclude_names = 169, /* exclude_names */
567 YYSYMBOL_wildcard_name = 170, /* wildcard_name */
568 YYSYMBOL_memory_defs = 171, /* memory_defs */
569 YYSYMBOL_memory_def = 172, /* memory_def */
570 YYSYMBOL_memory_attr = 173, /* memory_attr */
571 YYSYMBOL_memory_origin = 174, /* memory_origin */
572 YYSYMBOL_memory_length = 175, /* memory_length */
573 YYSYMBOL_phdrs_defs = 176, /* phdrs_defs */
574 YYSYMBOL_phdr_def = 177, /* phdr_def */
575 YYSYMBOL_phdr_type = 178, /* phdr_type */
576 YYSYMBOL_phdr_info = 179, /* phdr_info */
577 YYSYMBOL_assignment = 180, /* assignment */
578 YYSYMBOL_parse_exp = 181, /* parse_exp */
579 YYSYMBOL_182_9 = 182, /* $@9 */
580 YYSYMBOL_exp = 183, /* exp */
581 YYSYMBOL_defsym_expr = 184, /* defsym_expr */
582 YYSYMBOL_dynamic_list_expr = 185, /* dynamic_list_expr */
583 YYSYMBOL_dynamic_list_nodes = 186, /* dynamic_list_nodes */
584 YYSYMBOL_dynamic_list_node = 187, /* dynamic_list_node */
585 YYSYMBOL_version_script = 188, /* version_script */
586 YYSYMBOL_vers_nodes = 189, /* vers_nodes */
587 YYSYMBOL_vers_node = 190, /* vers_node */
588 YYSYMBOL_verdep = 191, /* verdep */
589 YYSYMBOL_vers_tag = 192, /* vers_tag */
590 YYSYMBOL_vers_defns = 193, /* vers_defns */
591 YYSYMBOL_194_10 = 194, /* $@10 */
592 YYSYMBOL_195_11 = 195, /* $@11 */
593 YYSYMBOL_string = 196, /* string */
594 YYSYMBOL_end = 197, /* end */
595 YYSYMBOL_opt_semicolon = 198, /* opt_semicolon */
596 YYSYMBOL_opt_comma = 199 /* opt_comma */
597 };
598 typedef enum yysymbol_kind_t yysymbol_kind_t;
599
600
601
602
603 #ifdef short
604 # undef short
605 #endif
606
607 /* On compilers that do not define __PTRDIFF_MAX__ etc., make sure
608 <limits.h> and (if available) <stdint.h> are included
609 so that the code can choose integer types of a good width. */
610
611 #ifndef __PTRDIFF_MAX__
612 # include <limits.h> /* INFRINGES ON USER NAME SPACE */
613 # if defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
614 # include <stdint.h> /* INFRINGES ON USER NAME SPACE */
615 # define YY_STDINT_H
616 # endif
617 #endif
618
619 /* Narrow types that promote to a signed type and that can represent a
620 signed or unsigned integer of at least N bits. In tables they can
621 save space and decrease cache pressure. Promoting to a signed type
622 helps avoid bugs in integer arithmetic. */
623
624 #ifdef __INT_LEAST8_MAX__
625 typedef __INT_LEAST8_TYPE__ yytype_int8;
626 #elif defined YY_STDINT_H
627 typedef int_least8_t yytype_int8;
628 #else
629 typedef signed char yytype_int8;
630 #endif
631
632 #ifdef __INT_LEAST16_MAX__
633 typedef __INT_LEAST16_TYPE__ yytype_int16;
634 #elif defined YY_STDINT_H
635 typedef int_least16_t yytype_int16;
636 #else
637 typedef short yytype_int16;
638 #endif
639
640 /* Work around bug in HP-UX 11.23, which defines these macros
641 incorrectly for preprocessor constants. This workaround can likely
642 be removed in 2023, as HPE has promised support for HP-UX 11.23
643 (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of
644 <https://h20195.www2.hpe.com/V2/getpdf.aspx/4AA4-7673ENW.pdf>. */
645 #ifdef __hpux
646 # undef UINT_LEAST8_MAX
647 # undef UINT_LEAST16_MAX
648 # define UINT_LEAST8_MAX 255
649 # define UINT_LEAST16_MAX 65535
650 #endif
651
652 #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__
653 typedef __UINT_LEAST8_TYPE__ yytype_uint8;
654 #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \
655 && UINT_LEAST8_MAX <= INT_MAX)
656 typedef uint_least8_t yytype_uint8;
657 #elif !defined __UINT_LEAST8_MAX__ && UCHAR_MAX <= INT_MAX
658 typedef unsigned char yytype_uint8;
659 #else
660 typedef short yytype_uint8;
661 #endif
662
663 #if defined __UINT_LEAST16_MAX__ && __UINT_LEAST16_MAX__ <= __INT_MAX__
664 typedef __UINT_LEAST16_TYPE__ yytype_uint16;
665 #elif (!defined __UINT_LEAST16_MAX__ && defined YY_STDINT_H \
666 && UINT_LEAST16_MAX <= INT_MAX)
667 typedef uint_least16_t yytype_uint16;
668 #elif !defined __UINT_LEAST16_MAX__ && USHRT_MAX <= INT_MAX
669 typedef unsigned short yytype_uint16;
670 #else
671 typedef int yytype_uint16;
672 #endif
673
674 #ifndef YYPTRDIFF_T
675 # if defined __PTRDIFF_TYPE__ && defined __PTRDIFF_MAX__
676 # define YYPTRDIFF_T __PTRDIFF_TYPE__
677 # define YYPTRDIFF_MAXIMUM __PTRDIFF_MAX__
678 # elif defined PTRDIFF_MAX
679 # ifndef ptrdiff_t
680 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
681 # endif
682 # define YYPTRDIFF_T ptrdiff_t
683 # define YYPTRDIFF_MAXIMUM PTRDIFF_MAX
684 # else
685 # define YYPTRDIFF_T long
686 # define YYPTRDIFF_MAXIMUM LONG_MAX
687 # endif
688 #endif
689
690 #ifndef YYSIZE_T
691 # ifdef __SIZE_TYPE__
692 # define YYSIZE_T __SIZE_TYPE__
693 # elif defined size_t
694 # define YYSIZE_T size_t
695 # elif defined __STDC_VERSION__ && 199901 <= __STDC_VERSION__
696 # include <stddef.h> /* INFRINGES ON USER NAME SPACE */
697 # define YYSIZE_T size_t
698 # else
699 # define YYSIZE_T unsigned
700 # endif
701 #endif
702
703 #define YYSIZE_MAXIMUM \
704 YY_CAST (YYPTRDIFF_T, \
705 (YYPTRDIFF_MAXIMUM < YY_CAST (YYSIZE_T, -1) \
706 ? YYPTRDIFF_MAXIMUM \
707 : YY_CAST (YYSIZE_T, -1)))
708
709 #define YYSIZEOF(X) YY_CAST (YYPTRDIFF_T, sizeof (X))
710
711
712 /* Stored state numbers (used for stacks). */
713 typedef yytype_int16 yy_state_t;
714
715 /* State numbers in computations. */
716 typedef int yy_state_fast_t;
717
718 #ifndef YY_
719 # if defined YYENABLE_NLS && YYENABLE_NLS
720 # if ENABLE_NLS
721 # include <libintl.h> /* INFRINGES ON USER NAME SPACE */
722 # define YY_(Msgid) dgettext ("bison-runtime", Msgid)
723 # endif
724 # endif
725 # ifndef YY_
726 # define YY_(Msgid) Msgid
727 # endif
728 #endif
729
730
731 #ifndef YY_ATTRIBUTE_PURE
732 # if defined __GNUC__ && 2 < __GNUC__ + (96 <= __GNUC_MINOR__)
733 # define YY_ATTRIBUTE_PURE __attribute__ ((__pure__))
734 # else
735 # define YY_ATTRIBUTE_PURE
736 # endif
737 #endif
738
739 #ifndef YY_ATTRIBUTE_UNUSED
740 # if defined __GNUC__ && 2 < __GNUC__ + (7 <= __GNUC_MINOR__)
741 # define YY_ATTRIBUTE_UNUSED __attribute__ ((__unused__))
742 # else
743 # define YY_ATTRIBUTE_UNUSED
744 # endif
745 #endif
746
747 /* Suppress unused-variable warnings by "using" E. */
748 #if ! defined lint || defined __GNUC__
749 # define YY_USE(E) ((void) (E))
750 #else
751 # define YY_USE(E) /* empty */
752 #endif
753
754 /* Suppress an incorrect diagnostic about yylval being uninitialized. */
755 #if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__
756 # if __GNUC__ * 100 + __GNUC_MINOR__ < 407
757 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
758 _Pragma ("GCC diagnostic push") \
759 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")
760 # else
761 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
762 _Pragma ("GCC diagnostic push") \
763 _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \
764 _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
765 # endif
766 # define YY_IGNORE_MAYBE_UNINITIALIZED_END \
767 _Pragma ("GCC diagnostic pop")
768 #else
769 # define YY_INITIAL_VALUE(Value) Value
770 #endif
771 #ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
772 # define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
773 # define YY_IGNORE_MAYBE_UNINITIALIZED_END
774 #endif
775 #ifndef YY_INITIAL_VALUE
776 # define YY_INITIAL_VALUE(Value) /* Nothing. */
777 #endif
778
779 #if defined __cplusplus && defined __GNUC__ && ! defined __ICC && 6 <= __GNUC__
780 # define YY_IGNORE_USELESS_CAST_BEGIN \
781 _Pragma ("GCC diagnostic push") \
782 _Pragma ("GCC diagnostic ignored \"-Wuseless-cast\"")
783 # define YY_IGNORE_USELESS_CAST_END \
784 _Pragma ("GCC diagnostic pop")
785 #endif
786 #ifndef YY_IGNORE_USELESS_CAST_BEGIN
787 # define YY_IGNORE_USELESS_CAST_BEGIN
788 # define YY_IGNORE_USELESS_CAST_END
789 #endif
790
791
792 #define YY_ASSERT(E) ((void) (0 && (E)))
793
794 #if 1
795
796 /* The parser invokes alloca or malloc; define the necessary symbols. */
797
798 # ifdef YYSTACK_USE_ALLOCA
799 # if YYSTACK_USE_ALLOCA
800 # ifdef __GNUC__
801 # define YYSTACK_ALLOC __builtin_alloca
802 # elif defined __BUILTIN_VA_ARG_INCR
803 # include <alloca.h> /* INFRINGES ON USER NAME SPACE */
804 # elif defined _AIX
805 # define YYSTACK_ALLOC __alloca
806 # elif defined _MSC_VER
807 # include <malloc.h> /* INFRINGES ON USER NAME SPACE */
808 # define alloca _alloca
809 # else
810 # define YYSTACK_ALLOC alloca
811 # if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
812 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
813 /* Use EXIT_SUCCESS as a witness for stdlib.h. */
814 # ifndef EXIT_SUCCESS
815 # define EXIT_SUCCESS 0
816 # endif
817 # endif
818 # endif
819 # endif
820 # endif
821
822 # ifdef YYSTACK_ALLOC
823 /* Pacify GCC's 'empty if-body' warning. */
824 # define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
825 # ifndef YYSTACK_ALLOC_MAXIMUM
826 /* The OS might guarantee only one guard page at the bottom of the stack,
827 and a page size can be as small as 4096 bytes. So we cannot safely
828 invoke alloca (N) if N exceeds 4096. Use a slightly smaller number
829 to allow for a few compiler-allocated temporary stack slots. */
830 # define YYSTACK_ALLOC_MAXIMUM 4032 /* reasonable circa 2006 */
831 # endif
832 # else
833 # define YYSTACK_ALLOC YYMALLOC
834 # define YYSTACK_FREE YYFREE
835 # ifndef YYSTACK_ALLOC_MAXIMUM
836 # define YYSTACK_ALLOC_MAXIMUM YYSIZE_MAXIMUM
837 # endif
838 # if (defined __cplusplus && ! defined EXIT_SUCCESS \
839 && ! ((defined YYMALLOC || defined malloc) \
840 && (defined YYFREE || defined free)))
841 # include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
842 # ifndef EXIT_SUCCESS
843 # define EXIT_SUCCESS 0
844 # endif
845 # endif
846 # ifndef YYMALLOC
847 # define YYMALLOC malloc
848 # if ! defined malloc && ! defined EXIT_SUCCESS
849 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
850 # endif
851 # endif
852 # ifndef YYFREE
853 # define YYFREE free
854 # if ! defined free && ! defined EXIT_SUCCESS
855 void free (void *); /* INFRINGES ON USER NAME SPACE */
856 # endif
857 # endif
858 # endif
859 #endif /* 1 */
860
861 #if (! defined yyoverflow \
862 && (! defined __cplusplus \
863 || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
864
865 /* A type that is properly aligned for any stack member. */
866 union yyalloc
867 {
868 yy_state_t yyss_alloc;
869 YYSTYPE yyvs_alloc;
870 };
871
872 /* The size of the maximum gap between one aligned stack and the next. */
873 # define YYSTACK_GAP_MAXIMUM (YYSIZEOF (union yyalloc) - 1)
874
875 /* The size of an array large to enough to hold all stacks, each with
876 N elements. */
877 # define YYSTACK_BYTES(N) \
878 ((N) * (YYSIZEOF (yy_state_t) + YYSIZEOF (YYSTYPE)) \
879 + YYSTACK_GAP_MAXIMUM)
880
881 # define YYCOPY_NEEDED 1
882
883 /* Relocate STACK from its old location to the new one. The
884 local variables YYSIZE and YYSTACKSIZE give the old and new number of
885 elements in the stack, and YYPTR gives the new location of the
886 stack. Advance YYPTR to a properly aligned location for the next
887 stack. */
888 # define YYSTACK_RELOCATE(Stack_alloc, Stack) \
889 do \
890 { \
891 YYPTRDIFF_T yynewbytes; \
892 YYCOPY (&yyptr->Stack_alloc, Stack, yysize); \
893 Stack = &yyptr->Stack_alloc; \
894 yynewbytes = yystacksize * YYSIZEOF (*Stack) + YYSTACK_GAP_MAXIMUM; \
895 yyptr += yynewbytes / YYSIZEOF (*yyptr); \
896 } \
897 while (0)
898
899 #endif
900
901 #if defined YYCOPY_NEEDED && YYCOPY_NEEDED
902 /* Copy COUNT objects from SRC to DST. The source and destination do
903 not overlap. */
904 # ifndef YYCOPY
905 # if defined __GNUC__ && 1 < __GNUC__
906 # define YYCOPY(Dst, Src, Count) \
907 __builtin_memcpy (Dst, Src, YY_CAST (YYSIZE_T, (Count)) * sizeof (*(Src)))
908 # else
909 # define YYCOPY(Dst, Src, Count) \
910 do \
911 { \
912 YYPTRDIFF_T yyi; \
913 for (yyi = 0; yyi < (Count); yyi++) \
914 (Dst)[yyi] = (Src)[yyi]; \
915 } \
916 while (0)
917 # endif
918 # endif
919 #endif /* !YYCOPY_NEEDED */
920
921 /* YYFINAL -- State number of the termination state. */
922 #define YYFINAL 26
923 /* YYLAST -- Last index in YYTABLE. */
924 #define YYLAST 1465
925
926 /* YYNTOKENS -- Number of terminals. */
927 #define YYNTOKENS 130
928 /* YYNNTS -- Number of nonterminals. */
929 #define YYNNTS 70
930 /* YYNRULES -- Number of rules. */
931 #define YYNRULES 241
932 /* YYNSTATES -- Number of states. */
933 #define YYNSTATES 555
934
935 /* YYMAXUTOK -- Last valid token kind. */
936 #define YYMAXUTOK 361
937
938
939 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM
940 as returned by yylex, with out-of-bounds checking. */
941 #define YYTRANSLATE(YYX) \
942 (0 <= (YYX) && (YYX) <= YYMAXUTOK \
943 ? YY_CAST (yysymbol_kind_t, yytranslate[YYX]) \
944 : YYSYMBOL_YYUNDEF)
945
946 /* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
947 as returned by yylex. */
948 static const yytype_uint8 yytranslate[] =
949 {
950 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
951 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
952 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
953 2, 2, 2, 126, 2, 2, 2, 31, 18, 2,
954 120, 121, 29, 27, 124, 28, 2, 30, 2, 2,
955 2, 2, 2, 2, 2, 2, 2, 2, 13, 125,
956 21, 7, 22, 12, 2, 2, 2, 2, 2, 2,
957 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
958 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
959 2, 2, 2, 2, 17, 2, 2, 2, 2, 2,
960 2, 2, 2, 2, 2, 2, 2, 2, 128, 2,
961 2, 127, 2, 2, 2, 2, 2, 2, 2, 2,
962 2, 2, 2, 122, 16, 123, 129, 2, 2, 2,
963 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
964 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
965 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
966 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
967 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
968 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
969 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
970 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
971 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
972 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
973 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
974 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
975 2, 2, 2, 2, 2, 2, 1, 2, 3, 4,
976 5, 6, 8, 9, 10, 11, 14, 15, 19, 20,
977 23, 24, 25, 26, 32, 33, 34, 35, 36, 37,
978 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
979 48, 49, 50, 51, 52, 53, 54, 55, 56, 57,
980 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,
981 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,
982 78, 79, 80, 81, 82, 83, 84, 85, 86, 87,
983 88, 89, 90, 91, 92, 93, 94, 95, 96, 97,
984 98, 99, 100, 101, 102, 103, 104, 105, 106, 107,
985 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
986 118, 119
987 };
988
989 #if YYDEBUG
990 /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */
991 static const yytype_int16 yyrline[] =
992 {
993 0, 236, 236, 237, 238, 239, 240, 241, 242, 247,
994 248, 253, 254, 257, 256, 260, 262, 263, 264, 266,
995 272, 279, 280, 283, 282, 286, 289, 288, 292, 294,
996 295, 297, 300, 301, 309, 317, 317, 323, 325, 327,
997 333, 334, 339, 341, 344, 343, 351, 352, 357, 359,
998 360, 362, 366, 365, 374, 376, 374, 393, 398, 403,
999 408, 413, 418, 427, 429, 434, 439, 444, 454, 455,
1000 462, 463, 470, 471, 478, 479, 481, 483, 489, 498,
1001 500, 505, 507, 512, 515, 521, 524, 529, 531, 537,
1002 538, 539, 541, 543, 545, 552, 553, 556, 562, 564,
1003 566, 568, 570, 577, 579, 585, 592, 601, 606, 615,
1004 620, 625, 630, 639, 644, 663, 682, 691, 693, 700,
1005 702, 707, 716, 717, 722, 725, 728, 733, 736, 739,
1006 743, 745, 747, 751, 753, 755, 760, 761, 766, 775,
1007 777, 784, 785, 793, 798, 809, 818, 820, 826, 832,
1008 838, 844, 850, 856, 862, 868, 870, 872, 878, 878,
1009 888, 890, 892, 894, 896, 898, 900, 902, 904, 906,
1010 908, 910, 912, 914, 916, 918, 920, 922, 924, 926,
1011 928, 930, 932, 934, 936, 938, 940, 942, 944, 946,
1012 948, 950, 952, 954, 956, 958, 960, 962, 964, 966,
1013 968, 970, 975, 980, 982, 990, 996, 1006, 1009, 1010,
1014 1014, 1020, 1024, 1025, 1029, 1033, 1038, 1045, 1049, 1057,
1015 1058, 1060, 1062, 1064, 1073, 1078, 1083, 1088, 1095, 1094,
1016 1105, 1104, 1111, 1116, 1126, 1128, 1135, 1136, 1141, 1142,
1017 1147, 1148
1018 };
1019 #endif
1020
1021 /** Accessing symbol of state STATE. */
1022 #define YY_ACCESSING_SYMBOL(State) YY_CAST (yysymbol_kind_t, yystos[State])
1023
1024 #if 1
1025 /* The user-facing name of the symbol whose (internal) number is
1026 YYSYMBOL. No bounds checking. */
1027 static const char *yysymbol_name (yysymbol_kind_t yysymbol) YY_ATTRIBUTE_UNUSED;
1028
1029 /* YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
1030 First, the terminals, then, starting at YYNTOKENS, nonterminals. */
1031 static const char *const yytname[] =
1032 {
1033 "\"end of file\"", "error", "\"invalid token\"", "PLUSEQ", "MINUSEQ",
1034 "MULTEQ", "DIVEQ", "'='", "LSHIFTEQ", "RSHIFTEQ", "ANDEQ", "OREQ", "'?'",
1035 "':'", "OROR", "ANDAND", "'|'", "'^'", "'&'", "EQ", "NE", "'<'", "'>'",
1036 "LE", "GE", "LSHIFT", "RSHIFT", "'+'", "'-'", "'*'", "'/'", "'%'",
1037 "UNARY", "STRING", "QUOTED_STRING", "INTEGER", "ABSOLUTE", "ADDR",
1038 "ALIGN_K", "ALIGNOF", "ASSERT_K", "AS_NEEDED", "AT", "BIND", "BLOCK",
1039 "BYTE", "CONSTANT", "CONSTRUCTORS", "COPY", "CREATE_OBJECT_SYMBOLS",
1040 "DATA_SEGMENT_ALIGN", "DATA_SEGMENT_END", "DATA_SEGMENT_RELRO_END",
1041 "DEFINED", "DSECT", "ENTRY", "EXCLUDE_FILE", "EXTERN", "FILL", "FLOAT",
1042 "FORCE_COMMON_ALLOCATION", "GLOBAL", "GROUP", "HIDDEN", "HLL", "INCLUDE",
1043 "INHIBIT_COMMON_ALLOCATION", "INFO", "INPUT", "KEEP", "LEN", "LENGTH",
1044 "LOADADDR", "LOCAL", "LONG", "MAP", "MAX_K", "MEMORY", "MIN_K", "NEXT",
1045 "NOCROSSREFS", "NOFLOAT", "NOLOAD", "ONLY_IF_RO", "ONLY_IF_RW", "ORG",
1046 "ORIGIN", "OUTPUT", "OUTPUT_ARCH", "OUTPUT_FORMAT", "OVERLAY", "PHDRS",
1047 "PROVIDE", "PROVIDE_HIDDEN", "QUAD", "SEARCH_DIR", "SECTIONS",
1048 "SEGMENT_START", "SHORT", "SIZEOF", "SIZEOF_HEADERS",
1049 "SORT_BY_ALIGNMENT", "SORT_BY_INIT_PRIORITY", "SORT_BY_NAME", "SPECIAL",
1050 "SQUAD", "STARTUP", "SUBALIGN", "SYSLIB", "TARGET_K", "TRUNCATE",
1051 "VERSIONK", "OPTION", "PARSING_LINKER_SCRIPT", "PARSING_VERSION_SCRIPT",
1052 "PARSING_DEFSYM", "PARSING_DYNAMIC_LIST", "PARSING_SECTIONS_BLOCK",
1053 "PARSING_SECTION_COMMANDS", "PARSING_MEMORY_DEF", "'('", "')'", "'{'",
1054 "'}'", "','", "';'", "'!'", "'o'", "'l'", "'~'", "$accept", "top",
1055 "linker_script", "file_cmd", "$@1", "$@2", "$@3", "ignore_cmd",
1056 "extern_name_list", "$@4", "extern_name_list_body", "input_list",
1057 "input_list_element", "$@5", "sections_block", "section_block_cmd",
1058 "$@6", "section_header", "$@7", "$@8", "opt_address_and_section_type",
1059 "section_type", "opt_at", "opt_align", "opt_subalign", "opt_constraint",
1060 "section_trailer", "opt_memspec", "opt_at_memspec", "opt_phdr",
1061 "opt_fill", "section_cmds", "section_cmd", "data_length",
1062 "input_section_spec", "input_section_no_keep", "wildcard_file",
1063 "wildcard_sections", "wildcard_section", "exclude_names",
1064 "wildcard_name", "memory_defs", "memory_def", "memory_attr",
1065 "memory_origin", "memory_length", "phdrs_defs", "phdr_def", "phdr_type",
1066 "phdr_info", "assignment", "parse_exp", "$@9", "exp", "defsym_expr",
1067 "dynamic_list_expr", "dynamic_list_nodes", "dynamic_list_node",
1068 "version_script", "vers_nodes", "vers_node", "verdep", "vers_tag",
1069 "vers_defns", "$@10", "$@11", "string", "end", "opt_semicolon",
1070 "opt_comma", YY_NULLPTR
1071 };
1072
1073 static const char *
yysymbol_name(yysymbol_kind_t yysymbol)1074 yysymbol_name (yysymbol_kind_t yysymbol)
1075 {
1076 return yytname[yysymbol];
1077 }
1078 #endif
1079
1080 #define YYPACT_NINF (-423)
1081
1082 #define yypact_value_is_default(Yyn) \
1083 ((Yyn) == YYPACT_NINF)
1084
1085 #define YYTABLE_NINF (-120)
1086
1087 #define yytable_value_is_error(Yyn) \
1088 0
1089
1090 /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
1091 STATE-NUM. */
1092 static const yytype_int16 yypact[] =
1093 {
1094 365, -423, 81, 214, -112, -423, -423, -423, 14, 1300,
1095 -423, -423, 33, -423, 81, -423, -93, -423, 52, 103,
1096 -423, -112, -423, 177, 568, 9, -423, -37, -28, -1,
1097 -423, -423, 15, 214, -423, 19, -69, 60, 62, 1,
1098 64, 80, 82, 73, 84, 90, 86, -423, -423, -423,
1099 136, 318, -423, -423, 214, 208, 217, 104, 108, -423,
1100 33, -423, 113, -423, 132, 155, 214, -423, 136, 318,
1101 -423, -423, 157, -423, -423, 160, 214, 162, -423, -423,
1102 -423, 168, -423, -423, -423, 169, -423, -423, 174, -423,
1103 136, 38, -423, 92, -423, 214, -423, 195, 214, -423,
1104 231, -423, 214, 214, -423, 214, 214, 214, -423, 214,
1105 -423, 214, -423, -423, -423, -423, -423, -423, -423, -423,
1106 -423, -423, -423, -423, 151, 103, 103, 192, 159, 156,
1107 -423, 1253, 21, -423, 214, -423, -423, -423, 137, -423,
1108 -423, -423, 39, 422, -423, 46, -423, 214, -423, 199,
1109 207, 215, 220, 214, 231, 341, 316, -423, -40, -423,
1110 -423, 144, 229, 3, 36, 345, 346, 264, -423, 266,
1111 81, 267, -423, -423, -423, -423, -423, -423, -423, -423,
1112 -423, -423, 269, 270, -423, -423, -423, 214, -17, 1253,
1113 1253, -423, 271, 272, 276, 279, 280, 305, 306, 309,
1114 310, 312, 322, 323, 324, 330, 332, 333, 337, 339,
1115 -423, 1253, 1253, 1253, 1434, -423, 335, 265, 340, 343,
1116 -423, 1156, 420, 1151, 350, 349, 355, 364, 356, 374,
1117 375, -423, 376, 397, 398, 399, 400, 7, -423, -423,
1118 -423, -10, 508, 214, -423, -423, -6, -423, 70, -423,
1119 -423, 402, -423, 231, -423, -423, -423, 214, -423, -423,
1120 300, -423, -423, -423, 191, -423, 401, -423, 103, 96,
1121 159, 403, -423, -8, -423, -423, -423, 1253, 214, 1253,
1122 214, 1253, 1253, 214, 1253, 1253, 1253, 214, 214, 214,
1123 1253, 1253, 214, 214, 214, 281, -423, -423, 1253, 1253,
1124 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253, 1253,
1125 1253, 1253, 1253, 1253, 1253, 1253, 1253, -423, 214, -423,
1126 -423, -423, -423, -423, -423, -423, 510, 406, 408, 491,
1127 -423, 153, 214, -423, 216, -423, -423, -423, -423, 216,
1128 53, 216, 53, -423, 412, 214, 410, -67, 413, 214,
1129 -423, -423, 416, 231, -423, 415, -423, 29, -423, 421,
1130 426, -423, -423, 405, 535, -423, -423, -423, 825, 430,
1131 342, 431, 392, 862, 432, 714, 882, 751, 433, 434,
1132 435, 771, 791, 455, 454, 458, -423, 1414, 731, 841,
1133 948, 481, 562, 353, 353, 463, 463, 463, 463, 409,
1134 409, 315, 315, -423, -423, -423, 474, 565, -423, 583,
1135 1253, 480, 496, 591, 485, 486, 75, -423, 488, 490,
1136 493, 497, -423, 495, -423, -423, -423, -423, 611, -423,
1137 -423, -423, 98, 214, 499, 29, 500, 43, -423, -423,
1138 159, 498, 103, 103, -423, -423, -423, 1253, -423, 214,
1139 -423, -423, 1253, -423, 1253, -423, -423, -423, 1253, 1253,
1140 -423, 1253, -423, 1253, -423, 598, -423, 902, 1253, 502,
1141 -423, -423, 614, -423, -423, 216, -423, -423, -423, 216,
1142 -423, -423, -423, 503, -423, -423, -423, 594, -423, -423,
1143 507, 405, 933, 514, 970, 990, 1010, 1041, 1078, 1434,
1144 214, -423, 596, -423, 1098, 1253, 114, -423, -423, 105,
1145 512, -423, 519, 520, 159, 521, -423, -423, -423, -423,
1146 -423, -423, -423, -423, 621, -423, -423, 1118, -423, -423,
1147 -423, -423, -423, 18, 29, 29, -423, 214, 154, -423,
1148 -423, -423, -423, 638, -423, -423, -423, -423, 214, 512,
1149 -423, -423, -423, -423, -423
1150 };
1151
1152 /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
1153 Performed when YYTABLE does not specify something else to do. Zero
1154 means the default is an error. */
1155 static const yytype_uint8 yydefact[] =
1156 {
1157 0, 10, 0, 0, 0, 47, 87, 123, 0, 2,
1158 234, 235, 219, 3, 211, 212, 0, 4, 0, 0,
1159 5, 207, 208, 6, 7, 241, 1, 0, 0, 0,
1160 12, 13, 0, 0, 15, 0, 0, 0, 0, 0,
1161 0, 0, 0, 0, 0, 0, 0, 33, 9, 32,
1162 0, 0, 224, 225, 232, 0, 0, 0, 0, 213,
1163 219, 158, 0, 209, 0, 0, 0, 46, 0, 54,
1164 121, 120, 0, 102, 94, 0, 0, 0, 100, 98,
1165 101, 0, 99, 97, 88, 0, 90, 103, 0, 107,
1166 0, 105, 240, 126, 158, 0, 35, 0, 0, 31,
1167 0, 123, 0, 0, 137, 0, 0, 0, 23, 0,
1168 26, 0, 237, 236, 29, 158, 158, 158, 158, 158,
1169 158, 158, 158, 158, 0, 0, 0, 0, 220, 0,
1170 206, 0, 0, 158, 0, 51, 49, 52, 0, 158,
1171 158, 96, 0, 0, 158, 0, 89, 0, 122, 129,
1172 0, 0, 0, 0, 0, 0, 0, 44, 241, 40,
1173 42, 241, 0, 0, 0, 0, 0, 0, 47, 0,
1174 0, 0, 147, 148, 149, 150, 146, 151, 152, 153,
1175 154, 228, 0, 0, 214, 226, 227, 233, 0, 0,
1176 0, 184, 0, 0, 0, 0, 0, 0, 0, 0,
1177 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1178 189, 0, 0, 0, 159, 185, 0, 0, 0, 0,
1179 57, 0, 68, 0, 0, 0, 0, 0, 105, 0,
1180 0, 119, 0, 0, 0, 0, 0, 241, 110, 113,
1181 125, 0, 0, 0, 28, 11, 36, 37, 241, 158,
1182 43, 0, 16, 0, 17, 34, 19, 0, 21, 136,
1183 0, 158, 158, 22, 0, 25, 0, 18, 0, 221,
1184 222, 0, 215, 0, 217, 164, 161, 0, 0, 0,
1185 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1186 0, 0, 0, 0, 0, 0, 162, 163, 0, 0,
1187 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1188 0, 0, 0, 0, 0, 0, 0, 210, 0, 48,
1189 87, 65, 64, 66, 63, 67, 0, 0, 0, 70,
1190 59, 0, 0, 93, 0, 104, 95, 108, 91, 0,
1191 0, 0, 0, 106, 0, 0, 0, 0, 0, 0,
1192 38, 14, 0, 0, 41, 0, 140, 141, 139, 0,
1193 0, 24, 27, 239, 0, 230, 216, 218, 0, 0,
1194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1195 0, 0, 0, 0, 0, 0, 160, 0, 182, 181,
1196 180, 179, 178, 172, 173, 176, 177, 174, 175, 170,
1197 171, 168, 169, 165, 166, 167, 0, 0, 58, 0,
1198 0, 0, 72, 0, 0, 0, 241, 118, 0, 0,
1199 0, 0, 109, 0, 127, 131, 130, 132, 0, 30,
1200 39, 155, 241, 0, 0, 141, 0, 141, 156, 157,
1201 238, 0, 0, 0, 197, 192, 198, 0, 190, 0,
1202 200, 196, 0, 203, 0, 188, 195, 193, 0, 0,
1203 194, 0, 191, 0, 50, 80, 61, 0, 0, 0,
1204 55, 60, 0, 92, 112, 0, 115, 116, 114, 0,
1205 128, 158, 45, 0, 158, 143, 138, 0, 142, 229,
1206 0, 239, 0, 0, 0, 0, 0, 0, 0, 183,
1207 0, 53, 82, 69, 0, 0, 74, 62, 117, 241,
1208 241, 20, 0, 0, 223, 0, 199, 205, 201, 202,
1209 186, 187, 204, 79, 0, 84, 71, 0, 75, 76,
1210 77, 56, 111, 0, 141, 141, 231, 0, 86, 73,
1211 134, 133, 135, 0, 145, 144, 81, 158, 0, 241,
1212 158, 85, 83, 78, 124
1213 };
1214
1215 /* YYPGOTO[NTERM-NUM]. */
1216 static const yytype_int16 yypgoto[] =
1217 {
1218 -423, -423, -423, -423, -423, -423, -423, -423, -423, -423,
1219 -423, -148, 393, -423, 479, -423, -423, -423, -423, -423,
1220 -423, 317, -423, -423, -423, -423, -423, -423, -423, -423,
1221 -423, 329, -423, -423, -423, 509, -423, -423, -245, 171,
1222 -21, 551, -423, -423, -423, -423, -423, -423, -423, -422,
1223 -4, -83, -423, 259, -423, -423, -423, 632, 484, -423,
1224 641, -423, 604, -15, -423, -423, -2, -60, 165, -23
1225 };
1226
1227 /* YYDEFGOTO[NTERM-NUM]. */
1228 static const yytype_int16 yydefgoto[] =
1229 {
1230 0, 8, 9, 48, 97, 168, 170, 49, 152, 153,
1231 246, 158, 159, 251, 23, 67, 219, 137, 138, 506,
1232 222, 327, 329, 412, 470, 531, 501, 502, 525, 538,
1233 549, 24, 84, 85, 86, 87, 88, 237, 238, 416,
1234 239, 25, 148, 242, 428, 543, 164, 259, 357, 436,
1235 68, 130, 131, 295, 17, 20, 21, 22, 13, 14,
1236 15, 273, 57, 58, 268, 443, 215, 114, 441, 253
1237 };
1238
1239 /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If
1240 positive, shift that token. If negative, reduce the rule whose
1241 number is the opposite. If YYTABLE_NINF, syntax error. */
1242 static const yytype_int16 yytable[] =
1243 {
1244 16, 18, 93, 89, 62, 50, 248, 51, 136, -8,
1245 19, 150, 16, 485, 26, 488, 10, 11, 425, 426,
1246 90, 69, 91, 10, 11, 10, 11, 10, 11, 60,
1247 146, 99, 172, 173, 174, 175, 176, 177, 178, 179,
1248 180, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1249 217, 70, 124, 101, 185, 186, 224, 225, 70, 61,
1250 427, 232, 10, 11, 135, 70, 52, 53, 71, 10,
1251 11, 434, 10, 11, 141, 71, 10, 11, 187, 10,
1252 11, 252, 71, 94, 92, 434, 10, 11, 540, 541,
1253 54, 149, 95, 151, 55, 418, 155, 420, 160, 422,
1254 162, 163, 233, 165, 166, 167, 56, 169, 272, 171,
1255 182, 183, 544, 545, 10, 11, 345, 366, 349, 96,
1256 435, 89, 230, 104, 256, 10, 11, 257, 343, 185,
1257 186, 92, 218, 92, 435, 98, 52, 53, 93, 100,
1258 228, 231, 226, 231, 216, 240, 542, 234, 235, 236,
1259 220, 247, 160, 187, 234, 235, 236, 147, -119, 258,
1260 54, 547, 260, 487, 189, 190, 352, 548, 16, 364,
1261 10, 11, 191, 192, 193, 194, 195, 196, 359, 360,
1262 102, 197, 103, 198, 105, 271, 274, 199, 200, 201,
1263 202, 351, 185, 186, 92, 108, 474, 528, 529, 92,
1264 106, 321, 107, 12, 109, 432, 111, 322, 203, 204,
1265 10, 11, 110, 205, 344, 206, 187, 64, 530, 482,
1266 323, 125, 92, 207, 10, 11, 532, 127, 70, 92,
1267 126, 64, 65, 128, 208, 324, 209, 210, 132, 346,
1268 32, 348, 66, 325, 350, 71, 65, 10, 11, 10,
1269 11, 160, 133, 363, 32, 355, 66, 221, 358, 156,
1270 112, 113, 69, 212, 10, 11, 213, 254, 92, 40,
1271 41, 367, 157, 181, 413, 134, 369, 139, 371, 188,
1272 140, 374, 142, 40, 41, 378, 379, 380, 143, 144,
1273 383, 384, 385, 298, 145, 299, 300, 301, 302, 303,
1274 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1275 314, 315, 316, 230, 361, 154, 406, 184, 417, 241,
1276 419, 115, 116, 117, 118, 119, 120, 121, 122, 123,
1277 415, 243, 231, 10, 11, 356, 244, 231, 231, 231,
1278 231, 245, 231, 423, 314, 315, 316, 430, 249, 250,
1279 255, 160, 261, 262, 298, 437, 299, 300, 301, 302,
1280 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
1281 313, 314, 315, 316, 306, 307, 308, 309, 310, 311,
1282 312, 313, 314, 315, 316, 263, 89, 265, 267, 318,
1283 214, 277, 278, 475, 269, 270, 279, 223, 510, 280,
1284 281, 512, 386, 90, 298, 91, 299, 300, 301, 302,
1285 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
1286 313, 314, 315, 316, 70, 282, 283, 490, 491, 284,
1287 285, 483, 286, 437, 70, 437, 312, 313, 314, 315,
1288 316, 71, 287, 288, 289, 10, 11, 493, 275, 276,
1289 290, 71, 291, 292, 508, 10, 11, 293, 417, 294,
1290 317, 319, 328, 446, 551, 320, 447, 554, 421, 229,
1291 333, 296, 297, 231, 332, 334, -119, 231, 1, 2,
1292 3, 4, 5, 6, 7, 335, 475, 533, 310, 311,
1293 312, 313, 314, 315, 316, 336, 337, 338, 523, 303,
1294 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1295 314, 315, 316, 234, 235, 236, 449, 339, 340, 341,
1296 342, 347, 353, 408, 362, 365, 553, 409, 410, 411,
1297 440, 424, 437, 437, 429, 546, 368, 431, 370, 433,
1298 372, 373, 438, 375, 376, 377, 552, 439, 442, 381,
1299 382, 445, 448, 451, 455, 456, 457, 387, 388, 389,
1300 390, 391, 392, 393, 394, 395, 396, 397, 398, 399,
1301 400, 401, 402, 403, 404, 405, 460, 70, 461, 462,
1302 70, 304, 305, 306, 307, 308, 309, 310, 311, 312,
1303 313, 314, 315, 316, 71, 464, 466, 71, 10, 11,
1304 468, 10, 11, 469, 471, 72, 472, 473, 72, 476,
1305 73, 477, 74, 73, 478, 74, 480, 479, 481, 484,
1306 500, 489, 505, 75, 511, 486, 75, 507, 32, 513,
1307 76, 32, 514, 76, 77, 517, 92, 77, 524, 78,
1308 534, 535, 78, 537, 536, 550, 354, 264, 414, 407,
1309 509, 227, 161, 63, 266, 59, 515, 40, 41, 79,
1310 40, 41, 79, 80, 129, 0, 80, 0, 81, 467,
1311 82, 81, 0, 82, 0, 0, 0, 0, 0, 0,
1312 0, 0, 0, 0, 0, 0, 0, 0, 465, 0,
1313 83, 0, 0, 83, 0, 0, 0, 0, 0, 0,
1314 0, 0, 0, 0, 0, 0, 492, 0, 0, 0,
1315 0, 494, 0, 495, 0, 0, 0, 496, 497, 0,
1316 498, 0, 499, 0, 0, 0, 298, 504, 299, 300,
1317 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
1318 311, 312, 313, 314, 315, 316, 300, 301, 302, 303,
1319 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1320 314, 315, 316, 298, 527, 299, 300, 301, 302, 303,
1321 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1322 314, 315, 316, 298, 0, 299, 300, 301, 302, 303,
1323 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1324 314, 315, 316, 298, 0, 299, 300, 301, 302, 303,
1325 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1326 314, 315, 316, 0, 0, 0, 0, 0, 0, 0,
1327 0, 0, 0, 0, 0, 0, 0, 298, 452, 299,
1328 300, 301, 302, 303, 304, 305, 306, 307, 308, 309,
1329 310, 311, 312, 313, 314, 315, 316, 301, 302, 303,
1330 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1331 314, 315, 316, 0, 298, 454, 299, 300, 301, 302,
1332 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
1333 313, 314, 315, 316, 298, 458, 299, 300, 301, 302,
1334 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
1335 313, 314, 315, 316, 298, 459, 299, 300, 301, 302,
1336 303, 304, 305, 306, 307, 308, 309, 310, 311, 312,
1337 313, 314, 315, 316, 0, 0, 0, 0, 0, 0,
1338 0, 0, 0, 0, 0, 298, 444, 299, 300, 301,
1339 302, 303, 304, 305, 306, 307, 308, 309, 310, 311,
1340 312, 313, 314, 315, 316, 302, 303, 304, 305, 306,
1341 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
1342 0, 0, 298, 450, 299, 300, 301, 302, 303, 304,
1343 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1344 315, 316, 298, 453, 299, 300, 301, 302, 303, 304,
1345 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1346 315, 316, 298, 503, 299, 300, 301, 302, 303, 304,
1347 305, 306, 307, 308, 309, 310, 311, 312, 313, 314,
1348 315, 316, 0, 0, 0, 0, 0, 0, 0, 0,
1349 0, 0, 0, 298, 516, 299, 300, 301, 302, 303,
1350 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1351 314, 315, 316, 0, 0, 0, 0, 0, 0, 0,
1352 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1353 298, 518, 299, 300, 301, 302, 303, 304, 305, 306,
1354 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
1355 298, 519, 299, 300, 301, 302, 303, 304, 305, 306,
1356 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
1357 298, 520, 299, 300, 301, 302, 303, 304, 305, 306,
1358 307, 308, 309, 310, 311, 312, 313, 314, 315, 316,
1359 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1360 0, 0, 521, 298, 330, 299, 300, 301, 302, 303,
1361 304, 305, 306, 307, 308, 309, 310, 311, 312, 313,
1362 314, 315, 316, 189, 190, 0, 0, 0, 0, 10,
1363 11, 191, 192, 193, 194, 195, 196, 0, 0, 522,
1364 197, 0, 198, 0, 321, 0, 199, 200, 201, 202,
1365 322, 0, 0, 0, 0, 0, 0, 0, 0, 526,
1366 0, 0, 0, 323, 0, 0, 0, 203, 204, 0,
1367 0, 0, 205, 0, 206, 0, 0, 0, 324, 539,
1368 0, 0, 207, 0, 0, 0, 325, 0, 0, 0,
1369 0, 0, 0, 208, 0, 209, 210, 0, 0, 0,
1370 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1371 0, 331, 0, 0, 0, 0, 211, 326, 0, 0,
1372 189, 190, 212, 0, 0, 213, 10, 11, 191, 192,
1373 193, 194, 195, 196, 0, 0, 0, 197, 0, 198,
1374 0, 0, 0, 199, 200, 201, 202, 0, 0, 0,
1375 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1376 0, 0, 0, 0, 203, 204, 0, 0, 0, 205,
1377 0, 206, 0, 10, 11, 0, 0, 0, 0, 207,
1378 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1379 208, 0, 209, 210, 0, 28, 0, 29, 0, 0,
1380 30, 0, 31, 32, 0, 33, 34, 0, 35, 0,
1381 0, 0, 0, 211, 0, 0, 0, 36, 0, 212,
1382 0, 0, 213, 0, 0, 0, 0, 0, 37, 38,
1383 0, 39, 40, 41, 0, 42, 43, 0, 0, 0,
1384 0, 0, 0, 0, 0, 0, 0, 0, 0, 44,
1385 0, 45, 46, 0, 0, 0, 0, 0, 0, 0,
1386 0, 0, 0, 0, 0, 47, 298, 463, 299, 300,
1387 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
1388 311, 312, 313, 314, 315, 316, 298, 0, 299, 300,
1389 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
1390 311, 312, 313, 314, 315, 316
1391 };
1392
1393 static const yytype_int16 yycheck[] =
1394 {
1395 2, 3, 25, 24, 19, 9, 154, 9, 68, 0,
1396 122, 94, 14, 435, 0, 437, 33, 34, 85, 86,
1397 24, 23, 24, 33, 34, 33, 34, 33, 34, 122,
1398 90, 33, 115, 116, 117, 118, 119, 120, 121, 122,
1399 123, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1400 133, 12, 54, 122, 33, 34, 139, 140, 12, 7,
1401 127, 144, 33, 34, 66, 12, 33, 34, 29, 33,
1402 34, 42, 33, 34, 76, 29, 33, 34, 57, 33,
1403 34, 121, 29, 120, 124, 42, 33, 34, 70, 71,
1404 57, 93, 120, 95, 61, 340, 98, 342, 100, 344,
1405 102, 103, 56, 105, 106, 107, 73, 109, 125, 111,
1406 125, 126, 534, 535, 33, 34, 126, 125, 124, 120,
1407 91, 142, 143, 122, 121, 33, 34, 124, 121, 33,
1408 34, 124, 134, 124, 91, 120, 33, 34, 161, 120,
1409 142, 143, 103, 145, 123, 147, 128, 101, 102, 103,
1410 13, 153, 154, 57, 101, 102, 103, 65, 120, 123,
1411 57, 7, 164, 120, 27, 28, 249, 13, 170, 73,
1412 33, 34, 35, 36, 37, 38, 39, 40, 261, 262,
1413 120, 44, 120, 46, 120, 187, 188, 50, 51, 52,
1414 53, 121, 33, 34, 124, 122, 121, 83, 84, 124,
1415 120, 48, 120, 122, 120, 353, 120, 54, 71, 72,
1416 33, 34, 122, 76, 237, 78, 57, 40, 104, 121,
1417 67, 13, 124, 86, 33, 34, 121, 123, 12, 124,
1418 13, 40, 55, 125, 97, 82, 99, 100, 125, 241,
1419 63, 243, 65, 90, 246, 29, 55, 33, 34, 33,
1420 34, 253, 120, 268, 63, 257, 65, 120, 260, 28,
1421 124, 125, 264, 126, 33, 34, 129, 123, 124, 92,
1422 93, 273, 41, 122, 121, 120, 278, 120, 280, 123,
1423 120, 283, 120, 92, 93, 287, 288, 289, 120, 120,
1424 292, 293, 294, 12, 120, 14, 15, 16, 17, 18,
1425 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1426 29, 30, 31, 334, 123, 120, 318, 125, 339, 120,
1427 341, 3, 4, 5, 6, 7, 8, 9, 10, 11,
1428 332, 124, 334, 33, 34, 35, 121, 339, 340, 341,
1429 342, 121, 344, 345, 29, 30, 31, 349, 7, 33,
1430 121, 353, 7, 7, 12, 357, 14, 15, 16, 17,
1431 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1432 28, 29, 30, 31, 21, 22, 23, 24, 25, 26,
1433 27, 28, 29, 30, 31, 121, 407, 121, 121, 124,
1434 131, 120, 120, 416, 125, 125, 120, 138, 481, 120,
1435 120, 484, 121, 407, 12, 407, 14, 15, 16, 17,
1436 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1437 28, 29, 30, 31, 12, 120, 120, 442, 443, 120,
1438 120, 433, 120, 435, 12, 437, 27, 28, 29, 30,
1439 31, 29, 120, 120, 120, 33, 34, 449, 189, 190,
1440 120, 29, 120, 120, 475, 33, 34, 120, 479, 120,
1441 125, 121, 42, 121, 547, 122, 124, 550, 56, 47,
1442 121, 212, 213, 475, 124, 120, 120, 479, 113, 114,
1443 115, 116, 117, 118, 119, 121, 509, 510, 25, 26,
1444 27, 28, 29, 30, 31, 121, 121, 121, 500, 18,
1445 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1446 29, 30, 31, 101, 102, 103, 124, 120, 120, 120,
1447 120, 13, 120, 13, 123, 122, 549, 121, 120, 38,
1448 125, 121, 534, 535, 121, 537, 277, 121, 279, 124,
1449 281, 282, 121, 284, 285, 286, 548, 121, 13, 290,
1450 291, 121, 121, 121, 121, 121, 121, 298, 299, 300,
1451 301, 302, 303, 304, 305, 306, 307, 308, 309, 310,
1452 311, 312, 313, 314, 315, 316, 121, 12, 124, 121,
1453 12, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1454 28, 29, 30, 31, 29, 121, 13, 29, 33, 34,
1455 120, 33, 34, 107, 13, 40, 121, 121, 40, 121,
1456 45, 121, 47, 45, 121, 47, 121, 120, 7, 120,
1457 22, 123, 120, 58, 121, 125, 58, 13, 63, 35,
1458 65, 63, 125, 65, 69, 121, 124, 69, 42, 74,
1459 121, 121, 74, 22, 123, 7, 253, 168, 331, 320,
1460 479, 142, 101, 21, 170, 14, 491, 92, 93, 94,
1461 92, 93, 94, 98, 60, -1, 98, -1, 103, 410,
1462 105, 103, -1, 105, -1, -1, -1, -1, -1, -1,
1463 -1, -1, -1, -1, -1, -1, -1, -1, 123, -1,
1464 125, -1, -1, 125, -1, -1, -1, -1, -1, -1,
1465 -1, -1, -1, -1, -1, -1, 447, -1, -1, -1,
1466 -1, 452, -1, 454, -1, -1, -1, 458, 459, -1,
1467 461, -1, 463, -1, -1, -1, 12, 468, 14, 15,
1468 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1469 26, 27, 28, 29, 30, 31, 15, 16, 17, 18,
1470 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1471 29, 30, 31, 12, 505, 14, 15, 16, 17, 18,
1472 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1473 29, 30, 31, 12, -1, 14, 15, 16, 17, 18,
1474 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1475 29, 30, 31, 12, -1, 14, 15, 16, 17, 18,
1476 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1477 29, 30, 31, -1, -1, -1, -1, -1, -1, -1,
1478 -1, -1, -1, -1, -1, -1, -1, 12, 124, 14,
1479 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1480 25, 26, 27, 28, 29, 30, 31, 16, 17, 18,
1481 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1482 29, 30, 31, -1, 12, 124, 14, 15, 16, 17,
1483 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1484 28, 29, 30, 31, 12, 124, 14, 15, 16, 17,
1485 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1486 28, 29, 30, 31, 12, 124, 14, 15, 16, 17,
1487 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,
1488 28, 29, 30, 31, -1, -1, -1, -1, -1, -1,
1489 -1, -1, -1, -1, -1, 12, 121, 14, 15, 16,
1490 17, 18, 19, 20, 21, 22, 23, 24, 25, 26,
1491 27, 28, 29, 30, 31, 17, 18, 19, 20, 21,
1492 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1493 -1, -1, 12, 121, 14, 15, 16, 17, 18, 19,
1494 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1495 30, 31, 12, 121, 14, 15, 16, 17, 18, 19,
1496 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1497 30, 31, 12, 121, 14, 15, 16, 17, 18, 19,
1498 20, 21, 22, 23, 24, 25, 26, 27, 28, 29,
1499 30, 31, -1, -1, -1, -1, -1, -1, -1, -1,
1500 -1, -1, -1, 12, 121, 14, 15, 16, 17, 18,
1501 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1502 29, 30, 31, -1, -1, -1, -1, -1, -1, -1,
1503 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1504 12, 121, 14, 15, 16, 17, 18, 19, 20, 21,
1505 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1506 12, 121, 14, 15, 16, 17, 18, 19, 20, 21,
1507 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1508 12, 121, 14, 15, 16, 17, 18, 19, 20, 21,
1509 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
1510 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1511 -1, -1, 121, 12, 13, 14, 15, 16, 17, 18,
1512 19, 20, 21, 22, 23, 24, 25, 26, 27, 28,
1513 29, 30, 31, 27, 28, -1, -1, -1, -1, 33,
1514 34, 35, 36, 37, 38, 39, 40, -1, -1, 121,
1515 44, -1, 46, -1, 48, -1, 50, 51, 52, 53,
1516 54, -1, -1, -1, -1, -1, -1, -1, -1, 121,
1517 -1, -1, -1, 67, -1, -1, -1, 71, 72, -1,
1518 -1, -1, 76, -1, 78, -1, -1, -1, 82, 121,
1519 -1, -1, 86, -1, -1, -1, 90, -1, -1, -1,
1520 -1, -1, -1, 97, -1, 99, 100, -1, -1, -1,
1521 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1522 -1, 120, -1, -1, -1, -1, 120, 121, -1, -1,
1523 27, 28, 126, -1, -1, 129, 33, 34, 35, 36,
1524 37, 38, 39, 40, -1, -1, -1, 44, -1, 46,
1525 -1, -1, -1, 50, 51, 52, 53, -1, -1, -1,
1526 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1527 -1, -1, -1, -1, 71, 72, -1, -1, -1, 76,
1528 -1, 78, -1, 33, 34, -1, -1, -1, -1, 86,
1529 40, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1530 97, -1, 99, 100, -1, 55, -1, 57, -1, -1,
1531 60, -1, 62, 63, -1, 65, 66, -1, 68, -1,
1532 -1, -1, -1, 120, -1, -1, -1, 77, -1, 126,
1533 -1, -1, 129, -1, -1, -1, -1, -1, 88, 89,
1534 -1, 91, 92, 93, -1, 95, 96, -1, -1, -1,
1535 -1, -1, -1, -1, -1, -1, -1, -1, -1, 109,
1536 -1, 111, 112, -1, -1, -1, -1, -1, -1, -1,
1537 -1, -1, -1, -1, -1, 125, 12, 13, 14, 15,
1538 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1539 26, 27, 28, 29, 30, 31, 12, -1, 14, 15,
1540 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
1541 26, 27, 28, 29, 30, 31
1542 };
1543
1544 /* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of
1545 state STATE-NUM. */
1546 static const yytype_uint8 yystos[] =
1547 {
1548 0, 113, 114, 115, 116, 117, 118, 119, 131, 132,
1549 33, 34, 122, 188, 189, 190, 196, 184, 196, 122,
1550 185, 186, 187, 144, 161, 171, 0, 40, 55, 57,
1551 60, 62, 63, 65, 66, 68, 77, 88, 89, 91,
1552 92, 93, 95, 96, 109, 111, 112, 125, 133, 137,
1553 180, 196, 33, 34, 57, 61, 73, 192, 193, 190,
1554 122, 7, 193, 187, 40, 55, 65, 145, 180, 196,
1555 12, 29, 40, 45, 47, 58, 65, 69, 74, 94,
1556 98, 103, 105, 125, 162, 163, 164, 165, 166, 170,
1557 180, 196, 124, 199, 120, 120, 120, 134, 120, 196,
1558 120, 122, 120, 120, 122, 120, 120, 120, 122, 120,
1559 122, 120, 124, 125, 197, 3, 4, 5, 6, 7,
1560 8, 9, 10, 11, 196, 13, 13, 123, 125, 192,
1561 181, 182, 125, 120, 120, 196, 197, 147, 148, 120,
1562 120, 196, 120, 120, 120, 120, 197, 65, 172, 196,
1563 181, 196, 138, 139, 120, 196, 28, 41, 141, 142,
1564 196, 171, 196, 196, 176, 196, 196, 196, 135, 196,
1565 136, 196, 181, 181, 181, 181, 181, 181, 181, 181,
1566 181, 122, 193, 193, 125, 33, 34, 57, 123, 27,
1567 28, 35, 36, 37, 38, 39, 40, 44, 46, 50,
1568 51, 52, 53, 71, 72, 76, 78, 86, 97, 99,
1569 100, 120, 126, 129, 183, 196, 123, 181, 196, 146,
1570 13, 120, 150, 183, 181, 181, 103, 165, 196, 47,
1571 170, 196, 181, 56, 101, 102, 103, 167, 168, 170,
1572 196, 120, 173, 124, 121, 121, 140, 196, 141, 7,
1573 33, 143, 121, 199, 123, 121, 121, 124, 123, 177,
1574 196, 7, 7, 121, 144, 121, 188, 121, 194, 125,
1575 125, 196, 125, 191, 196, 183, 183, 120, 120, 120,
1576 120, 120, 120, 120, 120, 120, 120, 120, 120, 120,
1577 120, 120, 120, 120, 120, 183, 183, 183, 12, 14,
1578 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
1579 25, 26, 27, 28, 29, 30, 31, 125, 124, 121,
1580 122, 48, 54, 67, 82, 90, 121, 151, 42, 152,
1581 13, 120, 124, 121, 120, 121, 121, 121, 121, 120,
1582 120, 120, 120, 121, 199, 126, 196, 13, 196, 124,
1583 196, 121, 181, 120, 142, 196, 35, 178, 196, 181,
1584 181, 123, 123, 193, 73, 122, 125, 196, 183, 196,
1585 183, 196, 183, 183, 196, 183, 183, 183, 196, 196,
1586 196, 183, 183, 196, 196, 196, 121, 183, 183, 183,
1587 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1588 183, 183, 183, 183, 183, 183, 196, 161, 13, 121,
1589 120, 38, 153, 121, 151, 196, 169, 170, 168, 170,
1590 168, 56, 168, 196, 121, 85, 86, 127, 174, 121,
1591 196, 121, 141, 124, 42, 91, 179, 196, 121, 121,
1592 125, 198, 13, 195, 121, 121, 121, 124, 121, 124,
1593 121, 121, 124, 121, 124, 121, 121, 121, 124, 124,
1594 121, 124, 121, 13, 121, 123, 13, 183, 120, 107,
1595 154, 13, 121, 121, 121, 199, 121, 121, 121, 120,
1596 121, 7, 121, 196, 120, 179, 125, 120, 179, 123,
1597 193, 193, 183, 196, 183, 183, 183, 183, 183, 183,
1598 22, 156, 157, 121, 183, 120, 149, 13, 170, 169,
1599 181, 121, 181, 35, 125, 198, 121, 121, 121, 121,
1600 121, 121, 121, 196, 42, 158, 121, 183, 83, 84,
1601 104, 155, 121, 199, 121, 121, 123, 22, 159, 121,
1602 70, 71, 128, 175, 179, 179, 196, 7, 13, 160,
1603 7, 181, 196, 199, 181
1604 };
1605
1606 /* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */
1607 static const yytype_uint8 yyr1[] =
1608 {
1609 0, 130, 131, 131, 131, 131, 131, 131, 131, 132,
1610 132, 133, 133, 134, 133, 133, 133, 133, 133, 133,
1611 133, 133, 133, 135, 133, 133, 136, 133, 133, 133,
1612 133, 133, 133, 133, 137, 139, 138, 140, 140, 140,
1613 141, 141, 142, 142, 143, 142, 144, 144, 145, 145,
1614 145, 145, 146, 145, 148, 149, 147, 150, 150, 150,
1615 150, 150, 150, 151, 151, 151, 151, 151, 152, 152,
1616 153, 153, 154, 154, 155, 155, 155, 155, 156, 157,
1617 157, 158, 158, 159, 159, 160, 160, 161, 161, 162,
1618 162, 162, 162, 162, 162, 162, 162, 162, 163, 163,
1619 163, 163, 163, 164, 164, 165, 165, 166, 166, 167,
1620 167, 167, 167, 168, 168, 168, 168, 169, 169, 170,
1621 170, 170, 171, 171, 172, 172, 172, 173, 173, 173,
1622 174, 174, 174, 175, 175, 175, 176, 176, 177, 178,
1623 178, 179, 179, 179, 179, 179, 180, 180, 180, 180,
1624 180, 180, 180, 180, 180, 180, 180, 180, 182, 181,
1625 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1626 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1627 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1628 183, 183, 183, 183, 183, 183, 183, 183, 183, 183,
1629 183, 183, 183, 183, 183, 183, 184, 185, 186, 186,
1630 187, 188, 189, 189, 190, 190, 190, 191, 191, 192,
1631 192, 192, 192, 192, 193, 193, 193, 193, 194, 193,
1632 195, 193, 193, 193, 196, 196, 197, 197, 198, 198,
1633 199, 199
1634 };
1635
1636 /* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */
1637 static const yytype_int8 yyr2[] =
1638 {
1639 0, 2, 2, 2, 2, 2, 2, 2, 2, 2,
1640 0, 4, 1, 0, 5, 1, 4, 4, 4, 4,
1641 8, 4, 4, 0, 5, 4, 0, 5, 4, 2,
1642 6, 2, 1, 1, 4, 0, 2, 1, 2, 3,
1643 1, 3, 1, 2, 0, 5, 2, 0, 4, 2,
1644 6, 2, 0, 7, 0, 0, 7, 1, 3, 2,
1645 4, 4, 5, 1, 1, 1, 1, 1, 0, 4,
1646 0, 4, 0, 4, 0, 1, 1, 1, 5, 2,
1647 0, 3, 0, 3, 0, 2, 0, 0, 2, 2,
1648 1, 4, 6, 4, 1, 4, 2, 1, 1, 1,
1649 1, 1, 1, 1, 4, 1, 4, 1, 4, 3,
1650 1, 6, 4, 1, 4, 4, 4, 3, 1, 1,
1651 1, 1, 3, 0, 10, 2, 0, 3, 4, 0,
1652 1, 1, 1, 1, 1, 1, 2, 0, 4, 1,
1653 1, 0, 2, 2, 5, 5, 3, 3, 3, 3,
1654 3, 3, 3, 3, 3, 6, 6, 6, 0, 2,
1655 3, 2, 2, 2, 2, 3, 3, 3, 3, 3,
1656 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
1657 3, 3, 3, 5, 1, 1, 6, 6, 4, 1,
1658 4, 4, 4, 4, 4, 4, 4, 4, 4, 6,
1659 4, 6, 6, 4, 6, 6, 3, 1, 1, 2,
1660 5, 1, 1, 2, 4, 5, 6, 1, 2, 0,
1661 2, 4, 4, 8, 1, 1, 3, 3, 0, 7,
1662 0, 9, 1, 3, 1, 1, 1, 1, 1, 0,
1663 1, 0
1664 };
1665
1666
1667 enum { YYENOMEM = -2 };
1668
1669 #define yyerrok (yyerrstatus = 0)
1670 #define yyclearin (yychar = YYEMPTY)
1671
1672 #define YYACCEPT goto yyacceptlab
1673 #define YYABORT goto yyabortlab
1674 #define YYERROR goto yyerrorlab
1675 #define YYNOMEM goto yyexhaustedlab
1676
1677
1678 #define YYRECOVERING() (!!yyerrstatus)
1679
1680 #define YYBACKUP(Token, Value) \
1681 do \
1682 if (yychar == YYEMPTY) \
1683 { \
1684 yychar = (Token); \
1685 yylval = (Value); \
1686 YYPOPSTACK (yylen); \
1687 yystate = *yyssp; \
1688 goto yybackup; \
1689 } \
1690 else \
1691 { \
1692 yyerror (closure, YY_("syntax error: cannot back up")); \
1693 YYERROR; \
1694 } \
1695 while (0)
1696
1697 /* Backward compatibility with an undocumented macro.
1698 Use YYerror or YYUNDEF. */
1699 #define YYERRCODE YYUNDEF
1700
1701
1702 /* Enable debugging if requested. */
1703 #if YYDEBUG
1704
1705 # ifndef YYFPRINTF
1706 # include <stdio.h> /* INFRINGES ON USER NAME SPACE */
1707 # define YYFPRINTF fprintf
1708 # endif
1709
1710 # define YYDPRINTF(Args) \
1711 do { \
1712 if (yydebug) \
1713 YYFPRINTF Args; \
1714 } while (0)
1715
1716
1717
1718
1719 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \
1720 do { \
1721 if (yydebug) \
1722 { \
1723 YYFPRINTF (stderr, "%s ", Title); \
1724 yy_symbol_print (stderr, \
1725 Kind, Value, closure); \
1726 YYFPRINTF (stderr, "\n"); \
1727 } \
1728 } while (0)
1729
1730
1731 /*-----------------------------------.
1732 | Print this symbol's value on YYO. |
1733 `-----------------------------------*/
1734
1735 static void
yy_symbol_value_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,void * closure)1736 yy_symbol_value_print (FILE *yyo,
1737 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, void* closure)
1738 {
1739 FILE *yyoutput = yyo;
1740 YY_USE (yyoutput);
1741 YY_USE (closure);
1742 if (!yyvaluep)
1743 return;
1744 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
1745 YY_USE (yykind);
1746 YY_IGNORE_MAYBE_UNINITIALIZED_END
1747 }
1748
1749
1750 /*---------------------------.
1751 | Print this symbol on YYO. |
1752 `---------------------------*/
1753
1754 static void
yy_symbol_print(FILE * yyo,yysymbol_kind_t yykind,YYSTYPE const * const yyvaluep,void * closure)1755 yy_symbol_print (FILE *yyo,
1756 yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, void* closure)
1757 {
1758 YYFPRINTF (yyo, "%s %s (",
1759 yykind < YYNTOKENS ? "token" : "nterm", yysymbol_name (yykind));
1760
1761 yy_symbol_value_print (yyo, yykind, yyvaluep, closure);
1762 YYFPRINTF (yyo, ")");
1763 }
1764
1765 /*------------------------------------------------------------------.
1766 | yy_stack_print -- Print the state stack from its BOTTOM up to its |
1767 | TOP (included). |
1768 `------------------------------------------------------------------*/
1769
1770 static void
yy_stack_print(yy_state_t * yybottom,yy_state_t * yytop)1771 yy_stack_print (yy_state_t *yybottom, yy_state_t *yytop)
1772 {
1773 YYFPRINTF (stderr, "Stack now");
1774 for (; yybottom <= yytop; yybottom++)
1775 {
1776 int yybot = *yybottom;
1777 YYFPRINTF (stderr, " %d", yybot);
1778 }
1779 YYFPRINTF (stderr, "\n");
1780 }
1781
1782 # define YY_STACK_PRINT(Bottom, Top) \
1783 do { \
1784 if (yydebug) \
1785 yy_stack_print ((Bottom), (Top)); \
1786 } while (0)
1787
1788
1789 /*------------------------------------------------.
1790 | Report that the YYRULE is going to be reduced. |
1791 `------------------------------------------------*/
1792
1793 static void
yy_reduce_print(yy_state_t * yyssp,YYSTYPE * yyvsp,int yyrule,void * closure)1794 yy_reduce_print (yy_state_t *yyssp, YYSTYPE *yyvsp,
1795 int yyrule, void* closure)
1796 {
1797 int yylno = yyrline[yyrule];
1798 int yynrhs = yyr2[yyrule];
1799 int yyi;
1800 YYFPRINTF (stderr, "Reducing stack by rule %d (line %d):\n",
1801 yyrule - 1, yylno);
1802 /* The symbols being reduced. */
1803 for (yyi = 0; yyi < yynrhs; yyi++)
1804 {
1805 YYFPRINTF (stderr, " $%d = ", yyi + 1);
1806 yy_symbol_print (stderr,
1807 YY_ACCESSING_SYMBOL (+yyssp[yyi + 1 - yynrhs]),
1808 &yyvsp[(yyi + 1) - (yynrhs)], closure);
1809 YYFPRINTF (stderr, "\n");
1810 }
1811 }
1812
1813 # define YY_REDUCE_PRINT(Rule) \
1814 do { \
1815 if (yydebug) \
1816 yy_reduce_print (yyssp, yyvsp, Rule, closure); \
1817 } while (0)
1818
1819 /* Nonzero means print parse trace. It is left uninitialized so that
1820 multiple parsers can coexist. */
1821 int yydebug;
1822 #else /* !YYDEBUG */
1823 # define YYDPRINTF(Args) ((void) 0)
1824 # define YY_SYMBOL_PRINT(Title, Kind, Value, Location)
1825 # define YY_STACK_PRINT(Bottom, Top)
1826 # define YY_REDUCE_PRINT(Rule)
1827 #endif /* !YYDEBUG */
1828
1829
1830 /* YYINITDEPTH -- initial size of the parser's stacks. */
1831 #ifndef YYINITDEPTH
1832 # define YYINITDEPTH 200
1833 #endif
1834
1835 /* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
1836 if the built-in stack extension method is used).
1837
1838 Do not make this value too large; the results are undefined if
1839 YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
1840 evaluated with infinite-precision integer arithmetic. */
1841
1842 #ifndef YYMAXDEPTH
1843 # define YYMAXDEPTH 10000
1844 #endif
1845
1846
1847 /* Context of a parse error. */
1848 typedef struct
1849 {
1850 yy_state_t *yyssp;
1851 yysymbol_kind_t yytoken;
1852 } yypcontext_t;
1853
1854 /* Put in YYARG at most YYARGN of the expected tokens given the
1855 current YYCTX, and return the number of tokens stored in YYARG. If
1856 YYARG is null, return the number of expected tokens (guaranteed to
1857 be less than YYNTOKENS). Return YYENOMEM on memory exhaustion.
1858 Return 0 if there are more than YYARGN expected tokens, yet fill
1859 YYARG up to YYARGN. */
1860 static int
yypcontext_expected_tokens(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)1861 yypcontext_expected_tokens (const yypcontext_t *yyctx,
1862 yysymbol_kind_t yyarg[], int yyargn)
1863 {
1864 /* Actual size of YYARG. */
1865 int yycount = 0;
1866 int yyn = yypact[+*yyctx->yyssp];
1867 if (!yypact_value_is_default (yyn))
1868 {
1869 /* Start YYX at -YYN if negative to avoid negative indexes in
1870 YYCHECK. In other words, skip the first -YYN actions for
1871 this state because they are default actions. */
1872 int yyxbegin = yyn < 0 ? -yyn : 0;
1873 /* Stay within bounds of both yycheck and yytname. */
1874 int yychecklim = YYLAST - yyn + 1;
1875 int yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;
1876 int yyx;
1877 for (yyx = yyxbegin; yyx < yyxend; ++yyx)
1878 if (yycheck[yyx + yyn] == yyx && yyx != YYSYMBOL_YYerror
1879 && !yytable_value_is_error (yytable[yyx + yyn]))
1880 {
1881 if (!yyarg)
1882 ++yycount;
1883 else if (yycount == yyargn)
1884 return 0;
1885 else
1886 yyarg[yycount++] = YY_CAST (yysymbol_kind_t, yyx);
1887 }
1888 }
1889 if (yyarg && yycount == 0 && 0 < yyargn)
1890 yyarg[0] = YYSYMBOL_YYEMPTY;
1891 return yycount;
1892 }
1893
1894
1895
1896
1897 #ifndef yystrlen
1898 # if defined __GLIBC__ && defined _STRING_H
1899 # define yystrlen(S) (YY_CAST (YYPTRDIFF_T, strlen (S)))
1900 # else
1901 /* Return the length of YYSTR. */
1902 static YYPTRDIFF_T
yystrlen(const char * yystr)1903 yystrlen (const char *yystr)
1904 {
1905 YYPTRDIFF_T yylen;
1906 for (yylen = 0; yystr[yylen]; yylen++)
1907 continue;
1908 return yylen;
1909 }
1910 # endif
1911 #endif
1912
1913 #ifndef yystpcpy
1914 # if defined __GLIBC__ && defined _STRING_H && defined _GNU_SOURCE
1915 # define yystpcpy stpcpy
1916 # else
1917 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
1918 YYDEST. */
1919 static char *
yystpcpy(char * yydest,const char * yysrc)1920 yystpcpy (char *yydest, const char *yysrc)
1921 {
1922 char *yyd = yydest;
1923 const char *yys = yysrc;
1924
1925 while ((*yyd++ = *yys++) != '\0')
1926 continue;
1927
1928 return yyd - 1;
1929 }
1930 # endif
1931 #endif
1932
1933 #ifndef yytnamerr
1934 /* Copy to YYRES the contents of YYSTR after stripping away unnecessary
1935 quotes and backslashes, so that it's suitable for yyerror. The
1936 heuristic is that double-quoting is unnecessary unless the string
1937 contains an apostrophe, a comma, or backslash (other than
1938 backslash-backslash). YYSTR is taken from yytname. If YYRES is
1939 null, do not copy; instead, return the length of what the result
1940 would have been. */
1941 static YYPTRDIFF_T
yytnamerr(char * yyres,const char * yystr)1942 yytnamerr (char *yyres, const char *yystr)
1943 {
1944 if (*yystr == '"')
1945 {
1946 YYPTRDIFF_T yyn = 0;
1947 char const *yyp = yystr;
1948 for (;;)
1949 switch (*++yyp)
1950 {
1951 case '\'':
1952 case ',':
1953 goto do_not_strip_quotes;
1954
1955 case '\\':
1956 if (*++yyp != '\\')
1957 goto do_not_strip_quotes;
1958 else
1959 goto append;
1960
1961 append:
1962 default:
1963 if (yyres)
1964 yyres[yyn] = *yyp;
1965 yyn++;
1966 break;
1967
1968 case '"':
1969 if (yyres)
1970 yyres[yyn] = '\0';
1971 return yyn;
1972 }
1973 do_not_strip_quotes: ;
1974 }
1975
1976 if (yyres)
1977 return yystpcpy (yyres, yystr) - yyres;
1978 else
1979 return yystrlen (yystr);
1980 }
1981 #endif
1982
1983
1984 static int
yy_syntax_error_arguments(const yypcontext_t * yyctx,yysymbol_kind_t yyarg[],int yyargn)1985 yy_syntax_error_arguments (const yypcontext_t *yyctx,
1986 yysymbol_kind_t yyarg[], int yyargn)
1987 {
1988 /* Actual size of YYARG. */
1989 int yycount = 0;
1990 /* There are many possibilities here to consider:
1991 - If this state is a consistent state with a default action, then
1992 the only way this function was invoked is if the default action
1993 is an error action. In that case, don't check for expected
1994 tokens because there are none.
1995 - The only way there can be no lookahead present (in yychar) is if
1996 this state is a consistent state with a default action. Thus,
1997 detecting the absence of a lookahead is sufficient to determine
1998 that there is no unexpected or expected token to report. In that
1999 case, just report a simple "syntax error".
2000 - Don't assume there isn't a lookahead just because this state is a
2001 consistent state with a default action. There might have been a
2002 previous inconsistent state, consistent state with a non-default
2003 action, or user semantic action that manipulated yychar.
2004 - Of course, the expected token list depends on states to have
2005 correct lookahead information, and it depends on the parser not
2006 to perform extra reductions after fetching a lookahead from the
2007 scanner and before detecting a syntax error. Thus, state merging
2008 (from LALR or IELR) and default reductions corrupt the expected
2009 token list. However, the list is correct for canonical LR with
2010 one exception: it will still contain any token that will not be
2011 accepted due to an error action in a later state.
2012 */
2013 if (yyctx->yytoken != YYSYMBOL_YYEMPTY)
2014 {
2015 int yyn;
2016 if (yyarg)
2017 yyarg[yycount] = yyctx->yytoken;
2018 ++yycount;
2019 yyn = yypcontext_expected_tokens (yyctx,
2020 yyarg ? yyarg + 1 : yyarg, yyargn - 1);
2021 if (yyn == YYENOMEM)
2022 return YYENOMEM;
2023 else
2024 yycount += yyn;
2025 }
2026 return yycount;
2027 }
2028
2029 /* Copy into *YYMSG, which is of size *YYMSG_ALLOC, an error message
2030 about the unexpected token YYTOKEN for the state stack whose top is
2031 YYSSP.
2032
2033 Return 0 if *YYMSG was successfully written. Return -1 if *YYMSG is
2034 not large enough to hold the message. In that case, also set
2035 *YYMSG_ALLOC to the required number of bytes. Return YYENOMEM if the
2036 required number of bytes is too large to store. */
2037 static int
yysyntax_error(YYPTRDIFF_T * yymsg_alloc,char ** yymsg,const yypcontext_t * yyctx)2038 yysyntax_error (YYPTRDIFF_T *yymsg_alloc, char **yymsg,
2039 const yypcontext_t *yyctx)
2040 {
2041 enum { YYARGS_MAX = 5 };
2042 /* Internationalized format string. */
2043 const char *yyformat = YY_NULLPTR;
2044 /* Arguments of yyformat: reported tokens (one for the "unexpected",
2045 one per "expected"). */
2046 yysymbol_kind_t yyarg[YYARGS_MAX];
2047 /* Cumulated lengths of YYARG. */
2048 YYPTRDIFF_T yysize = 0;
2049
2050 /* Actual size of YYARG. */
2051 int yycount = yy_syntax_error_arguments (yyctx, yyarg, YYARGS_MAX);
2052 if (yycount == YYENOMEM)
2053 return YYENOMEM;
2054
2055 switch (yycount)
2056 {
2057 #define YYCASE_(N, S) \
2058 case N: \
2059 yyformat = S; \
2060 break
2061 default: /* Avoid compiler warnings. */
2062 YYCASE_(0, YY_("syntax error"));
2063 YYCASE_(1, YY_("syntax error, unexpected %s"));
2064 YYCASE_(2, YY_("syntax error, unexpected %s, expecting %s"));
2065 YYCASE_(3, YY_("syntax error, unexpected %s, expecting %s or %s"));
2066 YYCASE_(4, YY_("syntax error, unexpected %s, expecting %s or %s or %s"));
2067 YYCASE_(5, YY_("syntax error, unexpected %s, expecting %s or %s or %s or %s"));
2068 #undef YYCASE_
2069 }
2070
2071 /* Compute error message size. Don't count the "%s"s, but reserve
2072 room for the terminator. */
2073 yysize = yystrlen (yyformat) - 2 * yycount + 1;
2074 {
2075 int yyi;
2076 for (yyi = 0; yyi < yycount; ++yyi)
2077 {
2078 YYPTRDIFF_T yysize1
2079 = yysize + yytnamerr (YY_NULLPTR, yytname[yyarg[yyi]]);
2080 if (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM)
2081 yysize = yysize1;
2082 else
2083 return YYENOMEM;
2084 }
2085 }
2086
2087 if (*yymsg_alloc < yysize)
2088 {
2089 *yymsg_alloc = 2 * yysize;
2090 if (! (yysize <= *yymsg_alloc
2091 && *yymsg_alloc <= YYSTACK_ALLOC_MAXIMUM))
2092 *yymsg_alloc = YYSTACK_ALLOC_MAXIMUM;
2093 return -1;
2094 }
2095
2096 /* Avoid sprintf, as that infringes on the user's name space.
2097 Don't have undefined behavior even if the translation
2098 produced a string with the wrong number of "%s"s. */
2099 {
2100 char *yyp = *yymsg;
2101 int yyi = 0;
2102 while ((*yyp = *yyformat) != '\0')
2103 if (*yyp == '%' && yyformat[1] == 's' && yyi < yycount)
2104 {
2105 yyp += yytnamerr (yyp, yytname[yyarg[yyi++]]);
2106 yyformat += 2;
2107 }
2108 else
2109 {
2110 ++yyp;
2111 ++yyformat;
2112 }
2113 }
2114 return 0;
2115 }
2116
2117
2118 /*-----------------------------------------------.
2119 | Release the memory associated to this symbol. |
2120 `-----------------------------------------------*/
2121
2122 static void
yydestruct(const char * yymsg,yysymbol_kind_t yykind,YYSTYPE * yyvaluep,void * closure)2123 yydestruct (const char *yymsg,
2124 yysymbol_kind_t yykind, YYSTYPE *yyvaluep, void* closure)
2125 {
2126 YY_USE (yyvaluep);
2127 YY_USE (closure);
2128 if (!yymsg)
2129 yymsg = "Deleting";
2130 YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp);
2131
2132 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2133 YY_USE (yykind);
2134 YY_IGNORE_MAYBE_UNINITIALIZED_END
2135 }
2136
2137
2138
2139
2140
2141
2142 /*----------.
2143 | yyparse. |
2144 `----------*/
2145
2146 int
yyparse(void * closure)2147 yyparse (void* closure)
2148 {
2149 /* Lookahead token kind. */
2150 int yychar;
2151
2152
2153 /* The semantic value of the lookahead symbol. */
2154 /* Default value used for initialization, for pacifying older GCCs
2155 or non-GCC compilers. */
2156 YY_INITIAL_VALUE (static YYSTYPE yyval_default;)
2157 YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default);
2158
2159 /* Number of syntax errors so far. */
2160 int yynerrs = 0;
2161
2162 yy_state_fast_t yystate = 0;
2163 /* Number of tokens to shift before error messages enabled. */
2164 int yyerrstatus = 0;
2165
2166 /* Refer to the stacks through separate pointers, to allow yyoverflow
2167 to reallocate them elsewhere. */
2168
2169 /* Their size. */
2170 YYPTRDIFF_T yystacksize = YYINITDEPTH;
2171
2172 /* The state stack: array, bottom, top. */
2173 yy_state_t yyssa[YYINITDEPTH];
2174 yy_state_t *yyss = yyssa;
2175 yy_state_t *yyssp = yyss;
2176
2177 /* The semantic value stack: array, bottom, top. */
2178 YYSTYPE yyvsa[YYINITDEPTH];
2179 YYSTYPE *yyvs = yyvsa;
2180 YYSTYPE *yyvsp = yyvs;
2181
2182 int yyn;
2183 /* The return value of yyparse. */
2184 int yyresult;
2185 /* Lookahead symbol kind. */
2186 yysymbol_kind_t yytoken = YYSYMBOL_YYEMPTY;
2187 /* The variables used to return semantic value and location from the
2188 action routines. */
2189 YYSTYPE yyval;
2190
2191 /* Buffer for error messages, and its allocated size. */
2192 char yymsgbuf[128];
2193 char *yymsg = yymsgbuf;
2194 YYPTRDIFF_T yymsg_alloc = sizeof yymsgbuf;
2195
2196 #define YYPOPSTACK(N) (yyvsp -= (N), yyssp -= (N))
2197
2198 /* The number of symbols on the RHS of the reduced rule.
2199 Keep to zero when no symbol should be popped. */
2200 int yylen = 0;
2201
2202 YYDPRINTF ((stderr, "Starting parse\n"));
2203
2204 yychar = YYEMPTY; /* Cause a token to be read. */
2205
2206 goto yysetstate;
2207
2208
2209 /*------------------------------------------------------------.
2210 | yynewstate -- push a new state, which is found in yystate. |
2211 `------------------------------------------------------------*/
2212 yynewstate:
2213 /* In all cases, when you get here, the value and location stacks
2214 have just been pushed. So pushing a state here evens the stacks. */
2215 yyssp++;
2216
2217
2218 /*--------------------------------------------------------------------.
2219 | yysetstate -- set current state (the top of the stack) to yystate. |
2220 `--------------------------------------------------------------------*/
2221 yysetstate:
2222 YYDPRINTF ((stderr, "Entering state %d\n", yystate));
2223 YY_ASSERT (0 <= yystate && yystate < YYNSTATES);
2224 YY_IGNORE_USELESS_CAST_BEGIN
2225 *yyssp = YY_CAST (yy_state_t, yystate);
2226 YY_IGNORE_USELESS_CAST_END
2227 YY_STACK_PRINT (yyss, yyssp);
2228
2229 if (yyss + yystacksize - 1 <= yyssp)
2230 #if !defined yyoverflow && !defined YYSTACK_RELOCATE
2231 YYNOMEM;
2232 #else
2233 {
2234 /* Get the current used size of the three stacks, in elements. */
2235 YYPTRDIFF_T yysize = yyssp - yyss + 1;
2236
2237 # if defined yyoverflow
2238 {
2239 /* Give user a chance to reallocate the stack. Use copies of
2240 these so that the &'s don't force the real ones into
2241 memory. */
2242 yy_state_t *yyss1 = yyss;
2243 YYSTYPE *yyvs1 = yyvs;
2244
2245 /* Each stack pointer address is followed by the size of the
2246 data in use in that stack, in bytes. This used to be a
2247 conditional around just the two extra args, but that might
2248 be undefined if yyoverflow is a macro. */
2249 yyoverflow (YY_("memory exhausted"),
2250 &yyss1, yysize * YYSIZEOF (*yyssp),
2251 &yyvs1, yysize * YYSIZEOF (*yyvsp),
2252 &yystacksize);
2253 yyss = yyss1;
2254 yyvs = yyvs1;
2255 }
2256 # else /* defined YYSTACK_RELOCATE */
2257 /* Extend the stack our own way. */
2258 if (YYMAXDEPTH <= yystacksize)
2259 YYNOMEM;
2260 yystacksize *= 2;
2261 if (YYMAXDEPTH < yystacksize)
2262 yystacksize = YYMAXDEPTH;
2263
2264 {
2265 yy_state_t *yyss1 = yyss;
2266 union yyalloc *yyptr =
2267 YY_CAST (union yyalloc *,
2268 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize))));
2269 if (! yyptr)
2270 YYNOMEM;
2271 YYSTACK_RELOCATE (yyss_alloc, yyss);
2272 YYSTACK_RELOCATE (yyvs_alloc, yyvs);
2273 # undef YYSTACK_RELOCATE
2274 if (yyss1 != yyssa)
2275 YYSTACK_FREE (yyss1);
2276 }
2277 # endif
2278
2279 yyssp = yyss + yysize - 1;
2280 yyvsp = yyvs + yysize - 1;
2281
2282 YY_IGNORE_USELESS_CAST_BEGIN
2283 YYDPRINTF ((stderr, "Stack size increased to %ld\n",
2284 YY_CAST (long, yystacksize)));
2285 YY_IGNORE_USELESS_CAST_END
2286
2287 if (yyss + yystacksize - 1 <= yyssp)
2288 YYABORT;
2289 }
2290 #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */
2291
2292
2293 if (yystate == YYFINAL)
2294 YYACCEPT;
2295
2296 goto yybackup;
2297
2298
2299 /*-----------.
2300 | yybackup. |
2301 `-----------*/
2302 yybackup:
2303 /* Do appropriate processing given the current state. Read a
2304 lookahead token if we need one and don't already have one. */
2305
2306 /* First try to decide what to do without reference to lookahead token. */
2307 yyn = yypact[yystate];
2308 if (yypact_value_is_default (yyn))
2309 goto yydefault;
2310
2311 /* Not known => get a lookahead token if don't already have one. */
2312
2313 /* YYCHAR is either empty, or end-of-input, or a valid lookahead. */
2314 if (yychar == YYEMPTY)
2315 {
2316 YYDPRINTF ((stderr, "Reading a token\n"));
2317 yychar = yylex (&yylval, closure);
2318 }
2319
2320 if (yychar <= YYEOF)
2321 {
2322 yychar = YYEOF;
2323 yytoken = YYSYMBOL_YYEOF;
2324 YYDPRINTF ((stderr, "Now at end of input.\n"));
2325 }
2326 else if (yychar == YYerror)
2327 {
2328 /* The scanner already issued an error message, process directly
2329 to error recovery. But do not keep the error token as
2330 lookahead, it is too special and may lead us to an endless
2331 loop in error recovery. */
2332 yychar = YYUNDEF;
2333 yytoken = YYSYMBOL_YYerror;
2334 goto yyerrlab1;
2335 }
2336 else
2337 {
2338 yytoken = YYTRANSLATE (yychar);
2339 YY_SYMBOL_PRINT ("Next token is", yytoken, &yylval, &yylloc);
2340 }
2341
2342 /* If the proper action on seeing token YYTOKEN is to reduce or to
2343 detect an error, take that action. */
2344 yyn += yytoken;
2345 if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken)
2346 goto yydefault;
2347 yyn = yytable[yyn];
2348 if (yyn <= 0)
2349 {
2350 if (yytable_value_is_error (yyn))
2351 goto yyerrlab;
2352 yyn = -yyn;
2353 goto yyreduce;
2354 }
2355
2356 /* Count tokens shifted since error; after three, turn off error
2357 status. */
2358 if (yyerrstatus)
2359 yyerrstatus--;
2360
2361 /* Shift the lookahead token. */
2362 YY_SYMBOL_PRINT ("Shifting", yytoken, &yylval, &yylloc);
2363 yystate = yyn;
2364 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
2365 *++yyvsp = yylval;
2366 YY_IGNORE_MAYBE_UNINITIALIZED_END
2367
2368 /* Discard the shifted token. */
2369 yychar = YYEMPTY;
2370 goto yynewstate;
2371
2372
2373 /*-----------------------------------------------------------.
2374 | yydefault -- do the default action for the current state. |
2375 `-----------------------------------------------------------*/
2376 yydefault:
2377 yyn = yydefact[yystate];
2378 if (yyn == 0)
2379 goto yyerrlab;
2380 goto yyreduce;
2381
2382
2383 /*-----------------------------.
2384 | yyreduce -- do a reduction. |
2385 `-----------------------------*/
2386 yyreduce:
2387 /* yyn is the number of a rule to reduce with. */
2388 yylen = yyr2[yyn];
2389
2390 /* If YYLEN is nonzero, implement the default value of the action:
2391 '$$ = $1'.
2392
2393 Otherwise, the following line sets YYVAL to garbage.
2394 This behavior is undocumented and Bison
2395 users should not rely upon it. Assigning to YYVAL
2396 unconditionally makes the parser a bit smaller, and it avoids a
2397 GCC warning that YYVAL may be used uninitialized. */
2398 yyval = yyvsp[1-yylen];
2399
2400
2401 YY_REDUCE_PRINT (yyn);
2402 switch (yyn)
2403 {
2404 case 12: /* file_cmd: FORCE_COMMON_ALLOCATION */
2405 #line 255 "yyscript.y"
2406 { script_set_common_allocation(closure, 1); }
2407 #line 2408 "yyscript.c"
2408 break;
2409
2410 case 13: /* $@1: %empty */
2411 #line 257 "yyscript.y"
2412 { script_start_group(closure); }
2413 #line 2414 "yyscript.c"
2414 break;
2415
2416 case 14: /* file_cmd: GROUP $@1 '(' input_list ')' */
2417 #line 259 "yyscript.y"
2418 { script_end_group(closure); }
2419 #line 2420 "yyscript.c"
2420 break;
2421
2422 case 15: /* file_cmd: INHIBIT_COMMON_ALLOCATION */
2423 #line 261 "yyscript.y"
2424 { script_set_common_allocation(closure, 0); }
2425 #line 2426 "yyscript.c"
2426 break;
2427
2428 case 18: /* file_cmd: OPTION '(' string ')' */
2429 #line 265 "yyscript.y"
2430 { script_parse_option(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2431 #line 2432 "yyscript.c"
2432 break;
2433
2434 case 19: /* file_cmd: OUTPUT_FORMAT '(' string ')' */
2435 #line 267 "yyscript.y"
2436 {
2437 if (!script_check_output_format(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length,
2438 NULL, 0, NULL, 0))
2439 YYABORT;
2440 }
2441 #line 2442 "yyscript.c"
2442 break;
2443
2444 case 20: /* file_cmd: OUTPUT_FORMAT '(' string ',' string ',' string ')' */
2445 #line 273 "yyscript.y"
2446 {
2447 if (!script_check_output_format(closure, (yyvsp[-5].string).value, (yyvsp[-5].string).length,
2448 (yyvsp[-3].string).value, (yyvsp[-3].string).length,
2449 (yyvsp[-1].string).value, (yyvsp[-1].string).length))
2450 YYABORT;
2451 }
2452 #line 2453 "yyscript.c"
2453 break;
2454
2455 case 22: /* file_cmd: SEARCH_DIR '(' string ')' */
2456 #line 281 "yyscript.y"
2457 { script_add_search_dir(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2458 #line 2459 "yyscript.c"
2459 break;
2460
2461 case 23: /* $@2: %empty */
2462 #line 283 "yyscript.y"
2463 { script_start_sections(closure); }
2464 #line 2465 "yyscript.c"
2465 break;
2466
2467 case 24: /* file_cmd: SECTIONS '{' $@2 sections_block '}' */
2468 #line 285 "yyscript.y"
2469 { script_finish_sections(closure); }
2470 #line 2471 "yyscript.c"
2471 break;
2472
2473 case 25: /* file_cmd: TARGET_K '(' string ')' */
2474 #line 287 "yyscript.y"
2475 { script_set_target(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2476 #line 2477 "yyscript.c"
2477 break;
2478
2479 case 26: /* $@3: %empty */
2480 #line 289 "yyscript.y"
2481 { script_push_lex_into_version_mode(closure); }
2482 #line 2483 "yyscript.c"
2483 break;
2484
2485 case 27: /* file_cmd: VERSIONK '{' $@3 version_script '}' */
2486 #line 291 "yyscript.y"
2487 { script_pop_lex_mode(closure); }
2488 #line 2489 "yyscript.c"
2489 break;
2490
2491 case 28: /* file_cmd: ENTRY '(' string ')' */
2492 #line 293 "yyscript.y"
2493 { script_set_entry(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2494 #line 2495 "yyscript.c"
2495 break;
2496
2497 case 30: /* file_cmd: ASSERT_K '(' parse_exp ',' string ')' */
2498 #line 296 "yyscript.y"
2499 { script_add_assertion(closure, (yyvsp[-3].expr), (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2500 #line 2501 "yyscript.c"
2501 break;
2502
2503 case 31: /* file_cmd: INCLUDE string */
2504 #line 298 "yyscript.y"
2505 { script_include_directive(PARSING_LINKER_SCRIPT, closure,
2506 (yyvsp[0].string).value, (yyvsp[0].string).length); }
2507 #line 2508 "yyscript.c"
2508 break;
2509
2510 case 35: /* $@4: %empty */
2511 #line 317 "yyscript.y"
2512 { script_push_lex_into_expression_mode(closure); }
2513 #line 2514 "yyscript.c"
2514 break;
2515
2516 case 36: /* extern_name_list: $@4 extern_name_list_body */
2517 #line 319 "yyscript.y"
2518 { script_pop_lex_mode(closure); }
2519 #line 2520 "yyscript.c"
2520 break;
2521
2522 case 37: /* extern_name_list_body: string */
2523 #line 324 "yyscript.y"
2524 { script_add_extern(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
2525 #line 2526 "yyscript.c"
2526 break;
2527
2528 case 38: /* extern_name_list_body: extern_name_list_body string */
2529 #line 326 "yyscript.y"
2530 { script_add_extern(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
2531 #line 2532 "yyscript.c"
2532 break;
2533
2534 case 39: /* extern_name_list_body: extern_name_list_body ',' string */
2535 #line 328 "yyscript.y"
2536 { script_add_extern(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
2537 #line 2538 "yyscript.c"
2538 break;
2539
2540 case 42: /* input_list_element: string */
2541 #line 340 "yyscript.y"
2542 { script_add_file(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
2543 #line 2544 "yyscript.c"
2544 break;
2545
2546 case 43: /* input_list_element: '-' STRING */
2547 #line 342 "yyscript.y"
2548 { script_add_library(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
2549 #line 2550 "yyscript.c"
2550 break;
2551
2552 case 44: /* $@5: %empty */
2553 #line 344 "yyscript.y"
2554 { script_start_as_needed(closure); }
2555 #line 2556 "yyscript.c"
2556 break;
2557
2558 case 45: /* input_list_element: AS_NEEDED $@5 '(' input_list ')' */
2559 #line 346 "yyscript.y"
2560 { script_end_as_needed(closure); }
2561 #line 2562 "yyscript.c"
2562 break;
2563
2564 case 48: /* section_block_cmd: ENTRY '(' string ')' */
2565 #line 358 "yyscript.y"
2566 { script_set_entry(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2567 #line 2568 "yyscript.c"
2568 break;
2569
2570 case 50: /* section_block_cmd: ASSERT_K '(' parse_exp ',' string ')' */
2571 #line 361 "yyscript.y"
2572 { script_add_assertion(closure, (yyvsp[-3].expr), (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2573 #line 2574 "yyscript.c"
2574 break;
2575
2576 case 51: /* section_block_cmd: INCLUDE string */
2577 #line 363 "yyscript.y"
2578 { script_include_directive(PARSING_SECTIONS_BLOCK, closure,
2579 (yyvsp[0].string).value, (yyvsp[0].string).length); }
2580 #line 2581 "yyscript.c"
2581 break;
2582
2583 case 52: /* $@6: %empty */
2584 #line 366 "yyscript.y"
2585 { script_start_output_section(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length, &(yyvsp[0].output_section_header)); }
2586 #line 2587 "yyscript.c"
2587 break;
2588
2589 case 53: /* section_block_cmd: string section_header $@6 '{' section_cmds '}' section_trailer */
2590 #line 368 "yyscript.y"
2591 { script_finish_output_section(closure, &(yyvsp[0].output_section_trailer)); }
2592 #line 2593 "yyscript.c"
2593 break;
2594
2595 case 54: /* $@7: %empty */
2596 #line 374 "yyscript.y"
2597 { script_push_lex_into_expression_mode(closure); }
2598 #line 2599 "yyscript.c"
2599 break;
2600
2601 case 55: /* $@8: %empty */
2602 #line 376 "yyscript.y"
2603 { script_pop_lex_mode(closure); }
2604 #line 2605 "yyscript.c"
2605 break;
2606
2607 case 56: /* section_header: $@7 opt_address_and_section_type opt_at opt_align opt_subalign $@8 opt_constraint */
2608 #line 378 "yyscript.y"
2609 {
2610 (yyval.output_section_header).address = (yyvsp[-5].output_section_header).address;
2611 (yyval.output_section_header).section_type = (yyvsp[-5].output_section_header).section_type;
2612 (yyval.output_section_header).load_address = (yyvsp[-4].expr);
2613 (yyval.output_section_header).align = (yyvsp[-3].expr);
2614 (yyval.output_section_header).subalign = (yyvsp[-2].expr);
2615 (yyval.output_section_header).constraint = (yyvsp[0].constraint);
2616 }
2617 #line 2618 "yyscript.c"
2618 break;
2619
2620 case 57: /* opt_address_and_section_type: ':' */
2621 #line 394 "yyscript.y"
2622 {
2623 (yyval.output_section_header).address = NULL;
2624 (yyval.output_section_header).section_type = SCRIPT_SECTION_TYPE_NONE;
2625 }
2626 #line 2627 "yyscript.c"
2627 break;
2628
2629 case 58: /* opt_address_and_section_type: '(' ')' ':' */
2630 #line 399 "yyscript.y"
2631 {
2632 (yyval.output_section_header).address = NULL;
2633 (yyval.output_section_header).section_type = SCRIPT_SECTION_TYPE_NONE;
2634 }
2635 #line 2636 "yyscript.c"
2636 break;
2637
2638 case 59: /* opt_address_and_section_type: exp ':' */
2639 #line 404 "yyscript.y"
2640 {
2641 (yyval.output_section_header).address = (yyvsp[-1].expr);
2642 (yyval.output_section_header).section_type = SCRIPT_SECTION_TYPE_NONE;
2643 }
2644 #line 2645 "yyscript.c"
2645 break;
2646
2647 case 60: /* opt_address_and_section_type: exp '(' ')' ':' */
2648 #line 409 "yyscript.y"
2649 {
2650 (yyval.output_section_header).address = (yyvsp[-3].expr);
2651 (yyval.output_section_header).section_type = SCRIPT_SECTION_TYPE_NONE;
2652 }
2653 #line 2654 "yyscript.c"
2654 break;
2655
2656 case 61: /* opt_address_and_section_type: '(' section_type ')' ':' */
2657 #line 414 "yyscript.y"
2658 {
2659 (yyval.output_section_header).address = NULL;
2660 (yyval.output_section_header).section_type = (yyvsp[-2].section_type);
2661 }
2662 #line 2663 "yyscript.c"
2663 break;
2664
2665 case 62: /* opt_address_and_section_type: exp '(' section_type ')' ':' */
2666 #line 419 "yyscript.y"
2667 {
2668 (yyval.output_section_header).address = (yyvsp[-4].expr);
2669 (yyval.output_section_header).section_type = (yyvsp[-2].section_type);
2670 }
2671 #line 2672 "yyscript.c"
2672 break;
2673
2674 case 63: /* section_type: NOLOAD */
2675 #line 428 "yyscript.y"
2676 { (yyval.section_type) = SCRIPT_SECTION_TYPE_NOLOAD; }
2677 #line 2678 "yyscript.c"
2678 break;
2679
2680 case 64: /* section_type: DSECT */
2681 #line 430 "yyscript.y"
2682 {
2683 yyerror(closure, "DSECT section type is unsupported");
2684 (yyval.section_type) = SCRIPT_SECTION_TYPE_DSECT;
2685 }
2686 #line 2687 "yyscript.c"
2687 break;
2688
2689 case 65: /* section_type: COPY */
2690 #line 435 "yyscript.y"
2691 {
2692 yyerror(closure, "COPY section type is unsupported");
2693 (yyval.section_type) = SCRIPT_SECTION_TYPE_COPY;
2694 }
2695 #line 2696 "yyscript.c"
2696 break;
2697
2698 case 66: /* section_type: INFO */
2699 #line 440 "yyscript.y"
2700 {
2701 yyerror(closure, "INFO section type is unsupported");
2702 (yyval.section_type) = SCRIPT_SECTION_TYPE_INFO;
2703 }
2704 #line 2705 "yyscript.c"
2705 break;
2706
2707 case 67: /* section_type: OVERLAY */
2708 #line 445 "yyscript.y"
2709 {
2710 yyerror(closure, "OVERLAY section type is unsupported");
2711 (yyval.section_type) = SCRIPT_SECTION_TYPE_OVERLAY;
2712 }
2713 #line 2714 "yyscript.c"
2714 break;
2715
2716 case 68: /* opt_at: %empty */
2717 #line 454 "yyscript.y"
2718 { (yyval.expr) = NULL; }
2719 #line 2720 "yyscript.c"
2720 break;
2721
2722 case 69: /* opt_at: AT '(' exp ')' */
2723 #line 456 "yyscript.y"
2724 { (yyval.expr) = (yyvsp[-1].expr); }
2725 #line 2726 "yyscript.c"
2726 break;
2727
2728 case 70: /* opt_align: %empty */
2729 #line 462 "yyscript.y"
2730 { (yyval.expr) = NULL; }
2731 #line 2732 "yyscript.c"
2732 break;
2733
2734 case 71: /* opt_align: ALIGN_K '(' exp ')' */
2735 #line 464 "yyscript.y"
2736 { (yyval.expr) = (yyvsp[-1].expr); }
2737 #line 2738 "yyscript.c"
2738 break;
2739
2740 case 72: /* opt_subalign: %empty */
2741 #line 470 "yyscript.y"
2742 { (yyval.expr) = NULL; }
2743 #line 2744 "yyscript.c"
2744 break;
2745
2746 case 73: /* opt_subalign: SUBALIGN '(' exp ')' */
2747 #line 472 "yyscript.y"
2748 { (yyval.expr) = (yyvsp[-1].expr); }
2749 #line 2750 "yyscript.c"
2750 break;
2751
2752 case 74: /* opt_constraint: %empty */
2753 #line 478 "yyscript.y"
2754 { (yyval.constraint) = CONSTRAINT_NONE; }
2755 #line 2756 "yyscript.c"
2756 break;
2757
2758 case 75: /* opt_constraint: ONLY_IF_RO */
2759 #line 480 "yyscript.y"
2760 { (yyval.constraint) = CONSTRAINT_ONLY_IF_RO; }
2761 #line 2762 "yyscript.c"
2762 break;
2763
2764 case 76: /* opt_constraint: ONLY_IF_RW */
2765 #line 482 "yyscript.y"
2766 { (yyval.constraint) = CONSTRAINT_ONLY_IF_RW; }
2767 #line 2768 "yyscript.c"
2768 break;
2769
2770 case 77: /* opt_constraint: SPECIAL */
2771 #line 484 "yyscript.y"
2772 { (yyval.constraint) = CONSTRAINT_SPECIAL; }
2773 #line 2774 "yyscript.c"
2774 break;
2775
2776 case 78: /* section_trailer: opt_memspec opt_at_memspec opt_phdr opt_fill opt_comma */
2777 #line 490 "yyscript.y"
2778 {
2779 (yyval.output_section_trailer).fill = (yyvsp[-1].expr);
2780 (yyval.output_section_trailer).phdrs = (yyvsp[-2].string_list);
2781 }
2782 #line 2783 "yyscript.c"
2783 break;
2784
2785 case 79: /* opt_memspec: '>' string */
2786 #line 499 "yyscript.y"
2787 { script_set_section_region(closure, (yyvsp[0].string).value, (yyvsp[0].string).length, 1); }
2788 #line 2789 "yyscript.c"
2789 break;
2790
2791 case 81: /* opt_at_memspec: AT '>' string */
2792 #line 506 "yyscript.y"
2793 { script_set_section_region(closure, (yyvsp[0].string).value, (yyvsp[0].string).length, 0); }
2794 #line 2795 "yyscript.c"
2795 break;
2796
2797 case 83: /* opt_phdr: opt_phdr ':' string */
2798 #line 513 "yyscript.y"
2799 { (yyval.string_list) = script_string_list_push_back((yyvsp[-2].string_list), (yyvsp[0].string).value, (yyvsp[0].string).length); }
2800 #line 2801 "yyscript.c"
2801 break;
2802
2803 case 84: /* opt_phdr: %empty */
2804 #line 515 "yyscript.y"
2805 { (yyval.string_list) = NULL; }
2806 #line 2807 "yyscript.c"
2807 break;
2808
2809 case 85: /* opt_fill: '=' parse_exp */
2810 #line 522 "yyscript.y"
2811 { (yyval.expr) = (yyvsp[0].expr); }
2812 #line 2813 "yyscript.c"
2813 break;
2814
2815 case 86: /* opt_fill: %empty */
2816 #line 524 "yyscript.y"
2817 { (yyval.expr) = NULL; }
2818 #line 2819 "yyscript.c"
2819 break;
2820
2821 case 91: /* section_cmd: data_length '(' parse_exp ')' */
2822 #line 540 "yyscript.y"
2823 { script_add_data(closure, (yyvsp[-3].integer), (yyvsp[-1].expr)); }
2824 #line 2825 "yyscript.c"
2825 break;
2826
2827 case 92: /* section_cmd: ASSERT_K '(' parse_exp ',' string ')' */
2828 #line 542 "yyscript.y"
2829 { script_add_assertion(closure, (yyvsp[-3].expr), (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
2830 #line 2831 "yyscript.c"
2831 break;
2832
2833 case 93: /* section_cmd: FILL '(' parse_exp ')' */
2834 #line 544 "yyscript.y"
2835 { script_add_fill(closure, (yyvsp[-1].expr)); }
2836 #line 2837 "yyscript.c"
2837 break;
2838
2839 case 94: /* section_cmd: CONSTRUCTORS */
2840 #line 546 "yyscript.y"
2841 {
2842 /* The GNU linker uses CONSTRUCTORS for the a.out object
2843 file format. It does nothing when using ELF. Since
2844 some ELF linker scripts use it although it does
2845 nothing, we accept it and ignore it. */
2846 }
2847 #line 2848 "yyscript.c"
2848 break;
2849
2850 case 96: /* section_cmd: INCLUDE string */
2851 #line 554 "yyscript.y"
2852 { script_include_directive(PARSING_SECTION_COMMANDS, closure,
2853 (yyvsp[0].string).value, (yyvsp[0].string).length); }
2854 #line 2855 "yyscript.c"
2855 break;
2856
2857 case 98: /* data_length: QUAD */
2858 #line 563 "yyscript.y"
2859 { (yyval.integer) = QUAD; }
2860 #line 2861 "yyscript.c"
2861 break;
2862
2863 case 99: /* data_length: SQUAD */
2864 #line 565 "yyscript.y"
2865 { (yyval.integer) = SQUAD; }
2866 #line 2867 "yyscript.c"
2867 break;
2868
2869 case 100: /* data_length: LONG */
2870 #line 567 "yyscript.y"
2871 { (yyval.integer) = LONG; }
2872 #line 2873 "yyscript.c"
2873 break;
2874
2875 case 101: /* data_length: SHORT */
2876 #line 569 "yyscript.y"
2877 { (yyval.integer) = SHORT; }
2878 #line 2879 "yyscript.c"
2879 break;
2880
2881 case 102: /* data_length: BYTE */
2882 #line 571 "yyscript.y"
2883 { (yyval.integer) = BYTE; }
2884 #line 2885 "yyscript.c"
2885 break;
2886
2887 case 103: /* input_section_spec: input_section_no_keep */
2888 #line 578 "yyscript.y"
2889 { script_add_input_section(closure, &(yyvsp[0].input_section_spec), 0); }
2890 #line 2891 "yyscript.c"
2891 break;
2892
2893 case 104: /* input_section_spec: KEEP '(' input_section_no_keep ')' */
2894 #line 580 "yyscript.y"
2895 { script_add_input_section(closure, &(yyvsp[-1].input_section_spec), 1); }
2896 #line 2897 "yyscript.c"
2897 break;
2898
2899 case 105: /* input_section_no_keep: string */
2900 #line 586 "yyscript.y"
2901 {
2902 (yyval.input_section_spec).file.name = (yyvsp[0].string);
2903 (yyval.input_section_spec).file.sort = SORT_WILDCARD_NONE;
2904 (yyval.input_section_spec).input_sections.sections = NULL;
2905 (yyval.input_section_spec).input_sections.exclude = NULL;
2906 }
2907 #line 2908 "yyscript.c"
2908 break;
2909
2910 case 106: /* input_section_no_keep: wildcard_file '(' wildcard_sections ')' */
2911 #line 593 "yyscript.y"
2912 {
2913 (yyval.input_section_spec).file = (yyvsp[-3].wildcard_section);
2914 (yyval.input_section_spec).input_sections = (yyvsp[-1].wildcard_sections);
2915 }
2916 #line 2917 "yyscript.c"
2917 break;
2918
2919 case 107: /* wildcard_file: wildcard_name */
2920 #line 602 "yyscript.y"
2921 {
2922 (yyval.wildcard_section).name = (yyvsp[0].string);
2923 (yyval.wildcard_section).sort = SORT_WILDCARD_NONE;
2924 }
2925 #line 2926 "yyscript.c"
2926 break;
2927
2928 case 108: /* wildcard_file: SORT_BY_NAME '(' wildcard_name ')' */
2929 #line 607 "yyscript.y"
2930 {
2931 (yyval.wildcard_section).name = (yyvsp[-1].string);
2932 (yyval.wildcard_section).sort = SORT_WILDCARD_BY_NAME;
2933 }
2934 #line 2935 "yyscript.c"
2935 break;
2936
2937 case 109: /* wildcard_sections: wildcard_sections opt_comma wildcard_section */
2938 #line 616 "yyscript.y"
2939 {
2940 (yyval.wildcard_sections).sections = script_string_sort_list_add((yyvsp[-2].wildcard_sections).sections, &(yyvsp[0].wildcard_section));
2941 (yyval.wildcard_sections).exclude = (yyvsp[-2].wildcard_sections).exclude;
2942 }
2943 #line 2944 "yyscript.c"
2944 break;
2945
2946 case 110: /* wildcard_sections: wildcard_section */
2947 #line 621 "yyscript.y"
2948 {
2949 (yyval.wildcard_sections).sections = script_new_string_sort_list(&(yyvsp[0].wildcard_section));
2950 (yyval.wildcard_sections).exclude = NULL;
2951 }
2952 #line 2953 "yyscript.c"
2953 break;
2954
2955 case 111: /* wildcard_sections: wildcard_sections opt_comma EXCLUDE_FILE '(' exclude_names ')' */
2956 #line 626 "yyscript.y"
2957 {
2958 (yyval.wildcard_sections).sections = (yyvsp[-5].wildcard_sections).sections;
2959 (yyval.wildcard_sections).exclude = script_string_list_append((yyvsp[-5].wildcard_sections).exclude, (yyvsp[-1].string_list));
2960 }
2961 #line 2962 "yyscript.c"
2962 break;
2963
2964 case 112: /* wildcard_sections: EXCLUDE_FILE '(' exclude_names ')' */
2965 #line 631 "yyscript.y"
2966 {
2967 (yyval.wildcard_sections).sections = NULL;
2968 (yyval.wildcard_sections).exclude = (yyvsp[-1].string_list);
2969 }
2970 #line 2971 "yyscript.c"
2971 break;
2972
2973 case 113: /* wildcard_section: wildcard_name */
2974 #line 640 "yyscript.y"
2975 {
2976 (yyval.wildcard_section).name = (yyvsp[0].string);
2977 (yyval.wildcard_section).sort = SORT_WILDCARD_NONE;
2978 }
2979 #line 2980 "yyscript.c"
2980 break;
2981
2982 case 114: /* wildcard_section: SORT_BY_NAME '(' wildcard_section ')' */
2983 #line 645 "yyscript.y"
2984 {
2985 (yyval.wildcard_section).name = (yyvsp[-1].wildcard_section).name;
2986 switch ((yyvsp[-1].wildcard_section).sort)
2987 {
2988 case SORT_WILDCARD_NONE:
2989 (yyval.wildcard_section).sort = SORT_WILDCARD_BY_NAME;
2990 break;
2991 case SORT_WILDCARD_BY_NAME:
2992 case SORT_WILDCARD_BY_NAME_BY_ALIGNMENT:
2993 break;
2994 case SORT_WILDCARD_BY_ALIGNMENT:
2995 case SORT_WILDCARD_BY_ALIGNMENT_BY_NAME:
2996 (yyval.wildcard_section).sort = SORT_WILDCARD_BY_NAME_BY_ALIGNMENT;
2997 break;
2998 default:
2999 abort();
3000 }
3001 }
3002 #line 3003 "yyscript.c"
3003 break;
3004
3005 case 115: /* wildcard_section: SORT_BY_ALIGNMENT '(' wildcard_section ')' */
3006 #line 664 "yyscript.y"
3007 {
3008 (yyval.wildcard_section).name = (yyvsp[-1].wildcard_section).name;
3009 switch ((yyvsp[-1].wildcard_section).sort)
3010 {
3011 case SORT_WILDCARD_NONE:
3012 (yyval.wildcard_section).sort = SORT_WILDCARD_BY_ALIGNMENT;
3013 break;
3014 case SORT_WILDCARD_BY_ALIGNMENT:
3015 case SORT_WILDCARD_BY_ALIGNMENT_BY_NAME:
3016 break;
3017 case SORT_WILDCARD_BY_NAME:
3018 case SORT_WILDCARD_BY_NAME_BY_ALIGNMENT:
3019 (yyval.wildcard_section).sort = SORT_WILDCARD_BY_ALIGNMENT_BY_NAME;
3020 break;
3021 default:
3022 abort();
3023 }
3024 }
3025 #line 3026 "yyscript.c"
3026 break;
3027
3028 case 116: /* wildcard_section: SORT_BY_INIT_PRIORITY '(' wildcard_name ')' */
3029 #line 683 "yyscript.y"
3030 {
3031 (yyval.wildcard_section).name = (yyvsp[-1].string);
3032 (yyval.wildcard_section).sort = SORT_WILDCARD_BY_INIT_PRIORITY;
3033 }
3034 #line 3035 "yyscript.c"
3035 break;
3036
3037 case 117: /* exclude_names: exclude_names opt_comma wildcard_name */
3038 #line 692 "yyscript.y"
3039 { (yyval.string_list) = script_string_list_push_back((yyvsp[-2].string_list), (yyvsp[0].string).value, (yyvsp[0].string).length); }
3040 #line 3041 "yyscript.c"
3041 break;
3042
3043 case 118: /* exclude_names: wildcard_name */
3044 #line 694 "yyscript.y"
3045 { (yyval.string_list) = script_new_string_list((yyvsp[0].string).value, (yyvsp[0].string).length); }
3046 #line 3047 "yyscript.c"
3047 break;
3048
3049 case 119: /* wildcard_name: string */
3050 #line 701 "yyscript.y"
3051 { (yyval.string) = (yyvsp[0].string); }
3052 #line 3053 "yyscript.c"
3053 break;
3054
3055 case 120: /* wildcard_name: '*' */
3056 #line 703 "yyscript.y"
3057 {
3058 (yyval.string).value = "*";
3059 (yyval.string).length = 1;
3060 }
3061 #line 3062 "yyscript.c"
3062 break;
3063
3064 case 121: /* wildcard_name: '?' */
3065 #line 708 "yyscript.y"
3066 {
3067 (yyval.string).value = "?";
3068 (yyval.string).length = 1;
3069 }
3070 #line 3071 "yyscript.c"
3071 break;
3072
3073 case 124: /* memory_def: string memory_attr ':' memory_origin '=' parse_exp opt_comma memory_length '=' parse_exp */
3074 #line 723 "yyscript.y"
3075 { script_add_memory(closure, (yyvsp[-9].string).value, (yyvsp[-9].string).length, (yyvsp[-8].integer), (yyvsp[-4].expr), (yyvsp[0].expr)); }
3076 #line 3077 "yyscript.c"
3077 break;
3078
3079 case 125: /* memory_def: INCLUDE string */
3080 #line 726 "yyscript.y"
3081 { script_include_directive(PARSING_MEMORY_DEF, closure,
3082 (yyvsp[0].string).value, (yyvsp[0].string).length); }
3083 #line 3084 "yyscript.c"
3084 break;
3085
3086 case 127: /* memory_attr: '(' string ')' */
3087 #line 734 "yyscript.y"
3088 { (yyval.integer) = script_parse_memory_attr(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length, 0); }
3089 #line 3090 "yyscript.c"
3090 break;
3091
3092 case 128: /* memory_attr: '(' '!' string ')' */
3093 #line 737 "yyscript.y"
3094 { (yyval.integer) = script_parse_memory_attr(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length, 1); }
3095 #line 3096 "yyscript.c"
3096 break;
3097
3098 case 129: /* memory_attr: %empty */
3099 #line 739 "yyscript.y"
3100 { (yyval.integer) = 0; }
3101 #line 3102 "yyscript.c"
3102 break;
3103
3104 case 138: /* phdr_def: string phdr_type phdr_info ';' */
3105 #line 767 "yyscript.y"
3106 { script_add_phdr(closure, (yyvsp[-3].string).value, (yyvsp[-3].string).length, (yyvsp[-2].integer), &(yyvsp[-1].phdr_info)); }
3107 #line 3108 "yyscript.c"
3108 break;
3109
3110 case 139: /* phdr_type: string */
3111 #line 776 "yyscript.y"
3112 { (yyval.integer) = script_phdr_string_to_type(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
3113 #line 3114 "yyscript.c"
3114 break;
3115
3116 case 140: /* phdr_type: INTEGER */
3117 #line 778 "yyscript.y"
3118 { (yyval.integer) = (yyvsp[0].integer); }
3119 #line 3120 "yyscript.c"
3120 break;
3121
3122 case 141: /* phdr_info: %empty */
3123 #line 784 "yyscript.y"
3124 { memset(&(yyval.phdr_info), 0, sizeof(struct Phdr_info)); }
3125 #line 3126 "yyscript.c"
3126 break;
3127
3128 case 142: /* phdr_info: string phdr_info */
3129 #line 786 "yyscript.y"
3130 {
3131 (yyval.phdr_info) = (yyvsp[0].phdr_info);
3132 if ((yyvsp[-1].string).length == 7 && strncmp((yyvsp[-1].string).value, "FILEHDR", 7) == 0)
3133 (yyval.phdr_info).includes_filehdr = 1;
3134 else
3135 yyerror(closure, "PHDRS syntax error");
3136 }
3137 #line 3138 "yyscript.c"
3138 break;
3139
3140 case 143: /* phdr_info: PHDRS phdr_info */
3141 #line 794 "yyscript.y"
3142 {
3143 (yyval.phdr_info) = (yyvsp[0].phdr_info);
3144 (yyval.phdr_info).includes_phdrs = 1;
3145 }
3146 #line 3147 "yyscript.c"
3147 break;
3148
3149 case 144: /* phdr_info: string '(' INTEGER ')' phdr_info */
3150 #line 799 "yyscript.y"
3151 {
3152 (yyval.phdr_info) = (yyvsp[0].phdr_info);
3153 if ((yyvsp[-4].string).length == 5 && strncmp((yyvsp[-4].string).value, "FLAGS", 5) == 0)
3154 {
3155 (yyval.phdr_info).is_flags_valid = 1;
3156 (yyval.phdr_info).flags = (yyvsp[-2].integer);
3157 }
3158 else
3159 yyerror(closure, "PHDRS syntax error");
3160 }
3161 #line 3162 "yyscript.c"
3162 break;
3163
3164 case 145: /* phdr_info: AT '(' parse_exp ')' phdr_info */
3165 #line 810 "yyscript.y"
3166 {
3167 (yyval.phdr_info) = (yyvsp[0].phdr_info);
3168 (yyval.phdr_info).load_address = (yyvsp[-2].expr);
3169 }
3170 #line 3171 "yyscript.c"
3171 break;
3172
3173 case 146: /* assignment: string '=' parse_exp */
3174 #line 819 "yyscript.y"
3175 { script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, (yyvsp[0].expr), 0, 0); }
3176 #line 3177 "yyscript.c"
3177 break;
3178
3179 case 147: /* assignment: string PLUSEQ parse_exp */
3180 #line 821 "yyscript.y"
3181 {
3182 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3183 Expression_ptr e = script_exp_binary_add(s, (yyvsp[0].expr));
3184 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3185 }
3186 #line 3187 "yyscript.c"
3187 break;
3188
3189 case 148: /* assignment: string MINUSEQ parse_exp */
3190 #line 827 "yyscript.y"
3191 {
3192 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3193 Expression_ptr e = script_exp_binary_sub(s, (yyvsp[0].expr));
3194 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3195 }
3196 #line 3197 "yyscript.c"
3197 break;
3198
3199 case 149: /* assignment: string MULTEQ parse_exp */
3200 #line 833 "yyscript.y"
3201 {
3202 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3203 Expression_ptr e = script_exp_binary_mult(s, (yyvsp[0].expr));
3204 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3205 }
3206 #line 3207 "yyscript.c"
3207 break;
3208
3209 case 150: /* assignment: string DIVEQ parse_exp */
3210 #line 839 "yyscript.y"
3211 {
3212 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3213 Expression_ptr e = script_exp_binary_div(s, (yyvsp[0].expr));
3214 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3215 }
3216 #line 3217 "yyscript.c"
3217 break;
3218
3219 case 151: /* assignment: string LSHIFTEQ parse_exp */
3220 #line 845 "yyscript.y"
3221 {
3222 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3223 Expression_ptr e = script_exp_binary_lshift(s, (yyvsp[0].expr));
3224 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3225 }
3226 #line 3227 "yyscript.c"
3227 break;
3228
3229 case 152: /* assignment: string RSHIFTEQ parse_exp */
3230 #line 851 "yyscript.y"
3231 {
3232 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3233 Expression_ptr e = script_exp_binary_rshift(s, (yyvsp[0].expr));
3234 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3235 }
3236 #line 3237 "yyscript.c"
3237 break;
3238
3239 case 153: /* assignment: string ANDEQ parse_exp */
3240 #line 857 "yyscript.y"
3241 {
3242 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3243 Expression_ptr e = script_exp_binary_bitwise_and(s, (yyvsp[0].expr));
3244 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3245 }
3246 #line 3247 "yyscript.c"
3247 break;
3248
3249 case 154: /* assignment: string OREQ parse_exp */
3250 #line 863 "yyscript.y"
3251 {
3252 Expression_ptr s = script_exp_string((yyvsp[-2].string).value, (yyvsp[-2].string).length);
3253 Expression_ptr e = script_exp_binary_bitwise_or(s, (yyvsp[0].expr));
3254 script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, e, 0, 0);
3255 }
3256 #line 3257 "yyscript.c"
3257 break;
3258
3259 case 155: /* assignment: HIDDEN '(' string '=' parse_exp ')' */
3260 #line 869 "yyscript.y"
3261 { script_set_symbol(closure, (yyvsp[-3].string).value, (yyvsp[-3].string).length, (yyvsp[-1].expr), 0, 1); }
3262 #line 3263 "yyscript.c"
3263 break;
3264
3265 case 156: /* assignment: PROVIDE '(' string '=' parse_exp ')' */
3266 #line 871 "yyscript.y"
3267 { script_set_symbol(closure, (yyvsp[-3].string).value, (yyvsp[-3].string).length, (yyvsp[-1].expr), 1, 0); }
3268 #line 3269 "yyscript.c"
3269 break;
3270
3271 case 157: /* assignment: PROVIDE_HIDDEN '(' string '=' parse_exp ')' */
3272 #line 873 "yyscript.y"
3273 { script_set_symbol(closure, (yyvsp[-3].string).value, (yyvsp[-3].string).length, (yyvsp[-1].expr), 1, 1); }
3274 #line 3275 "yyscript.c"
3275 break;
3276
3277 case 158: /* $@9: %empty */
3278 #line 878 "yyscript.y"
3279 { script_push_lex_into_expression_mode(closure); }
3280 #line 3281 "yyscript.c"
3281 break;
3282
3283 case 159: /* parse_exp: $@9 exp */
3284 #line 880 "yyscript.y"
3285 {
3286 script_pop_lex_mode(closure);
3287 (yyval.expr) = (yyvsp[0].expr);
3288 }
3289 #line 3290 "yyscript.c"
3290 break;
3291
3292 case 160: /* exp: '(' exp ')' */
3293 #line 889 "yyscript.y"
3294 { (yyval.expr) = (yyvsp[-1].expr); }
3295 #line 3296 "yyscript.c"
3296 break;
3297
3298 case 161: /* exp: '-' exp */
3299 #line 891 "yyscript.y"
3300 { (yyval.expr) = script_exp_unary_minus((yyvsp[0].expr)); }
3301 #line 3302 "yyscript.c"
3302 break;
3303
3304 case 162: /* exp: '!' exp */
3305 #line 893 "yyscript.y"
3306 { (yyval.expr) = script_exp_unary_logical_not((yyvsp[0].expr)); }
3307 #line 3308 "yyscript.c"
3308 break;
3309
3310 case 163: /* exp: '~' exp */
3311 #line 895 "yyscript.y"
3312 { (yyval.expr) = script_exp_unary_bitwise_not((yyvsp[0].expr)); }
3313 #line 3314 "yyscript.c"
3314 break;
3315
3316 case 164: /* exp: '+' exp */
3317 #line 897 "yyscript.y"
3318 { (yyval.expr) = (yyvsp[0].expr); }
3319 #line 3320 "yyscript.c"
3320 break;
3321
3322 case 165: /* exp: exp '*' exp */
3323 #line 899 "yyscript.y"
3324 { (yyval.expr) = script_exp_binary_mult((yyvsp[-2].expr), (yyvsp[0].expr)); }
3325 #line 3326 "yyscript.c"
3326 break;
3327
3328 case 166: /* exp: exp '/' exp */
3329 #line 901 "yyscript.y"
3330 { (yyval.expr) = script_exp_binary_div((yyvsp[-2].expr), (yyvsp[0].expr)); }
3331 #line 3332 "yyscript.c"
3332 break;
3333
3334 case 167: /* exp: exp '%' exp */
3335 #line 903 "yyscript.y"
3336 { (yyval.expr) = script_exp_binary_mod((yyvsp[-2].expr), (yyvsp[0].expr)); }
3337 #line 3338 "yyscript.c"
3338 break;
3339
3340 case 168: /* exp: exp '+' exp */
3341 #line 905 "yyscript.y"
3342 { (yyval.expr) = script_exp_binary_add((yyvsp[-2].expr), (yyvsp[0].expr)); }
3343 #line 3344 "yyscript.c"
3344 break;
3345
3346 case 169: /* exp: exp '-' exp */
3347 #line 907 "yyscript.y"
3348 { (yyval.expr) = script_exp_binary_sub((yyvsp[-2].expr), (yyvsp[0].expr)); }
3349 #line 3350 "yyscript.c"
3350 break;
3351
3352 case 170: /* exp: exp LSHIFT exp */
3353 #line 909 "yyscript.y"
3354 { (yyval.expr) = script_exp_binary_lshift((yyvsp[-2].expr), (yyvsp[0].expr)); }
3355 #line 3356 "yyscript.c"
3356 break;
3357
3358 case 171: /* exp: exp RSHIFT exp */
3359 #line 911 "yyscript.y"
3360 { (yyval.expr) = script_exp_binary_rshift((yyvsp[-2].expr), (yyvsp[0].expr)); }
3361 #line 3362 "yyscript.c"
3362 break;
3363
3364 case 172: /* exp: exp EQ exp */
3365 #line 913 "yyscript.y"
3366 { (yyval.expr) = script_exp_binary_eq((yyvsp[-2].expr), (yyvsp[0].expr)); }
3367 #line 3368 "yyscript.c"
3368 break;
3369
3370 case 173: /* exp: exp NE exp */
3371 #line 915 "yyscript.y"
3372 { (yyval.expr) = script_exp_binary_ne((yyvsp[-2].expr), (yyvsp[0].expr)); }
3373 #line 3374 "yyscript.c"
3374 break;
3375
3376 case 174: /* exp: exp LE exp */
3377 #line 917 "yyscript.y"
3378 { (yyval.expr) = script_exp_binary_le((yyvsp[-2].expr), (yyvsp[0].expr)); }
3379 #line 3380 "yyscript.c"
3380 break;
3381
3382 case 175: /* exp: exp GE exp */
3383 #line 919 "yyscript.y"
3384 { (yyval.expr) = script_exp_binary_ge((yyvsp[-2].expr), (yyvsp[0].expr)); }
3385 #line 3386 "yyscript.c"
3386 break;
3387
3388 case 176: /* exp: exp '<' exp */
3389 #line 921 "yyscript.y"
3390 { (yyval.expr) = script_exp_binary_lt((yyvsp[-2].expr), (yyvsp[0].expr)); }
3391 #line 3392 "yyscript.c"
3392 break;
3393
3394 case 177: /* exp: exp '>' exp */
3395 #line 923 "yyscript.y"
3396 { (yyval.expr) = script_exp_binary_gt((yyvsp[-2].expr), (yyvsp[0].expr)); }
3397 #line 3398 "yyscript.c"
3398 break;
3399
3400 case 178: /* exp: exp '&' exp */
3401 #line 925 "yyscript.y"
3402 { (yyval.expr) = script_exp_binary_bitwise_and((yyvsp[-2].expr), (yyvsp[0].expr)); }
3403 #line 3404 "yyscript.c"
3404 break;
3405
3406 case 179: /* exp: exp '^' exp */
3407 #line 927 "yyscript.y"
3408 { (yyval.expr) = script_exp_binary_bitwise_xor((yyvsp[-2].expr), (yyvsp[0].expr)); }
3409 #line 3410 "yyscript.c"
3410 break;
3411
3412 case 180: /* exp: exp '|' exp */
3413 #line 929 "yyscript.y"
3414 { (yyval.expr) = script_exp_binary_bitwise_or((yyvsp[-2].expr), (yyvsp[0].expr)); }
3415 #line 3416 "yyscript.c"
3416 break;
3417
3418 case 181: /* exp: exp ANDAND exp */
3419 #line 931 "yyscript.y"
3420 { (yyval.expr) = script_exp_binary_logical_and((yyvsp[-2].expr), (yyvsp[0].expr)); }
3421 #line 3422 "yyscript.c"
3422 break;
3423
3424 case 182: /* exp: exp OROR exp */
3425 #line 933 "yyscript.y"
3426 { (yyval.expr) = script_exp_binary_logical_or((yyvsp[-2].expr), (yyvsp[0].expr)); }
3427 #line 3428 "yyscript.c"
3428 break;
3429
3430 case 183: /* exp: exp '?' exp ':' exp */
3431 #line 935 "yyscript.y"
3432 { (yyval.expr) = script_exp_trinary_cond((yyvsp[-4].expr), (yyvsp[-2].expr), (yyvsp[0].expr)); }
3433 #line 3434 "yyscript.c"
3434 break;
3435
3436 case 184: /* exp: INTEGER */
3437 #line 937 "yyscript.y"
3438 { (yyval.expr) = script_exp_integer((yyvsp[0].integer)); }
3439 #line 3440 "yyscript.c"
3440 break;
3441
3442 case 185: /* exp: string */
3443 #line 939 "yyscript.y"
3444 { (yyval.expr) = script_symbol(closure, (yyvsp[0].string).value, (yyvsp[0].string).length); }
3445 #line 3446 "yyscript.c"
3446 break;
3447
3448 case 186: /* exp: MAX_K '(' exp ',' exp ')' */
3449 #line 941 "yyscript.y"
3450 { (yyval.expr) = script_exp_function_max((yyvsp[-3].expr), (yyvsp[-1].expr)); }
3451 #line 3452 "yyscript.c"
3452 break;
3453
3454 case 187: /* exp: MIN_K '(' exp ',' exp ')' */
3455 #line 943 "yyscript.y"
3456 { (yyval.expr) = script_exp_function_min((yyvsp[-3].expr), (yyvsp[-1].expr)); }
3457 #line 3458 "yyscript.c"
3458 break;
3459
3460 case 188: /* exp: DEFINED '(' string ')' */
3461 #line 945 "yyscript.y"
3462 { (yyval.expr) = script_exp_function_defined((yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3463 #line 3464 "yyscript.c"
3464 break;
3465
3466 case 189: /* exp: SIZEOF_HEADERS */
3467 #line 947 "yyscript.y"
3468 { (yyval.expr) = script_exp_function_sizeof_headers(); }
3469 #line 3470 "yyscript.c"
3470 break;
3471
3472 case 190: /* exp: ALIGNOF '(' string ')' */
3473 #line 949 "yyscript.y"
3474 { (yyval.expr) = script_exp_function_alignof((yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3475 #line 3476 "yyscript.c"
3476 break;
3477
3478 case 191: /* exp: SIZEOF '(' string ')' */
3479 #line 951 "yyscript.y"
3480 { (yyval.expr) = script_exp_function_sizeof((yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3481 #line 3482 "yyscript.c"
3482 break;
3483
3484 case 192: /* exp: ADDR '(' string ')' */
3485 #line 953 "yyscript.y"
3486 { (yyval.expr) = script_exp_function_addr((yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3487 #line 3488 "yyscript.c"
3488 break;
3489
3490 case 193: /* exp: LOADADDR '(' string ')' */
3491 #line 955 "yyscript.y"
3492 { (yyval.expr) = script_exp_function_loadaddr((yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3493 #line 3494 "yyscript.c"
3494 break;
3495
3496 case 194: /* exp: ORIGIN '(' string ')' */
3497 #line 957 "yyscript.y"
3498 { (yyval.expr) = script_exp_function_origin(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3499 #line 3500 "yyscript.c"
3500 break;
3501
3502 case 195: /* exp: LENGTH '(' string ')' */
3503 #line 959 "yyscript.y"
3504 { (yyval.expr) = script_exp_function_length(closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3505 #line 3506 "yyscript.c"
3506 break;
3507
3508 case 196: /* exp: CONSTANT '(' string ')' */
3509 #line 961 "yyscript.y"
3510 { (yyval.expr) = script_exp_function_constant((yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3511 #line 3512 "yyscript.c"
3512 break;
3513
3514 case 197: /* exp: ABSOLUTE '(' exp ')' */
3515 #line 963 "yyscript.y"
3516 { (yyval.expr) = script_exp_function_absolute((yyvsp[-1].expr)); }
3517 #line 3518 "yyscript.c"
3518 break;
3519
3520 case 198: /* exp: ALIGN_K '(' exp ')' */
3521 #line 965 "yyscript.y"
3522 { (yyval.expr) = script_exp_function_align(script_exp_string(".", 1), (yyvsp[-1].expr)); }
3523 #line 3524 "yyscript.c"
3524 break;
3525
3526 case 199: /* exp: ALIGN_K '(' exp ',' exp ')' */
3527 #line 967 "yyscript.y"
3528 { (yyval.expr) = script_exp_function_align((yyvsp[-3].expr), (yyvsp[-1].expr)); }
3529 #line 3530 "yyscript.c"
3530 break;
3531
3532 case 200: /* exp: BLOCK '(' exp ')' */
3533 #line 969 "yyscript.y"
3534 { (yyval.expr) = script_exp_function_align(script_exp_string(".", 1), (yyvsp[-1].expr)); }
3535 #line 3536 "yyscript.c"
3536 break;
3537
3538 case 201: /* exp: DATA_SEGMENT_ALIGN '(' exp ',' exp ')' */
3539 #line 971 "yyscript.y"
3540 {
3541 script_data_segment_align(closure);
3542 (yyval.expr) = script_exp_function_data_segment_align((yyvsp[-3].expr), (yyvsp[-1].expr));
3543 }
3544 #line 3545 "yyscript.c"
3545 break;
3546
3547 case 202: /* exp: DATA_SEGMENT_RELRO_END '(' exp ',' exp ')' */
3548 #line 976 "yyscript.y"
3549 {
3550 script_data_segment_relro_end(closure);
3551 (yyval.expr) = script_exp_function_data_segment_relro_end((yyvsp[-3].expr), (yyvsp[-1].expr));
3552 }
3553 #line 3554 "yyscript.c"
3554 break;
3555
3556 case 203: /* exp: DATA_SEGMENT_END '(' exp ')' */
3557 #line 981 "yyscript.y"
3558 { (yyval.expr) = script_exp_function_data_segment_end((yyvsp[-1].expr)); }
3559 #line 3560 "yyscript.c"
3560 break;
3561
3562 case 204: /* exp: SEGMENT_START '(' string ',' exp ')' */
3563 #line 983 "yyscript.y"
3564 {
3565 (yyval.expr) = script_exp_function_segment_start((yyvsp[-3].string).value, (yyvsp[-3].string).length, (yyvsp[-1].expr));
3566 /* We need to take note of any SEGMENT_START expressions
3567 because they change the behaviour of -Ttext, -Tdata and
3568 -Tbss options. */
3569 script_saw_segment_start_expression(closure);
3570 }
3571 #line 3572 "yyscript.c"
3572 break;
3573
3574 case 205: /* exp: ASSERT_K '(' exp ',' string ')' */
3575 #line 991 "yyscript.y"
3576 { (yyval.expr) = script_exp_function_assert((yyvsp[-3].expr), (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3577 #line 3578 "yyscript.c"
3578 break;
3579
3580 case 206: /* defsym_expr: string '=' parse_exp */
3581 #line 997 "yyscript.y"
3582 { script_set_symbol(closure, (yyvsp[-2].string).value, (yyvsp[-2].string).length, (yyvsp[0].expr), 0, 0); }
3583 #line 3584 "yyscript.c"
3584 break;
3585
3586 case 210: /* dynamic_list_node: '{' vers_defns ';' '}' ';' */
3587 #line 1015 "yyscript.y"
3588 { script_new_vers_node (closure, NULL, (yyvsp[-3].versyms)); }
3589 #line 3590 "yyscript.c"
3590 break;
3591
3592 case 214: /* vers_node: '{' vers_tag '}' ';' */
3593 #line 1030 "yyscript.y"
3594 {
3595 script_register_vers_node (closure, NULL, 0, (yyvsp[-2].versnode), NULL);
3596 }
3597 #line 3598 "yyscript.c"
3598 break;
3599
3600 case 215: /* vers_node: string '{' vers_tag '}' ';' */
3601 #line 1034 "yyscript.y"
3602 {
3603 script_register_vers_node (closure, (yyvsp[-4].string).value, (yyvsp[-4].string).length, (yyvsp[-2].versnode),
3604 NULL);
3605 }
3606 #line 3607 "yyscript.c"
3607 break;
3608
3609 case 216: /* vers_node: string '{' vers_tag '}' verdep ';' */
3610 #line 1039 "yyscript.y"
3611 {
3612 script_register_vers_node (closure, (yyvsp[-5].string).value, (yyvsp[-5].string).length, (yyvsp[-3].versnode), (yyvsp[-1].deplist));
3613 }
3614 #line 3615 "yyscript.c"
3615 break;
3616
3617 case 217: /* verdep: string */
3618 #line 1046 "yyscript.y"
3619 {
3620 (yyval.deplist) = script_add_vers_depend (closure, NULL, (yyvsp[0].string).value, (yyvsp[0].string).length);
3621 }
3622 #line 3623 "yyscript.c"
3623 break;
3624
3625 case 218: /* verdep: verdep string */
3626 #line 1050 "yyscript.y"
3627 {
3628 (yyval.deplist) = script_add_vers_depend (closure, (yyvsp[-1].deplist), (yyvsp[0].string).value, (yyvsp[0].string).length);
3629 }
3630 #line 3631 "yyscript.c"
3631 break;
3632
3633 case 219: /* vers_tag: %empty */
3634 #line 1057 "yyscript.y"
3635 { (yyval.versnode) = script_new_vers_node (closure, NULL, NULL); }
3636 #line 3637 "yyscript.c"
3637 break;
3638
3639 case 220: /* vers_tag: vers_defns ';' */
3640 #line 1059 "yyscript.y"
3641 { (yyval.versnode) = script_new_vers_node (closure, (yyvsp[-1].versyms), NULL); }
3642 #line 3643 "yyscript.c"
3643 break;
3644
3645 case 221: /* vers_tag: GLOBAL ':' vers_defns ';' */
3646 #line 1061 "yyscript.y"
3647 { (yyval.versnode) = script_new_vers_node (closure, (yyvsp[-1].versyms), NULL); }
3648 #line 3649 "yyscript.c"
3649 break;
3650
3651 case 222: /* vers_tag: LOCAL ':' vers_defns ';' */
3652 #line 1063 "yyscript.y"
3653 { (yyval.versnode) = script_new_vers_node (closure, NULL, (yyvsp[-1].versyms)); }
3654 #line 3655 "yyscript.c"
3655 break;
3656
3657 case 223: /* vers_tag: GLOBAL ':' vers_defns ';' LOCAL ':' vers_defns ';' */
3658 #line 1065 "yyscript.y"
3659 { (yyval.versnode) = script_new_vers_node (closure, (yyvsp[-5].versyms), (yyvsp[-1].versyms)); }
3660 #line 3661 "yyscript.c"
3661 break;
3662
3663 case 224: /* vers_defns: STRING */
3664 #line 1074 "yyscript.y"
3665 {
3666 (yyval.versyms) = script_new_vers_pattern (closure, NULL, (yyvsp[0].string).value,
3667 (yyvsp[0].string).length, 0);
3668 }
3669 #line 3670 "yyscript.c"
3670 break;
3671
3672 case 225: /* vers_defns: QUOTED_STRING */
3673 #line 1079 "yyscript.y"
3674 {
3675 (yyval.versyms) = script_new_vers_pattern (closure, NULL, (yyvsp[0].string).value,
3676 (yyvsp[0].string).length, 1);
3677 }
3678 #line 3679 "yyscript.c"
3679 break;
3680
3681 case 226: /* vers_defns: vers_defns ';' STRING */
3682 #line 1084 "yyscript.y"
3683 {
3684 (yyval.versyms) = script_new_vers_pattern (closure, (yyvsp[-2].versyms), (yyvsp[0].string).value,
3685 (yyvsp[0].string).length, 0);
3686 }
3687 #line 3688 "yyscript.c"
3688 break;
3689
3690 case 227: /* vers_defns: vers_defns ';' QUOTED_STRING */
3691 #line 1089 "yyscript.y"
3692 {
3693 (yyval.versyms) = script_new_vers_pattern (closure, (yyvsp[-2].versyms), (yyvsp[0].string).value,
3694 (yyvsp[0].string).length, 1);
3695 }
3696 #line 3697 "yyscript.c"
3697 break;
3698
3699 case 228: /* $@10: %empty */
3700 #line 1095 "yyscript.y"
3701 { version_script_push_lang (closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3702 #line 3703 "yyscript.c"
3703 break;
3704
3705 case 229: /* vers_defns: EXTERN string '{' $@10 vers_defns opt_semicolon '}' */
3706 #line 1097 "yyscript.y"
3707 {
3708 (yyval.versyms) = (yyvsp[-2].versyms);
3709 version_script_pop_lang(closure);
3710 }
3711 #line 3712 "yyscript.c"
3712 break;
3713
3714 case 230: /* $@11: %empty */
3715 #line 1105 "yyscript.y"
3716 { version_script_push_lang (closure, (yyvsp[-1].string).value, (yyvsp[-1].string).length); }
3717 #line 3718 "yyscript.c"
3718 break;
3719
3720 case 231: /* vers_defns: vers_defns ';' EXTERN string '{' $@11 vers_defns opt_semicolon '}' */
3721 #line 1107 "yyscript.y"
3722 {
3723 (yyval.versyms) = script_merge_expressions ((yyvsp[-8].versyms), (yyvsp[-2].versyms));
3724 version_script_pop_lang(closure);
3725 }
3726 #line 3727 "yyscript.c"
3727 break;
3728
3729 case 232: /* vers_defns: EXTERN */
3730 #line 1112 "yyscript.y"
3731 {
3732 (yyval.versyms) = script_new_vers_pattern (closure, NULL, "extern",
3733 sizeof("extern") - 1, 1);
3734 }
3735 #line 3736 "yyscript.c"
3736 break;
3737
3738 case 233: /* vers_defns: vers_defns ';' EXTERN */
3739 #line 1117 "yyscript.y"
3740 {
3741 (yyval.versyms) = script_new_vers_pattern (closure, (yyvsp[-2].versyms), "extern",
3742 sizeof("extern") - 1, 1);
3743 }
3744 #line 3745 "yyscript.c"
3745 break;
3746
3747 case 234: /* string: STRING */
3748 #line 1127 "yyscript.y"
3749 { (yyval.string) = (yyvsp[0].string); }
3750 #line 3751 "yyscript.c"
3751 break;
3752
3753 case 235: /* string: QUOTED_STRING */
3754 #line 1129 "yyscript.y"
3755 { (yyval.string) = (yyvsp[0].string); }
3756 #line 3757 "yyscript.c"
3757 break;
3758
3759
3760 #line 3761 "yyscript.c"
3761
3762 default: break;
3763 }
3764 /* User semantic actions sometimes alter yychar, and that requires
3765 that yytoken be updated with the new translation. We take the
3766 approach of translating immediately before every use of yytoken.
3767 One alternative is translating here after every semantic action,
3768 but that translation would be missed if the semantic action invokes
3769 YYABORT, YYACCEPT, or YYERROR immediately after altering yychar or
3770 if it invokes YYBACKUP. In the case of YYABORT or YYACCEPT, an
3771 incorrect destructor might then be invoked immediately. In the
3772 case of YYERROR or YYBACKUP, subsequent parser actions might lead
3773 to an incorrect destructor call or verbose syntax error message
3774 before the lookahead is translated. */
3775 YY_SYMBOL_PRINT ("-> $$ =", YY_CAST (yysymbol_kind_t, yyr1[yyn]), &yyval, &yyloc);
3776
3777 YYPOPSTACK (yylen);
3778 yylen = 0;
3779
3780 *++yyvsp = yyval;
3781
3782 /* Now 'shift' the result of the reduction. Determine what state
3783 that goes to, based on the state we popped back to and the rule
3784 number reduced by. */
3785 {
3786 const int yylhs = yyr1[yyn] - YYNTOKENS;
3787 const int yyi = yypgoto[yylhs] + *yyssp;
3788 yystate = (0 <= yyi && yyi <= YYLAST && yycheck[yyi] == *yyssp
3789 ? yytable[yyi]
3790 : yydefgoto[yylhs]);
3791 }
3792
3793 goto yynewstate;
3794
3795
3796 /*--------------------------------------.
3797 | yyerrlab -- here on detecting error. |
3798 `--------------------------------------*/
3799 yyerrlab:
3800 /* Make sure we have latest lookahead translation. See comments at
3801 user semantic actions for why this is necessary. */
3802 yytoken = yychar == YYEMPTY ? YYSYMBOL_YYEMPTY : YYTRANSLATE (yychar);
3803 /* If not already recovering from an error, report this error. */
3804 if (!yyerrstatus)
3805 {
3806 ++yynerrs;
3807 {
3808 yypcontext_t yyctx
3809 = {yyssp, yytoken};
3810 char const *yymsgp = YY_("syntax error");
3811 int yysyntax_error_status;
3812 yysyntax_error_status = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3813 if (yysyntax_error_status == 0)
3814 yymsgp = yymsg;
3815 else if (yysyntax_error_status == -1)
3816 {
3817 if (yymsg != yymsgbuf)
3818 YYSTACK_FREE (yymsg);
3819 yymsg = YY_CAST (char *,
3820 YYSTACK_ALLOC (YY_CAST (YYSIZE_T, yymsg_alloc)));
3821 if (yymsg)
3822 {
3823 yysyntax_error_status
3824 = yysyntax_error (&yymsg_alloc, &yymsg, &yyctx);
3825 yymsgp = yymsg;
3826 }
3827 else
3828 {
3829 yymsg = yymsgbuf;
3830 yymsg_alloc = sizeof yymsgbuf;
3831 yysyntax_error_status = YYENOMEM;
3832 }
3833 }
3834 yyerror (closure, yymsgp);
3835 if (yysyntax_error_status == YYENOMEM)
3836 YYNOMEM;
3837 }
3838 }
3839
3840 if (yyerrstatus == 3)
3841 {
3842 /* If just tried and failed to reuse lookahead token after an
3843 error, discard it. */
3844
3845 if (yychar <= YYEOF)
3846 {
3847 /* Return failure if at end of input. */
3848 if (yychar == YYEOF)
3849 YYABORT;
3850 }
3851 else
3852 {
3853 yydestruct ("Error: discarding",
3854 yytoken, &yylval, closure);
3855 yychar = YYEMPTY;
3856 }
3857 }
3858
3859 /* Else will try to reuse lookahead token after shifting the error
3860 token. */
3861 goto yyerrlab1;
3862
3863
3864 /*---------------------------------------------------.
3865 | yyerrorlab -- error raised explicitly by YYERROR. |
3866 `---------------------------------------------------*/
3867 yyerrorlab:
3868 /* Pacify compilers when the user code never invokes YYERROR and the
3869 label yyerrorlab therefore never appears in user code. */
3870 if (0)
3871 YYERROR;
3872 ++yynerrs;
3873
3874 /* Do not reclaim the symbols of the rule whose action triggered
3875 this YYERROR. */
3876 YYPOPSTACK (yylen);
3877 yylen = 0;
3878 YY_STACK_PRINT (yyss, yyssp);
3879 yystate = *yyssp;
3880 goto yyerrlab1;
3881
3882
3883 /*-------------------------------------------------------------.
3884 | yyerrlab1 -- common code for both syntax error and YYERROR. |
3885 `-------------------------------------------------------------*/
3886 yyerrlab1:
3887 yyerrstatus = 3; /* Each real token shifted decrements this. */
3888
3889 /* Pop stack until we find a state that shifts the error token. */
3890 for (;;)
3891 {
3892 yyn = yypact[yystate];
3893 if (!yypact_value_is_default (yyn))
3894 {
3895 yyn += YYSYMBOL_YYerror;
3896 if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYSYMBOL_YYerror)
3897 {
3898 yyn = yytable[yyn];
3899 if (0 < yyn)
3900 break;
3901 }
3902 }
3903
3904 /* Pop the current state because it cannot handle the error token. */
3905 if (yyssp == yyss)
3906 YYABORT;
3907
3908
3909 yydestruct ("Error: popping",
3910 YY_ACCESSING_SYMBOL (yystate), yyvsp, closure);
3911 YYPOPSTACK (1);
3912 yystate = *yyssp;
3913 YY_STACK_PRINT (yyss, yyssp);
3914 }
3915
3916 YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
3917 *++yyvsp = yylval;
3918 YY_IGNORE_MAYBE_UNINITIALIZED_END
3919
3920
3921 /* Shift the error token. */
3922 YY_SYMBOL_PRINT ("Shifting", YY_ACCESSING_SYMBOL (yyn), yyvsp, yylsp);
3923
3924 yystate = yyn;
3925 goto yynewstate;
3926
3927
3928 /*-------------------------------------.
3929 | yyacceptlab -- YYACCEPT comes here. |
3930 `-------------------------------------*/
3931 yyacceptlab:
3932 yyresult = 0;
3933 goto yyreturnlab;
3934
3935
3936 /*-----------------------------------.
3937 | yyabortlab -- YYABORT comes here. |
3938 `-----------------------------------*/
3939 yyabortlab:
3940 yyresult = 1;
3941 goto yyreturnlab;
3942
3943
3944 /*-----------------------------------------------------------.
3945 | yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. |
3946 `-----------------------------------------------------------*/
3947 yyexhaustedlab:
3948 yyerror (closure, YY_("memory exhausted"));
3949 yyresult = 2;
3950 goto yyreturnlab;
3951
3952
3953 /*----------------------------------------------------------.
3954 | yyreturnlab -- parsing is finished, clean up and return. |
3955 `----------------------------------------------------------*/
3956 yyreturnlab:
3957 if (yychar != YYEMPTY)
3958 {
3959 /* Make sure we have latest lookahead translation. See comments at
3960 user semantic actions for why this is necessary. */
3961 yytoken = YYTRANSLATE (yychar);
3962 yydestruct ("Cleanup: discarding lookahead",
3963 yytoken, &yylval, closure);
3964 }
3965 /* Do not reclaim the symbols of the rule whose action triggered
3966 this YYABORT or YYACCEPT. */
3967 YYPOPSTACK (yylen);
3968 YY_STACK_PRINT (yyss, yyssp);
3969 while (yyssp != yyss)
3970 {
3971 yydestruct ("Cleanup: popping",
3972 YY_ACCESSING_SYMBOL (+*yyssp), yyvsp, closure);
3973 YYPOPSTACK (1);
3974 }
3975 #ifndef yyoverflow
3976 if (yyss != yyssa)
3977 YYSTACK_FREE (yyss);
3978 #endif
3979 if (yymsg != yymsgbuf)
3980 YYSTACK_FREE (yymsg);
3981 return yyresult;
3982 }
3983
3984 #line 1151 "yyscript.y"
3985
3986