diff options
Diffstat (limited to 'binutils-2.22/ld/deffilep.c')
-rw-r--r-- | binutils-2.22/ld/deffilep.c | 597 |
1 files changed, 375 insertions, 222 deletions
diff --git a/binutils-2.22/ld/deffilep.c b/binutils-2.22/ld/deffilep.c index 97d8265..3ab30eb 100644 --- a/binutils-2.22/ld/deffilep.c +++ b/binutils-2.22/ld/deffilep.c @@ -267,11 +267,12 @@ typedef union YYSTYPE #line 114 "deffilep.y" { char *id; + const char *id_const; int number; char *digits; } /* Line 193 of yacc.c. */ -#line 275 "deffilep.c" +#line 276 "deffilep.c" YYSTYPE; # define yystype YYSTYPE /* obsolescent; will be withdrawn */ # define YYSTYPE_IS_DECLARED 1 @@ -284,7 +285,7 @@ typedef union YYSTYPE /* Line 216 of yacc.c. */ -#line 288 "deffilep.c" +#line 289 "deffilep.c" #ifdef short # undef short @@ -497,18 +498,18 @@ union yyalloc #endif /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 47 +#define YYFINAL 69 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 126 +#define YYLAST 148 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 35 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 25 +#define YYNNTS 26 /* YYNRULES -- Number of rules. */ -#define YYNRULES 76 +#define YYNRULES 98 /* YYNRULES -- Number of states. */ -#define YYNSTATES 123 +#define YYNSTATES 145 /* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX. */ #define YYUNDEFTOK 2 @@ -554,57 +555,66 @@ static const yytype_uint8 yytranslate[] = #if YYDEBUG /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in YYRHS. */ -static const yytype_uint8 yyprhs[] = +static const yytype_uint16 yyprhs[] = { 0, 0, 3, 6, 8, 12, 16, 19, 23, 27, 30, 33, 36, 39, 42, 45, 50, 53, 58, 59, 61, 64, 72, 76, 77, 79, 81, 83, 85, 87, 89, 91, 93, 96, 98, 107, 116, 123, 130, 137, 142, 145, 147, 150, 153, 157, 159, 161, 162, 165, - 166, 168, 170, 172, 174, 176, 179, 183, 184, 187, - 188, 191, 192, 195, 196, 200, 201, 203, 206, 210, - 212, 215, 220, 222, 223, 225, 226 + 166, 168, 170, 172, 174, 176, 178, 180, 182, 184, + 186, 188, 190, 192, 194, 196, 198, 200, 202, 204, + 206, 208, 210, 212, 214, 216, 218, 220, 223, 226, + 230, 234, 236, 237, 240, 241, 244, 245, 248, 249, + 253, 254, 256, 259, 264, 266, 267, 269, 270 }; /* YYRHS -- A `-1'-separated list of the rules' RHS. */ static const yytype_int8 yyrhs[] = { - 36, 0, -1, 36, 37, -1, 37, -1, 3, 50, - 54, -1, 4, 50, 54, -1, 5, 29, -1, 6, - 59, 48, -1, 7, 59, 48, -1, 8, 46, -1, + 36, 0, -1, 36, 37, -1, 37, -1, 3, 52, + 56, -1, 4, 52, 56, -1, 5, 29, -1, 6, + 60, 48, -1, 7, 60, 48, -1, 8, 46, -1, 9, 46, -1, 11, 44, -1, 12, 38, -1, 13, - 42, -1, 14, 59, -1, 14, 59, 31, 59, -1, - 27, 29, -1, 20, 56, 32, 59, -1, -1, 39, - -1, 38, 39, -1, 55, 53, 52, 47, 40, 47, - 51, -1, 41, 47, 40, -1, -1, 25, -1, 26, + 42, -1, 14, 60, -1, 14, 60, 31, 60, -1, + 27, 29, -1, 20, 57, 32, 60, -1, -1, 39, + -1, 38, 39, -1, 51, 55, 54, 47, 40, 47, + 53, -1, 41, 47, 40, -1, -1, 25, -1, 26, -1, 16, -1, 17, -1, 9, -1, 10, -1, 18, -1, 19, -1, 42, 43, -1, 43, -1, 29, 33, - 29, 31, 29, 31, 29, 51, -1, 29, 33, 29, - 31, 29, 31, 59, 51, -1, 29, 33, 29, 31, - 29, 51, -1, 29, 33, 29, 31, 59, 51, -1, - 29, 31, 29, 31, 29, 51, -1, 29, 31, 29, - 51, -1, 44, 45, -1, 45, -1, 29, 46, -1, + 29, 31, 29, 31, 29, 53, -1, 29, 33, 29, + 31, 29, 31, 60, 53, -1, 29, 33, 29, 31, + 29, 53, -1, 29, 33, 29, 31, 60, 53, -1, + 29, 31, 29, 31, 29, 53, -1, 29, 31, 29, + 53, -1, 44, 45, -1, 45, -1, 29, 46, -1, 29, 29, -1, 46, 47, 49, -1, 49, -1, 32, - -1, -1, 32, 59, -1, -1, 21, -1, 22, -1, - 23, -1, 24, -1, 29, -1, 31, 29, -1, 29, - 31, 29, -1, -1, 28, 29, -1, -1, 34, 59, - -1, -1, 33, 55, -1, -1, 15, 33, 59, -1, - -1, 29, -1, 31, 29, -1, 55, 31, 29, -1, - 29, -1, 31, 29, -1, 56, 31, 57, 58, -1, - 30, -1, -1, 29, -1, -1, 30, -1 + -1, -1, 32, 60, -1, -1, 21, -1, 22, -1, + 23, -1, 24, -1, 15, -1, 8, -1, 16, -1, + 17, -1, 9, -1, 10, -1, 5, -1, 27, -1, + 23, -1, 12, -1, 7, -1, 13, -1, 3, -1, + 25, -1, 26, -1, 18, -1, 19, -1, 21, -1, + 24, -1, 6, -1, 14, -1, 22, -1, 29, -1, + 31, 50, -1, 31, 51, -1, 50, 31, 51, -1, + 29, 31, 51, -1, 51, -1, -1, 28, 29, -1, + -1, 34, 60, -1, -1, 33, 51, -1, -1, 15, + 33, 60, -1, -1, 29, -1, 31, 29, -1, 57, + 31, 58, 59, -1, 30, -1, -1, 29, -1, -1, + 30, -1 }; /* YYRLINE[YYN] -- source line where rule number YYN was defined. */ static const yytype_uint16 yyrline[] = { - 0, 135, 135, 136, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 157, 159, - 160, 167, 174, 175, 178, 179, 180, 181, 182, 183, - 184, 185, 188, 189, 193, 195, 197, 199, 201, 203, - 208, 209, 213, 214, 218, 219, 223, 224, 226, 227, - 231, 232, 233, 234, 237, 238, 244, 250, 253, 254, - 258, 259, 263, 264, 267, 268, 271, 272, 278, 286, - 287, 293, 301, 302, 305, 306, 309 + 0, 137, 137, 138, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 159, 161, + 162, 169, 176, 177, 180, 181, 182, 183, 184, 185, + 186, 187, 190, 191, 195, 197, 199, 201, 203, 205, + 210, 211, 215, 216, 220, 221, 225, 226, 228, 229, + 233, 234, 235, 236, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 270, 271, 277, 283, + 289, 297, 298, 301, 302, 306, 307, 311, 312, 315, + 316, 319, 320, 326, 334, 335, 338, 339, 342 }; #endif @@ -620,9 +630,10 @@ static const char *const yytname[] = "SHARED", "NONAMEU", "NONAMEL", "DIRECTIVE", "EQUAL", "ID", "DIGITS", "'.'", "','", "'='", "'@'", "$accept", "start", "command", "explist", "expline", "exp_opt_list", "exp_opt", "implist", "impline", "seclist", - "secline", "attr_list", "opt_comma", "opt_number", "attr", "opt_name", - "opt_equalequal_name", "opt_ordinal", "opt_equal_name", "opt_base", - "dot_name", "anylang_id", "opt_digits", "opt_id", "NUMBER", 0 + "secline", "attr_list", "opt_comma", "opt_number", "attr", + "keyword_as_name", "opt_name2", "opt_name", "opt_equalequal_name", + "opt_ordinal", "opt_equal_name", "opt_base", "anylang_id", "opt_digits", + "opt_id", "NUMBER", 0 }; #endif @@ -646,9 +657,11 @@ static const yytype_uint8 yyr1[] = 38, 39, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 42, 42, 43, 43, 43, 43, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, - 49, 49, 49, 49, 50, 50, 50, 50, 51, 51, - 52, 52, 53, 53, 54, 54, 55, 55, 55, 56, - 56, 56, 57, 57, 58, 58, 59 + 49, 49, 49, 49, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, + 51, 52, 52, 53, 53, 54, 54, 55, 55, 56, + 56, 57, 57, 57, 58, 58, 59, 59, 60 }; /* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ @@ -659,9 +672,11 @@ static const yytype_uint8 yyr2[] = 2, 7, 3, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 8, 8, 6, 6, 6, 4, 2, 1, 2, 2, 3, 1, 1, 0, 2, 0, - 1, 1, 1, 1, 1, 2, 3, 0, 2, 0, - 2, 0, 2, 0, 3, 0, 1, 2, 3, 1, - 2, 4, 1, 0, 1, 0, 1 + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, + 3, 1, 0, 2, 0, 2, 0, 2, 0, 3, + 0, 1, 2, 4, 1, 0, 1, 0, 1 }; /* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state @@ -669,55 +684,59 @@ static const yytype_uint8 yyr2[] = means the default is an error. */ static const yytype_uint8 yydefact[] = { - 0, 57, 57, 0, 0, 0, 0, 0, 0, 18, - 0, 0, 0, 0, 0, 3, 54, 0, 65, 65, - 6, 76, 49, 49, 50, 51, 52, 53, 9, 45, - 10, 0, 11, 41, 66, 0, 12, 19, 63, 0, - 13, 33, 14, 69, 0, 0, 16, 1, 2, 0, - 55, 0, 4, 5, 0, 7, 8, 46, 0, 43, - 42, 40, 67, 20, 0, 0, 61, 0, 0, 32, - 0, 70, 73, 0, 56, 0, 48, 44, 68, 62, - 0, 47, 59, 0, 15, 72, 75, 17, 64, 60, - 23, 0, 0, 39, 0, 74, 71, 28, 29, 26, - 27, 30, 31, 24, 25, 47, 47, 58, 59, 59, - 59, 59, 23, 38, 0, 36, 37, 21, 22, 59, - 59, 34, 35 + 0, 82, 82, 0, 0, 0, 0, 0, 0, 18, + 0, 0, 0, 0, 0, 3, 66, 60, 73, 64, + 55, 58, 59, 63, 65, 74, 54, 56, 57, 69, + 70, 71, 75, 62, 72, 67, 68, 61, 76, 0, + 0, 81, 90, 90, 6, 98, 49, 49, 50, 51, + 52, 53, 9, 45, 10, 0, 11, 41, 12, 19, + 88, 0, 13, 33, 14, 91, 0, 0, 16, 1, + 2, 0, 77, 78, 0, 0, 4, 5, 0, 7, + 8, 46, 0, 43, 42, 40, 20, 0, 86, 0, + 0, 32, 0, 92, 95, 0, 80, 79, 0, 48, + 44, 87, 0, 47, 84, 0, 15, 94, 97, 17, + 89, 85, 23, 0, 0, 39, 0, 96, 93, 28, + 29, 26, 27, 30, 31, 24, 25, 47, 47, 83, + 84, 84, 84, 84, 23, 38, 0, 36, 37, 21, + 22, 84, 84, 34, 35 }; /* YYDEFGOTO[NTERM-NUM]. */ -static const yytype_int8 yydefgoto[] = +static const yytype_int16 yydefgoto[] = { - -1, 14, 15, 36, 37, 105, 106, 40, 41, 32, - 33, 28, 58, 55, 29, 18, 93, 81, 66, 52, - 38, 45, 86, 96, 22 + -1, 14, 15, 58, 59, 127, 128, 62, 63, 56, + 57, 52, 82, 79, 53, 40, 41, 42, 115, 103, + 88, 76, 67, 108, 118, 46 }; /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing STATE-NUM. */ -#define YYPACT_NINF -81 +#define YYPACT_NINF -82 static const yytype_int8 yypact[] = { - 30, 27, 27, -15, -7, -7, 64, 64, -1, 35, - 11, -7, 38, 22, 4, -81, 28, 31, 48, 48, - -81, -81, 66, 66, -81, -81, -81, -81, -2, -81, - -2, 55, -1, -81, -81, 67, 35, -81, 59, 60, - 11, -81, 68, -81, 71, 16, -81, -81, -81, 72, - -81, 69, -81, -81, -7, -81, -81, -81, 64, -81, - -2, -81, -81, -81, 74, 35, 63, 75, 76, -81, - -7, -81, 77, -7, -81, -7, -81, -81, -81, 79, - -7, 80, -26, 82, -81, -81, 85, -81, -81, -81, - 36, 86, 87, -81, 51, -81, -81, -81, -81, -81, - -81, -81, -81, -81, -81, 80, 80, -81, 78, 1, - 78, 78, 36, -81, 65, -81, -81, -81, -81, 78, - 78, -81, -81 + 121, 11, 11, -25, 9, 9, 59, 59, -17, 11, + 25, 9, -18, 40, 95, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, -82, 41, 11, + 47, -82, 69, 69, -82, -82, 54, 54, -82, -82, + -82, -82, 53, -82, 53, -14, -17, -82, 11, -82, + 55, 12, 25, -82, 58, -82, 65, 21, -82, -82, + -82, 11, 47, -82, 11, 63, -82, -82, 9, -82, + -82, -82, 59, -82, 53, -82, -82, 11, 71, 81, + 83, -82, 9, -82, 84, 9, -82, -82, 9, -82, + -82, -82, 9, 85, -26, 82, -82, -82, 87, -82, + -82, -82, 39, 89, 90, -82, 38, -82, -82, -82, + -82, -82, -82, -82, -82, -82, -82, 85, 85, -82, + 92, 13, 92, 92, 39, -82, 62, -82, -82, -82, + -82, 92, 92, -82, -82 }; /* YYPGOTO[NTERM-NUM]. */ -static const yytype_int8 yypgoto[] = +static const yytype_int16 yypgoto[] = { - -81, -81, 94, -81, 81, 6, -81, -81, 83, -81, - 88, -4, -80, 96, 53, 119, -37, -81, -81, 103, - 61, -81, -81, -81, -5 + -82, -82, 107, -82, 78, -11, -82, -82, 75, -82, + 86, -4, -81, 91, 57, 101, -8, 141, -71, -82, + -82, 102, -82, -82, -82, -5 }; /* YYTABLE[YYPACT[STATE-NUM]]. What to do in state STATE-NUM. If @@ -725,38 +744,42 @@ static const yytype_int8 yypgoto[] = number is the opposite. If zero, do what YYDEFACT says. If YYTABLE_NINF, syntax error. */ #define YYTABLE_NINF -48 -static const yytype_int8 yytable[] = -{ - 23, 90, 91, 30, 47, 92, 42, 1, 2, 3, - 4, 5, 6, 7, 20, 8, 9, 10, 11, -47, - -47, -47, -47, 21, 12, 111, 112, 60, 31, 91, - 57, 13, 114, 1, 2, 3, 4, 5, 6, 7, - 39, 8, 9, 10, 11, 97, 98, 72, 73, 76, - 12, 46, 99, 100, 101, 102, 16, 13, 17, 49, - 50, 103, 104, 51, 34, 84, 35, 43, 87, 44, - 88, 113, 115, 116, 117, 89, 24, 25, 26, 27, - 109, 21, 121, 122, 59, 24, 25, 26, 27, 110, - 64, 67, 65, 68, 119, 21, 62, 80, 54, 70, - 71, 74, 75, 78, 82, 83, 91, 85, 48, 120, - 64, 77, 57, 94, 95, 107, 108, 63, 118, 56, - 61, 19, 53, 69, 0, 0, 79 +static const yytype_int16 yytable[] = +{ + 47, 60, 113, 54, 44, 114, 64, 48, 49, 50, + 51, 65, 55, 66, 16, 83, 17, 18, 19, 20, + 21, 22, 112, 23, 24, 25, 26, 27, 28, 29, + 30, 73, 31, 32, 33, 34, 35, 36, 37, 45, + 38, 113, 39, 89, 136, 90, 133, 134, 119, 120, + 60, 84, 94, 95, 61, 121, 122, 123, 124, 135, + 137, 138, 139, 96, 125, 126, 97, 131, 45, 68, + 143, 144, 71, 99, -47, -47, -47, -47, 74, 101, + 48, 49, 50, 51, 75, 81, 78, 106, 87, 92, + 109, 141, 45, 110, 93, 69, 98, 111, 1, 2, + 3, 4, 5, 6, 7, 102, 8, 9, 10, 11, + 104, 132, 105, 116, 107, 12, 117, 81, 129, 130, + 113, 70, 13, 140, 1, 2, 3, 4, 5, 6, + 7, 142, 8, 9, 10, 11, 86, 91, 80, 100, + 72, 12, 85, 43, 0, 77, 0, 0, 13 }; -static const yytype_int8 yycheck[] = -{ - 5, 81, 28, 7, 0, 31, 11, 3, 4, 5, - 6, 7, 8, 9, 29, 11, 12, 13, 14, 21, - 22, 23, 24, 30, 20, 105, 106, 31, 29, 28, - 32, 27, 31, 3, 4, 5, 6, 7, 8, 9, - 29, 11, 12, 13, 14, 9, 10, 31, 32, 54, - 20, 29, 16, 17, 18, 19, 29, 27, 31, 31, - 29, 25, 26, 15, 29, 70, 31, 29, 73, 31, - 75, 108, 109, 110, 111, 80, 21, 22, 23, 24, - 29, 30, 119, 120, 29, 21, 22, 23, 24, 94, - 31, 31, 33, 33, 29, 30, 29, 34, 32, 31, - 29, 29, 33, 29, 29, 29, 28, 30, 14, 114, - 31, 58, 32, 31, 29, 29, 29, 36, 112, 23, - 32, 2, 19, 40, -1, -1, 65 +static const yytype_int16 yycheck[] = +{ + 5, 9, 28, 7, 29, 31, 11, 21, 22, 23, + 24, 29, 29, 31, 3, 29, 5, 6, 7, 8, + 9, 10, 103, 12, 13, 14, 15, 16, 17, 18, + 19, 39, 21, 22, 23, 24, 25, 26, 27, 30, + 29, 28, 31, 31, 31, 33, 127, 128, 9, 10, + 58, 55, 31, 32, 29, 16, 17, 18, 19, 130, + 131, 132, 133, 71, 25, 26, 74, 29, 30, 29, + 141, 142, 31, 78, 21, 22, 23, 24, 31, 87, + 21, 22, 23, 24, 15, 32, 32, 92, 33, 31, + 95, 29, 30, 98, 29, 0, 33, 102, 3, 4, + 5, 6, 7, 8, 9, 34, 11, 12, 13, 14, + 29, 116, 29, 31, 30, 20, 29, 32, 29, 29, + 28, 14, 27, 134, 3, 4, 5, 6, 7, 8, + 9, 136, 11, 12, 13, 14, 58, 62, 47, 82, + 39, 20, 56, 2, -1, 43, -1, -1, 27 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -764,18 +787,20 @@ static const yytype_int8 yycheck[] = static const yytype_uint8 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 11, 12, - 13, 14, 20, 27, 36, 37, 29, 31, 50, 50, - 29, 30, 59, 59, 21, 22, 23, 24, 46, 49, - 46, 29, 44, 45, 29, 31, 38, 39, 55, 29, - 42, 43, 59, 29, 31, 56, 29, 0, 37, 31, - 29, 15, 54, 54, 32, 48, 48, 32, 47, 29, - 46, 45, 29, 39, 31, 33, 53, 31, 33, 43, - 31, 29, 31, 32, 29, 33, 59, 49, 29, 55, - 34, 52, 29, 29, 59, 30, 57, 59, 59, 59, - 47, 28, 31, 51, 31, 29, 58, 9, 10, 16, - 17, 18, 19, 25, 26, 40, 41, 29, 29, 29, - 59, 47, 47, 51, 31, 51, 51, 51, 40, 29, - 59, 51, 51 + 13, 14, 20, 27, 36, 37, 3, 5, 6, 7, + 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, + 19, 21, 22, 23, 24, 25, 26, 27, 29, 31, + 50, 51, 52, 52, 29, 30, 60, 60, 21, 22, + 23, 24, 46, 49, 46, 29, 44, 45, 38, 39, + 51, 29, 42, 43, 60, 29, 31, 57, 29, 0, + 37, 31, 50, 51, 31, 15, 56, 56, 32, 48, + 48, 32, 47, 29, 46, 45, 39, 33, 55, 31, + 33, 43, 31, 29, 31, 32, 51, 51, 33, 60, + 49, 51, 34, 54, 29, 29, 60, 30, 58, 60, + 60, 60, 47, 28, 31, 53, 31, 29, 59, 9, + 10, 16, 17, 18, 19, 25, 26, 40, 41, 29, + 29, 29, 60, 47, 47, 53, 31, 53, 53, 53, + 40, 29, 60, 53, 53 }; #define yyerrok (yyerrstatus = 0) @@ -1590,279 +1615,339 @@ yyreduce: switch (yyn) { case 4: -#line 140 "deffilep.y" +#line 142 "deffilep.y" { def_image_name ((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].number), 0); } break; case 5: -#line 141 "deffilep.y" +#line 143 "deffilep.y" { def_image_name ((yyvsp[(2) - (3)].id), (yyvsp[(3) - (3)].number), 1); } break; case 6: -#line 142 "deffilep.y" +#line 144 "deffilep.y" { def_description ((yyvsp[(2) - (2)].id));} break; case 7: -#line 143 "deffilep.y" +#line 145 "deffilep.y" { def_stacksize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));} break; case 8: -#line 144 "deffilep.y" +#line 146 "deffilep.y" { def_heapsize ((yyvsp[(2) - (3)].number), (yyvsp[(3) - (3)].number));} break; case 9: -#line 145 "deffilep.y" +#line 147 "deffilep.y" { def_section ("CODE", (yyvsp[(2) - (2)].number));} break; case 10: -#line 146 "deffilep.y" +#line 148 "deffilep.y" { def_section ("DATA", (yyvsp[(2) - (2)].number));} break; case 14: -#line 150 "deffilep.y" +#line 152 "deffilep.y" { def_version ((yyvsp[(2) - (2)].number), 0);} break; case 15: -#line 151 "deffilep.y" +#line 153 "deffilep.y" { def_version ((yyvsp[(2) - (4)].number), (yyvsp[(4) - (4)].number));} break; case 16: -#line 152 "deffilep.y" +#line 154 "deffilep.y" { def_directive ((yyvsp[(2) - (2)].id));} break; case 17: -#line 153 "deffilep.y" +#line 155 "deffilep.y" { def_aligncomm ((yyvsp[(2) - (4)].id), (yyvsp[(4) - (4)].number));} break; case 21: -#line 168 "deffilep.y" +#line 170 "deffilep.y" { def_exports ((yyvsp[(1) - (7)].id), (yyvsp[(2) - (7)].id), (yyvsp[(3) - (7)].number), (yyvsp[(5) - (7)].number), (yyvsp[(7) - (7)].id)); } break; case 22: -#line 174 "deffilep.y" +#line 176 "deffilep.y" { (yyval.number) = (yyvsp[(1) - (3)].number) | (yyvsp[(3) - (3)].number); } break; case 23: -#line 175 "deffilep.y" +#line 177 "deffilep.y" { (yyval.number) = 0; } break; case 24: -#line 178 "deffilep.y" +#line 180 "deffilep.y" { (yyval.number) = 1; } break; case 25: -#line 179 "deffilep.y" +#line 181 "deffilep.y" { (yyval.number) = 1; } break; case 26: -#line 180 "deffilep.y" +#line 182 "deffilep.y" { (yyval.number) = 2; } break; case 27: -#line 181 "deffilep.y" +#line 183 "deffilep.y" { (yyval.number) = 2; } break; case 28: -#line 182 "deffilep.y" +#line 184 "deffilep.y" { (yyval.number) = 4; } break; case 29: -#line 183 "deffilep.y" +#line 185 "deffilep.y" { (yyval.number) = 4; } break; case 30: -#line 184 "deffilep.y" +#line 186 "deffilep.y" { (yyval.number) = 8; } break; case 31: -#line 185 "deffilep.y" +#line 187 "deffilep.y" { (yyval.number) = 8; } break; case 34: -#line 194 "deffilep.y" +#line 196 "deffilep.y" { def_import ((yyvsp[(1) - (8)].id), (yyvsp[(3) - (8)].id), (yyvsp[(5) - (8)].id), (yyvsp[(7) - (8)].id), -1, (yyvsp[(8) - (8)].id)); } break; case 35: -#line 196 "deffilep.y" +#line 198 "deffilep.y" { def_import ((yyvsp[(1) - (8)].id), (yyvsp[(3) - (8)].id), (yyvsp[(5) - (8)].id), 0, (yyvsp[(7) - (8)].number), (yyvsp[(8) - (8)].id)); } break; case 36: -#line 198 "deffilep.y" +#line 200 "deffilep.y" { def_import ((yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id), 0, (yyvsp[(5) - (6)].id), -1, (yyvsp[(6) - (6)].id)); } break; case 37: -#line 200 "deffilep.y" +#line 202 "deffilep.y" { def_import ((yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id), 0, 0, (yyvsp[(5) - (6)].number), (yyvsp[(6) - (6)].id)); } break; case 38: -#line 202 "deffilep.y" +#line 204 "deffilep.y" { def_import( 0, (yyvsp[(1) - (6)].id), (yyvsp[(3) - (6)].id), (yyvsp[(5) - (6)].id), -1, (yyvsp[(6) - (6)].id)); } break; case 39: -#line 204 "deffilep.y" +#line 206 "deffilep.y" { def_import ( 0, (yyvsp[(1) - (4)].id), 0, (yyvsp[(3) - (4)].id), -1, (yyvsp[(4) - (4)].id)); } break; case 42: -#line 213 "deffilep.y" +#line 215 "deffilep.y" { def_section ((yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].number));} break; case 43: -#line 214 "deffilep.y" +#line 216 "deffilep.y" { def_section_alt ((yyvsp[(1) - (2)].id), (yyvsp[(2) - (2)].id));} break; case 44: -#line 218 "deffilep.y" +#line 220 "deffilep.y" { (yyval.number) = (yyvsp[(1) - (3)].number) | (yyvsp[(3) - (3)].number); } break; case 45: -#line 219 "deffilep.y" +#line 221 "deffilep.y" { (yyval.number) = (yyvsp[(1) - (1)].number); } break; case 48: -#line 226 "deffilep.y" +#line 228 "deffilep.y" { (yyval.number)=(yyvsp[(2) - (2)].number);} break; case 49: -#line 227 "deffilep.y" +#line 229 "deffilep.y" { (yyval.number)=-1;} break; case 50: -#line 231 "deffilep.y" +#line 233 "deffilep.y" { (yyval.number) = 1;} break; case 51: -#line 232 "deffilep.y" +#line 234 "deffilep.y" { (yyval.number) = 2;} break; case 52: -#line 233 "deffilep.y" +#line 235 "deffilep.y" { (yyval.number)=4;} break; case 53: -#line 234 "deffilep.y" +#line 236 "deffilep.y" { (yyval.number)=8;} break; case 54: -#line 237 "deffilep.y" - { (yyval.id) = (yyvsp[(1) - (1)].id); } +#line 240 "deffilep.y" + { (yyval.id_const) = "BASE"; } break; case 55: -#line 239 "deffilep.y" - { - char *name = def_pool_alloc (strlen ((yyvsp[(2) - (2)].id)) + 2); - sprintf (name, ".%s", (yyvsp[(2) - (2)].id)); - (yyval.id) = name; - } +#line 241 "deffilep.y" + { (yyval.id_const) = "CODE"; } break; case 56: -#line 245 "deffilep.y" - { - char *name = def_pool_alloc (strlen ((yyvsp[(1) - (3)].id)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); - sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); - (yyval.id) = name; - } +#line 242 "deffilep.y" + { (yyval.id_const) = "CONSTANT"; } break; case 57: -#line 250 "deffilep.y" - { (yyval.id) = ""; } +#line 243 "deffilep.y" + { (yyval.id_const) = "constant"; } break; case 58: -#line 253 "deffilep.y" - { (yyval.id) = (yyvsp[(2) - (2)].id); } +#line 244 "deffilep.y" + { (yyval.id_const) = "DATA"; } break; case 59: -#line 254 "deffilep.y" - { (yyval.id) = 0; } +#line 245 "deffilep.y" + { (yyval.id_const) = "data"; } break; case 60: -#line 258 "deffilep.y" - { (yyval.number) = (yyvsp[(2) - (2)].number);} +#line 246 "deffilep.y" + { (yyval.id_const) = "DESCRIPTION"; } break; case 61: -#line 259 "deffilep.y" - { (yyval.number) = -1;} +#line 247 "deffilep.y" + { (yyval.id_const) = "DIRECTIVE"; } break; case 62: -#line 263 "deffilep.y" - { (yyval.id) = (yyvsp[(2) - (2)].id); } +#line 248 "deffilep.y" + { (yyval.id_const) = "EXECUTE"; } break; case 63: -#line 264 "deffilep.y" - { (yyval.id) = 0; } +#line 249 "deffilep.y" + { (yyval.id_const) = "EXPORTS"; } break; case 64: -#line 267 "deffilep.y" - { (yyval.number) = (yyvsp[(3) - (3)].number);} +#line 250 "deffilep.y" + { (yyval.id_const) = "HEAPSIZE"; } break; case 65: -#line 268 "deffilep.y" - { (yyval.number) = -1;} +#line 251 "deffilep.y" + { (yyval.id_const) = "IMPORTS"; } break; case 66: -#line 271 "deffilep.y" - { (yyval.id) = (yyvsp[(1) - (1)].id); } +#line 258 "deffilep.y" + { (yyval.id_const) = "NAME"; } break; case 67: -#line 273 "deffilep.y" +#line 259 "deffilep.y" + { (yyval.id_const) = "NONAME"; } + break; + + case 68: +#line 260 "deffilep.y" + { (yyval.id_const) = "noname"; } + break; + + case 69: +#line 261 "deffilep.y" + { (yyval.id_const) = "PRIVATE"; } + break; + + case 70: +#line 262 "deffilep.y" + { (yyval.id_const) = "private"; } + break; + + case 71: +#line 263 "deffilep.y" + { (yyval.id_const) = "READ"; } + break; + + case 72: +#line 264 "deffilep.y" + { (yyval.id_const) = "SHARED"; } + break; + + case 73: +#line 265 "deffilep.y" + { (yyval.id_const) = "STACKSIZE"; } + break; + + case 74: +#line 266 "deffilep.y" + { (yyval.id_const) = "VERSION"; } + break; + + case 75: +#line 267 "deffilep.y" + { (yyval.id_const) = "WRITE"; } + break; + + case 76: +#line 270 "deffilep.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 77: +#line 272 "deffilep.y" { + char *name = xmalloc (strlen ((yyvsp[(2) - (2)].id_const)) + 2); + sprintf (name, ".%s", (yyvsp[(2) - (2)].id_const)); + (yyval.id) = name; + } + break; + + case 78: +#line 278 "deffilep.y" + { char *name = def_pool_alloc (strlen ((yyvsp[(2) - (2)].id)) + 2); sprintf (name, ".%s", (yyvsp[(2) - (2)].id)); (yyval.id) = name; } break; - case 68: -#line 279 "deffilep.y" + case 79: +#line 284 "deffilep.y" + { + char *name = def_pool_alloc (strlen ((yyvsp[(1) - (3)].id_const)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); + sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id_const), (yyvsp[(3) - (3)].id)); + (yyval.id) = name; + } + break; + + case 80: +#line 290 "deffilep.y" { char *name = def_pool_alloc (strlen ((yyvsp[(1) - (3)].id)) + 1 + strlen ((yyvsp[(3) - (3)].id)) + 1); sprintf (name, "%s.%s", (yyvsp[(1) - (3)].id), (yyvsp[(3) - (3)].id)); @@ -1870,13 +1955,63 @@ yyreduce: } break; - case 69: -#line 286 "deffilep.y" + case 81: +#line 297 "deffilep.y" { (yyval.id) = (yyvsp[(1) - (1)].id); } break; - case 70: -#line 288 "deffilep.y" + case 82: +#line 298 "deffilep.y" + { (yyval.id) = ""; } + break; + + case 83: +#line 301 "deffilep.y" + { (yyval.id) = (yyvsp[(2) - (2)].id); } + break; + + case 84: +#line 302 "deffilep.y" + { (yyval.id) = 0; } + break; + + case 85: +#line 306 "deffilep.y" + { (yyval.number) = (yyvsp[(2) - (2)].number);} + break; + + case 86: +#line 307 "deffilep.y" + { (yyval.number) = -1;} + break; + + case 87: +#line 311 "deffilep.y" + { (yyval.id) = (yyvsp[(2) - (2)].id); } + break; + + case 88: +#line 312 "deffilep.y" + { (yyval.id) = 0; } + break; + + case 89: +#line 315 "deffilep.y" + { (yyval.number) = (yyvsp[(3) - (3)].number);} + break; + + case 90: +#line 316 "deffilep.y" + { (yyval.number) = -1;} + break; + + case 91: +#line 319 "deffilep.y" + { (yyval.id) = (yyvsp[(1) - (1)].id); } + break; + + case 92: +#line 321 "deffilep.y" { char *id = def_pool_alloc (strlen ((yyvsp[(2) - (2)].id)) + 2); sprintf (id, ".%s", (yyvsp[(2) - (2)].id)); @@ -1884,8 +2019,8 @@ yyreduce: } break; - case 71: -#line 294 "deffilep.y" + case 93: +#line 327 "deffilep.y" { char *id = def_pool_alloc (strlen ((yyvsp[(1) - (4)].id)) + 1 + strlen ((yyvsp[(3) - (4)].digits)) + strlen ((yyvsp[(4) - (4)].id)) + 1); sprintf (id, "%s.%s%s", (yyvsp[(1) - (4)].id), (yyvsp[(3) - (4)].digits), (yyvsp[(4) - (4)].id)); @@ -1893,34 +2028,34 @@ yyreduce: } break; - case 72: -#line 301 "deffilep.y" + case 94: +#line 334 "deffilep.y" { (yyval.digits) = (yyvsp[(1) - (1)].digits); } break; - case 73: -#line 302 "deffilep.y" + case 95: +#line 335 "deffilep.y" { (yyval.digits) = ""; } break; - case 74: -#line 305 "deffilep.y" + case 96: +#line 338 "deffilep.y" { (yyval.id) = (yyvsp[(1) - (1)].id); } break; - case 75: -#line 306 "deffilep.y" + case 97: +#line 339 "deffilep.y" { (yyval.id) = ""; } break; - case 76: -#line 309 "deffilep.y" + case 98: +#line 342 "deffilep.y" { (yyval.number) = strtoul ((yyvsp[(1) - (1)].digits), 0, 0); } break; /* Line 1267 of yacc.c. */ -#line 1924 "deffilep.c" +#line 2059 "deffilep.c" default: break; } YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], &yyval, &yyloc); @@ -2134,7 +2269,7 @@ yyreturn: } -#line 311 "deffilep.y" +#line 344 "deffilep.y" /***************************************************************************** @@ -2421,13 +2556,21 @@ find_export_in_list (def_file_export *b, int max, if (!max) return 0; if ((e = cmp_export_elem (b, ex_name, in_name, its_name, ord)) <= 0) - return 0; + { + if (!e) + *is_ident = 1; + return 0; + } if (max == 1) return 1; if ((e = cmp_export_elem (b + (max - 1), ex_name, in_name, its_name, ord)) > 0) return max; else if (!e || max == 2) - return max - 1; + { + if (!e) + *is_ident = 1; + return max - 1; + } l = 0; r = max - 1; while (l < r) { @@ -2532,13 +2675,15 @@ cmp_import_elem (const def_file_import *e, const char *ex_name, { int r; + if ((r = are_names_equal (module, (e->module ? e->module->name : NULL)))) + return r; if ((r = are_names_equal (ex_name, e->name)) != 0) return r; if ((r = are_names_equal (in_name, e->internal_name)) != 0) return r; if (ord != e->ordinal) return (ord < e->ordinal ? -1 : 1); - return are_names_equal (module, (e->module ? e->module->name : NULL)); + return 0; } /* Search the position of the identical element, or returns the position @@ -2556,13 +2701,21 @@ find_import_in_list (def_file_import *b, int max, if (!max) return 0; if ((e = cmp_import_elem (b, ex_name, in_name, module, ord)) <= 0) - return 0; + { + if (!e) + *is_ident = 1; + return 0; + } if (max == 1) return 1; if ((e = cmp_import_elem (b + (max - 1), ex_name, in_name, module, ord)) > 0) return max; else if (!e || max == 2) - return max - 1; + { + if (!e) + *is_ident = 1; + return max - 1; + } l = 0; r = max - 1; while (l < r) { |