summaryrefslogtreecommitdiff
path: root/libcuda/cuobjdump.y
diff options
context:
space:
mode:
authorMengchi Zhang <[email protected]>2019-05-27 17:27:58 -0400
committerMengchi Zhang <[email protected]>2019-05-27 17:27:58 -0400
commit913865e6ac7d0f7c12faeb8430dc5724fdc4be80 (patch)
tree3829491145e7650736d37741d263e8af7e9f2be6 /libcuda/cuobjdump.y
parent112e85e32c08e9fa0a34bb0ec262d8e95df61e6b (diff)
Move some cuobjdump parser variables
Signed-off-by: Mengchi Zhang <[email protected]>
Diffstat (limited to 'libcuda/cuobjdump.y')
-rw-r--r--libcuda/cuobjdump.y43
1 files changed, 20 insertions, 23 deletions
diff --git a/libcuda/cuobjdump.y b/libcuda/cuobjdump.y
index 66cbace..9c0c28d 100644
--- a/libcuda/cuobjdump.y
+++ b/libcuda/cuobjdump.y
@@ -30,6 +30,7 @@
#include <stdio.h>
typedef void * yyscan_t;
+#include "cuobjdump.h"
extern void addCuobjdumpSection(int sectiontype);
void setCuobjdumparch(const char* arch);
@@ -37,23 +38,19 @@ void setCuobjdumpidentifier(const char* identifier);
void setCuobjdumpptxfilename(const char* filename);
void setCuobjdumpelffilename(const char* filename);
void setCuobjdumpsassfilename(const char* filename);
-int elfserial = 1;
-int ptxserial = 1;
-FILE *ptxfile;
-FILE *elffile;
-FILE *sassfile;
-char filename [1024];
%}
%define api.pure full
%parse-param {yyscan_t scanner}
+%parse-param {cuobjdump_parser* parser}
%lex-param {yyscan_t scanner}
+%lex-param {cuobjdump_parser* parser}
%union {
char* string_value;
}
%{
-int yylex(YYSTYPE * yylval_param, yyscan_t yyscanner);
-void yyerror(yyscan_t yyscanner, const char* msg);
+int yylex(YYSTYPE * yylval_param, yyscan_t yyscanner, cuobjdump_parser* parser);
+void yyerror(yyscan_t yyscanner, cuobjdump_parser* parser, const char* msg);
%}
%token <string_value> H_SEPARATOR H_ARCH H_CODEVERSION H_PRODUCER H_HOST H_COMPILESIZE H_IDENTIFIER H_UNKNOWN H_COMPRESSED
%token <string_value> CODEVERSION
@@ -79,24 +76,24 @@ emptylines : emptylines NEWLINE
section : PTXHEADER {
addCuobjdumpSection(0);
- snprintf(filename, 1024, "_cuobjdump_%d.ptx", ptxserial++);
- ptxfile = fopen(filename, "w");
- setCuobjdumpptxfilename(filename);
+ snprintf(parser->filename, 1024, "_cuobjdump_%d.ptx", parser->ptxserial++);
+ parser->ptxfile = fopen(parser->filename, "w");
+ setCuobjdumpptxfilename(parser->filename);
} headerinfo compressedkeyword identifier ptxcode {
- fclose(ptxfile);
+ fclose(parser->ptxfile);
}
| ELFHEADER {
addCuobjdumpSection(1);
- snprintf(filename, 1024, "_cuobjdump_%d.elf", elfserial);
- elffile = fopen(filename, "w");
- setCuobjdumpelffilename(filename);
+ snprintf(parser->filename, 1024, "_cuobjdump_%d.elf", parser->elfserial);
+ parser->elffile = fopen(parser->filename, "w");
+ setCuobjdumpelffilename(parser->filename);
} headerinfo compressedkeyword identifier elfcode {
- fclose(elffile);
- snprintf(filename, 1024, "_cuobjdump_%d.sass", elfserial++);
- sassfile = fopen(filename, "w");
- setCuobjdumpsassfilename(filename);
+ fclose(parser->elffile);
+ snprintf(parser->filename, 1024, "_cuobjdump_%d.sass", parser->elfserial++);
+ parser->sassfile = fopen(parser->filename, "w");
+ setCuobjdumpsassfilename(parser->filename);
} sasscode {
- fclose(sassfile);
+ fclose(parser->sassfile);
};
headerinfo : H_SEPARATOR NEWLINE
@@ -118,13 +115,13 @@ identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2);}
compressedkeyword : H_COMPRESSED emptylines
| ;
-ptxcode : ptxcode PTXLINE {fprintf(ptxfile, "%s", $2);}
+ptxcode : ptxcode PTXLINE {fprintf(parser->ptxfile, "%s", $2);}
| ;
-elfcode : elfcode ELFLINE {fprintf(elffile, "%s", $2);}
+elfcode : elfcode ELFLINE {fprintf(parser->elffile, "%s", $2);}
| ;
-sasscode : sasscode SASSLINE {fprintf(sassfile, "%s", $2);}
+sasscode : sasscode SASSLINE {fprintf(parser->sassfile, "%s", $2);}
| ;