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