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 * 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 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 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 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 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 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 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 * 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 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 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 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 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 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