]> granicus.if.org Git - yasm/commitdiff
* gas-bison.y, gas-token.re: Implement .weak directive.
authorPeter Johnson <peter@tortall.net>
Sun, 16 Oct 2005 08:48:24 +0000 (08:48 -0000)
committerPeter Johnson <peter@tortall.net>
Sun, 16 Oct 2005 08:48:24 +0000 (08:48 -0000)
svn path=/trunk/yasm/; revision=1286

modules/parsers/gas/gas-bison.y
modules/parsers/gas/gas-token.re

index 8885fea7631d5437865d744cd9614e3764021bee..794329a388cc3e7b554d6b3096f79c1d57e6cd45 100644 (file)
@@ -105,7 +105,7 @@ static void gas_parser_directive
 %token DIR_EQU DIR_FILE DIR_FLOAT DIR_GLOBAL DIR_IDENT DIR_INT DIR_LOC
 %token DIR_LCOMM DIR_OCTA DIR_ORG DIR_P2ALIGN DIR_REPT DIR_SECTION
 %token DIR_SHORT DIR_SIZE DIR_SKIP DIR_STRING
-%token DIR_TEXT DIR_TFLOAT DIR_TYPE DIR_QUAD DIR_WORD DIR_ZERO
+%token DIR_TEXT DIR_TFLOAT DIR_TYPE DIR_QUAD DIR_WEAK DIR_WORD DIR_ZERO
 
 %type <bc> line lineexp instr
 
@@ -205,6 +205,20 @@ lineexp: instr
        yasm_xfree($2);
        $$ = NULL;
     }
+    | DIR_WEAK label_id {
+       yasm_valparamhead vps;
+       yasm_valparam *vp;
+
+       yasm_vps_initialize(&vps);
+       vp = yasm_vp_create($2, NULL);
+       yasm_vps_append(&vps, vp);
+
+       yasm_objfmt_directive(parser_gas->objfmt, "weak", &vps, NULL,
+                             cur_line);
+
+       yasm_vps_delete(&vps);
+       $$ = NULL;
+    }
     | DIR_LCOMM label_id ',' expr {
        /* Put into .bss section. */
        /*@dependent@*/ yasm_section *bss =
index 25fbe3ebdb59b0e5c2310606dd210523d3d98b26..48c489a17689c2e6d0b604790957f3cda50a5139 100644 (file)
@@ -297,6 +297,7 @@ scan:
        '.tfloat'       { RETURN(DIR_TFLOAT); }
        '.type'         { RETURN(DIR_TYPE); }
        '.quad'         { RETURN(DIR_QUAD); }
+       '.weak'         { RETURN(DIR_WEAK); }
        '.word'         { RETURN(DIR_WORD); }
        '.zero'         { RETURN(DIR_ZERO); }