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