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

Unified Diff: third_party/yasm/patched-yasm/modules/parsers/gas/gas-parse.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 side-by-side diff with in-line comments
Download patch
Index: third_party/yasm/patched-yasm/modules/parsers/gas/gas-parse.c
===================================================================
--- third_party/yasm/patched-yasm/modules/parsers/gas/gas-parse.c (revision 71129)
+++ third_party/yasm/patched-yasm/modules/parsers/gas/gas-parse.c (working copy)
@@ -28,7 +28,7 @@
* POSSIBILITY OF SUCH DAMAGE.
*/
#include <util.h>
-RCSID("$Id: gas-parse.c 2169 2009-01-02 20:46:57Z peter $");
+RCSID("$Id: gas-parse.c 2279 2010-01-19 07:57:43Z peter $");
#include <libyasm.h>
@@ -321,7 +321,7 @@
get_next_token();
/* Set linemap. */
- yasm_linemap_set(parser_gas->linemap, filename, line, 1);
+ yasm_linemap_set(parser_gas->linemap, filename, 0, line, 1);
/*
The first line marker in the file (which should be on the first line
@@ -429,7 +429,7 @@
filename = STRING_val.contents;
/* Set linemap. */
- yasm_linemap_set(parser_gas->linemap, filename, line, incr);
+ yasm_linemap_set(parser_gas->linemap, filename, 0, line, incr);
/*
The first line marker in the file (which should be on the first line
@@ -472,12 +472,12 @@
if (parser_gas->dir_fileline == 3) {
/* Have both file and line */
- yasm_linemap_set(parser_gas->linemap, NULL,
+ yasm_linemap_set(parser_gas->linemap, NULL, 0,
parser_gas->dir_line, 1);
} else if (parser_gas->dir_fileline == 1) {
/* Had previous file directive only */
parser_gas->dir_fileline = 3;
- yasm_linemap_set(parser_gas->linemap, parser_gas->dir_file,
+ yasm_linemap_set(parser_gas->linemap, parser_gas->dir_file, 0,
parser_gas->dir_line, 1);
} else {
/* Didn't see file yet */
@@ -486,53 +486,6 @@
return NULL;
}
-/* Macro directives */
-
-static yasm_bytecode *
-dir_rept(yasm_parser_gas *parser_gas, unsigned int param)
-{
- yasm_intnum *intn;
- yasm_expr *e = parse_expr(parser_gas);
-
- if (!e) {
- yasm_error_set(YASM_ERROR_SYNTAX,
- N_("expression expected after `%s'"),
- ".rept");
- return NULL;
- }
- intn = yasm_expr_get_intnum(&e, 0);
-
- if (!intn) {
- yasm_error_set(YASM_ERROR_NOT_ABSOLUTE,
- N_("rept expression not absolute"));
- } else if (yasm_intnum_sign(intn) < 0) {
- yasm_error_set(YASM_ERROR_VALUE,
- N_("rept expression is negative"));
- } else {
- gas_rept *rept = yasm_xmalloc(sizeof(gas_rept));
- STAILQ_INIT(&rept->lines);
- rept->startline = cur_line;
- rept->numrept = yasm_intnum_get_uint(intn);
- rept->numdone = 0;
- rept->line = NULL;
- rept->linepos = 0;
- rept->ended = 0;
- rept->oldbuf = NULL;
- rept->oldbuflen = 0;
- rept->oldbufpos = 0;
- parser_gas->rept = rept;
- }
- return NULL;
-}
-
-static yasm_bytecode *
-dir_endr(yasm_parser_gas *parser_gas, unsigned int param)
-{
- /* Shouldn't ever get here unless we didn't get a DIR_REPT first */
- yasm_error_set(YASM_ERROR_SYNTAX, N_("endr without matching rept"));
- return NULL;
-}
-
/* Alignment directives */
static yasm_bytecode *
@@ -877,12 +830,12 @@
yasm_linemap_lookup(parser_gas->linemap, cur_line, &old_fn,
&old_line);
- yasm_linemap_set(parser_gas->linemap, filename, old_line,
+ yasm_linemap_set(parser_gas->linemap, filename, 0, old_line,
1);
} else if (parser_gas->dir_fileline == 2) {
/* Had previous line directive only */
parser_gas->dir_fileline = 3;
- yasm_linemap_set(parser_gas->linemap, filename,
+ yasm_linemap_set(parser_gas->linemap, filename, 0,
parser_gas->dir_line, 1);
} else {
/* Didn't see line yet, save file */
@@ -928,7 +881,27 @@
return NULL;
}
+
static yasm_bytecode *
+dir_intel_syntax(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ parser_gas->intel_syntax = 1;
+
+ do {
+ destroy_curtok();
+ get_next_token();
+ } while (!is_eol());
+ return NULL;
+}
+
+static yasm_bytecode *
+dir_att_syntax(yasm_parser_gas *parser_gas, unsigned int param)
+{
+ parser_gas->intel_syntax = 0;
+ return NULL;
+}
+
+static yasm_bytecode *
parse_instr(yasm_parser_gas *parser_gas)
{
yasm_bytecode *bc;
@@ -936,6 +909,19 @@
size_t id_len;
uintptr_t prefix;
+ if (parser_gas->intel_syntax) {
+ bc = parse_instr_intel(parser_gas);
+ if (bc) {
+ yasm_warn_disable(YASM_WARN_UNREC_CHAR);
+ do {
+ destroy_curtok();
+ get_next_token();
+ } while (!is_eol());
+ yasm_warn_enable(YASM_WARN_UNREC_CHAR);
+ }
+ return bc;
+ }
+
if (curtok != ID)
return NULL;
@@ -1715,14 +1701,14 @@
{".data", dir_data_section, 0, INITIAL},
{".text", dir_text_section, 0, INITIAL},
{".section", dir_section, 0, SECTION_DIRECTIVE},
- /* macro directives */
- {".rept", dir_rept, 0, INITIAL},
- {".endr", dir_endr, 0, INITIAL},
/* empty space/fill directives */
{".skip", dir_skip, 0, INITIAL},
{".space", dir_skip, 0, INITIAL},
{".fill", dir_fill, 0, INITIAL},
{".zero", dir_zero, 0, INITIAL},
+ /* syntax directives */
+ {".intel_syntax", dir_intel_syntax, 0, INITIAL},
+ {".att_syntax", dir_att_syntax, 0, INITIAL},
/* other directives */
{".equ", dir_equ, 0, INITIAL},
{".file", dir_file, 0, INITIAL},

Powered by Google App Engine
This is Rietveld 408576698