Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(202)

Side by Side Diff: third_party/yasm/patched-yasm/modules/parsers/gas/gas-parser.c

Issue 6170009: Update our yasm copy to yasm 1.1.0 (Part 1: yasm side)... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/
Patch Set: Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * GAS-compatible parser 2 * GAS-compatible parser
3 * 3 *
4 * Copyright (C) 2005-2007 Peter Johnson 4 * Copyright (C) 2005-2007 Peter Johnson
5 * 5 *
6 * Redistribution and use in source and binary forms, with or without 6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions 7 * modification, are permitted provided that the following conditions
8 * are met: 8 * are met:
9 * 1. Redistributions of source code must retain the above copyright 9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer. 10 * notice, this list of conditions and the following disclaimer.
(...skipping 10 matching lines...) Expand all
21 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE 21 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR OTHER CONTRIBUTORS BE
22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 22 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 23 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 25 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 26 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 27 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE. 28 * POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 #include <util.h> 30 #include <util.h>
31 /*@unused@*/ RCSID("$Id: gas-parser.c 2167 2009-01-02 08:36:09Z peter $"); 31 /*@unused@*/ RCSID("$Id: gas-parser.c 2279 2010-01-19 07:57:43Z peter $");
32 32
33 #include <libyasm.h> 33 #include <libyasm.h>
34 34
35 #include "gas-parser.h" 35 #include "gas-parser.h"
36 36
37 37
38 static void 38 static void
39 gas_parser_do_parse(yasm_object *object, yasm_preproc *pp, 39 gas_parser_do_parse(yasm_object *object, yasm_preproc *pp,
40 int save_input, yasm_linemap *linemap, 40 int save_input, yasm_linemap *linemap,
41 yasm_errwarns *errwarns) 41 yasm_errwarns *errwarns)
(...skipping 22 matching lines...) Expand all
64 64
65 parser_gas.peek_token = NONE; 65 parser_gas.peek_token = NONE;
66 66
67 parser_gas.line = NULL; 67 parser_gas.line = NULL;
68 68
69 /* initialize scanner structure */ 69 /* initialize scanner structure */
70 yasm_scanner_initialize(&parser_gas.s); 70 yasm_scanner_initialize(&parser_gas.s);
71 71
72 parser_gas.state = INITIAL; 72 parser_gas.state = INITIAL;
73 73
74 parser_gas.rept = NULL;
75
76 for (i=0; i<10; i++) 74 for (i=0; i<10; i++)
77 parser_gas.local[i] = 0; 75 parser_gas.local[i] = 0;
78 76
77 parser_gas.intel_syntax = 0;
78
79 parser_gas.is_cpp_preproc = 79 parser_gas.is_cpp_preproc =
80 yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "cpp") == 0; 80 yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "cpp") == 0;
81 parser_gas.is_nasm_preproc = 81 parser_gas.is_nasm_preproc =
82 yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "nasm") == 0 ; 82 yasm__strcasecmp(((yasm_preproc_base*)pp)->module->keyword, "nasm") == 0 ;
83 83
84 gas_parser_parse(&parser_gas); 84 gas_parser_parse(&parser_gas);
85 85
86 /* Check for ending inside a rept */
87 if (parser_gas.rept) {
88 yasm_error_set(YASM_ERROR_SYNTAX, N_("rept without matching endr"));
89 yasm_errwarn_propagate(errwarns, parser_gas.rept->startline);
90 }
91
92 /* Check for ending inside a comment */ 86 /* Check for ending inside a comment */
93 if (parser_gas.state == COMMENT) { 87 if (parser_gas.state == COMMENT) {
94 yasm_warn_set(YASM_WARN_GENERAL, N_("end of file in comment")); 88 yasm_warn_set(YASM_WARN_GENERAL, N_("end of file in comment"));
95 /* XXX: Minus two to compensate for already having moved past the EOF 89 /* XXX: Minus two to compensate for already having moved past the EOF
96 * in the linemap. 90 * in the linemap.
97 */ 91 */
98 yasm_errwarn_propagate(errwarns, 92 yasm_errwarn_propagate(errwarns,
99 yasm_linemap_get_current(parser_gas.linemap)-2); 93 yasm_linemap_get_current(parser_gas.linemap)-2);
100 } 94 }
101 95
102 yasm_scanner_delete(&parser_gas.s); 96 yasm_scanner_delete(&parser_gas.s);
103 97
104 /* Free locallabel base if necessary */ 98 /* Free locallabel base if necessary */
105 if (parser_gas.locallabel_base) 99 if (parser_gas.locallabel_base)
106 yasm_xfree(parser_gas.locallabel_base); 100 yasm_xfree(parser_gas.locallabel_base);
107 101
108 if (parser_gas.dir_file) 102 if (parser_gas.dir_file)
109 yasm_xfree(parser_gas.dir_file); 103 yasm_xfree(parser_gas.dir_file);
110 104
111 /* Convert all undefined symbols into extern symbols */ 105 /* Convert all undefined symbols into extern symbols */
112 yasm_symtab_parser_finalize(object->symtab, 1, errwarns); 106 yasm_symtab_parser_finalize(object->symtab, 1, errwarns);
113 } 107 }
114 108
115 /* Define valid preprocessors to use with this parser */ 109 /* Define valid preprocessors to use with this parser */
116 static const char *gas_parser_preproc_keywords[] = { 110 static const char *gas_parser_preproc_keywords[] = {
111 "gas",
117 "raw", 112 "raw",
118 "cpp", 113 "cpp",
119 "nasm", 114 "nasm",
120 NULL 115 NULL
121 }; 116 };
122 117
123 /* Define parser structure -- see parser.h for details */ 118 /* Define parser structure -- see parser.h for details */
124 yasm_parser_module yasm_gas_LTX_parser = { 119 yasm_parser_module yasm_gas_LTX_parser = {
125 "GNU AS (GAS)-compatible parser", 120 "GNU AS (GAS)-compatible parser",
126 "gas", 121 "gas",
127 gas_parser_preproc_keywords, 122 gas_parser_preproc_keywords,
128 "raw", 123 "gas",
129 NULL, /* No standard macros */ 124 NULL, /* No standard macros */
130 gas_parser_do_parse 125 gas_parser_do_parse
131 }; 126 };
132 yasm_parser_module yasm_gnu_LTX_parser = { 127 yasm_parser_module yasm_gnu_LTX_parser = {
133 "GNU AS (GAS)-compatible parser", 128 "GNU AS (GAS)-compatible parser",
134 "gnu", 129 "gnu",
135 gas_parser_preproc_keywords, 130 gas_parser_preproc_keywords,
136 "raw", 131 "gas",
137 NULL, /* No standard macros */ 132 NULL, /* No standard macros */
138 gas_parser_do_parse 133 gas_parser_do_parse
139 }; 134 };
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698