b43-asm: Add an option to print the code sizes after assembling.
[b43-tools.git] / assembler / scanner.l
index 346cbe6c1d81bbe402f279bdf73ab09164898b41..16f375ca2d0fa974268b70ab6770d47a6312a213 100644 (file)
@@ -48,13 +48,12 @@ NEWLINE             ((\r)|(\n)|(\r\n))
 
 {WS}+                  { update_lineinfo(); /* whitespace */ }
 {NEWLINE}              { cur_lineinfo.lineno++; update_lineinfo(); }
-;.*$                   { update_lineinfo(); /* comment */ }
 
 ^{WS}*"%"{WS}*arch     { update_lineinfo(); return ASM_ARCH; }
 ^{WS}*"%"{WS}*start    { update_lineinfo(); return ASM_START; }
 
-^{WS}*\.text{WS}*$                             { update_lineinfo(); return SECTION_TEXT; }
-^{WS}*\.initvals/\({IDENTIFIER}\){WS}*{NEWLINE}        { update_lineinfo(); return SECTION_IVALS; }
+^{WS}*\.text{WS}*$                     { update_lineinfo(); return SECTION_TEXT; }
+^{WS}*\.initvals/\({IDENTIFIER}\)      { update_lineinfo(); return SECTION_IVALS; }
 
 spr[0-9a-fA-F]{3,3}    { update_lineinfo(); return SPR; }
 r/([0-9]|([1-5][0-9])|(6[0-3]))        { update_lineinfo(); return GPR; }
@@ -62,6 +61,7 @@ off/[0-6]             { update_lineinfo(); return OFFR; }
 lr/[0-3]               { update_lineinfo(); return LR; }
 
 ,                      { update_lineinfo(); return COMMA; }
+;                      { update_lineinfo(); return SEMICOLON; }
 \[                     { update_lineinfo(); return BRACK_OPEN; }
 \]                     { update_lineinfo(); return BRACK_CLOSE; }
 \(                     { update_lineinfo(); return PAREN_OPEN; }
@@ -149,6 +149,7 @@ shm32                       { update_lineinfo(); return IVAL_SHM32; }
 %%
 
 struct lineinfo cur_lineinfo;
+//FIXME The linenumber sometimes is wrong.
 
 static void interpret_cppinfo(const char *str)
 {
@@ -175,7 +176,7 @@ static void interpret_cppinfo(const char *str)
        memset(tmp, 0, sizeof(tmp));
        memcpy(tmp, str, min(sizeof(tmp) - 1,
                             (int)(found - str)));
-       cur_lineinfo.lineno = strtoul(tmp, NULL, 10);
+       cur_lineinfo.lineno = strtoul(tmp, NULL, 10) - 1;
        str = found;
        str++;