summaryrefslogtreecommitdiff
path: root/libcuda/cuobjdump.y
diff options
context:
space:
mode:
authorMengchi Zhang <[email protected]>2019-05-29 01:28:29 -0400
committerMengchi Zhang <[email protected]>2019-05-29 01:28:29 -0400
commit25bdc0dd89932f95ace0fc617649a4e041aaadd9 (patch)
tree2cac703dbb84ca04bc3e75c3d4c0074b13274d8a /libcuda/cuobjdump.y
parent568e3185c58b07ac31fdd59f6c2aa7af7533939e (diff)
Move SectionList to context
Signed-off-by: Mengchi Zhang <[email protected]>
Diffstat (limited to 'libcuda/cuobjdump.y')
-rw-r--r--libcuda/cuobjdump.y36
1 files changed, 19 insertions, 17 deletions
diff --git a/libcuda/cuobjdump.y b/libcuda/cuobjdump.y
index fcc863e..8d1bca6 100644
--- a/libcuda/cuobjdump.y
+++ b/libcuda/cuobjdump.y
@@ -32,25 +32,27 @@
typedef void * yyscan_t;
#include "cuobjdump.h"
-extern void addCuobjdumpSection(int sectiontype);
-void setCuobjdumparch(const char* arch);
-void setCuobjdumpidentifier(const char* identifier);
-void setCuobjdumpptxfilename(const char* filename);
-void setCuobjdumpelffilename(const char* filename);
-void setCuobjdumpsassfilename(const char* filename);
+extern void addCuobjdumpSection(int sectiontype, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
+void setCuobjdumparch(const char* arch, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
+void setCuobjdumpidentifier(const char* identifier, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
+void setCuobjdumpptxfilename(const char* filename, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
+void setCuobjdumpelffilename(const char* filename, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
+void setCuobjdumpsassfilename(const char* filename, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
%}
%define api.pure full
%parse-param {yyscan_t scanner}
%parse-param {struct cuobjdump_parser* parser}
+%parse-param {std::list<cuobjdumpSection*> &cuobjdumpSectionList}
%lex-param {yyscan_t scanner}
%lex-param {struct cuobjdump_parser* parser}
+%lex-param {std::list<cuobjdumpSection*> &cuobjdumpSectionList}
%union {
char* string_value;
}
%{
-int yylex(YYSTYPE * yylval_param, yyscan_t yyscanner, struct cuobjdump_parser* parser);
-void yyerror(yyscan_t yyscanner, struct cuobjdump_parser* parser, const char* msg);
+int yylex(YYSTYPE * yylval_param, yyscan_t yyscanner, struct cuobjdump_parser* parser, std::list<cuobjdumpSection*> &cuobjdumpSectionList);
+void yyerror(yyscan_t yyscanner, struct cuobjdump_parser* parser, std::list<cuobjdumpSection*> &cuobjdumpSectionList, 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
@@ -75,23 +77,23 @@ emptylines : emptylines NEWLINE
| ;
section : PTXHEADER {
- addCuobjdumpSection(0);
+ addCuobjdumpSection(0, cuobjdumpSectionList);
snprintf(parser->filename, 1024, "_cuobjdump_%d.ptx", parser->ptxserial++);
parser->ptxfile = fopen(parser->filename, "w");
- setCuobjdumpptxfilename(parser->filename);
+ setCuobjdumpptxfilename(parser->filename, cuobjdumpSectionList);
} headerinfo compressedkeyword identifier ptxcode {
fclose(parser->ptxfile);
}
| ELFHEADER {
- addCuobjdumpSection(1);
+ addCuobjdumpSection(1, cuobjdumpSectionList);
snprintf(parser->filename, 1024, "_cuobjdump_%d.elf", parser->elfserial);
parser->elffile = fopen(parser->filename, "w");
- setCuobjdumpelffilename(parser->filename);
+ setCuobjdumpelffilename(parser->filename, cuobjdumpSectionList);
} headerinfo compressedkeyword identifier elfcode {
fclose(parser->elffile);
snprintf(parser->filename, 1024, "_cuobjdump_%d.sass", parser->elfserial++);
parser->sassfile = fopen(parser->filename, "w");
- setCuobjdumpsassfilename(parser->filename);
+ setCuobjdumpsassfilename(parser->filename, cuobjdumpSectionList);
} sasscode {
fclose(parser->sassfile);
};
@@ -101,16 +103,16 @@ headerinfo : H_SEPARATOR NEWLINE
H_CODEVERSION CODEVERSION NEWLINE
H_PRODUCER H_UNKNOWN NEWLINE
H_HOST IDENTIFIER NEWLINE
- H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4);};
+ H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4, cuobjdumpSectionList);};
| H_SEPARATOR NEWLINE
H_ARCH IDENTIFIER NEWLINE
H_CODEVERSION CODEVERSION NEWLINE
H_PRODUCER IDENTIFIER NEWLINE
H_HOST IDENTIFIER NEWLINE
- H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4);};
+ H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4, cuobjdumpSectionList);};
-identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2);}
- | {setCuobjdumpidentifier("default");};
+identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2, cuobjdumpSectionList);}
+ | {setCuobjdumpidentifier("default", cuobjdumpSectionList);};
compressedkeyword : H_COMPRESSED emptylines
| ;