summaryrefslogtreecommitdiff
path: root/libcuda
diff options
context:
space:
mode:
Diffstat (limited to 'libcuda')
-rw-r--r--libcuda/cuobjdump.l20
-rw-r--r--libcuda/cuobjdump.y21
2 files changed, 22 insertions, 19 deletions
diff --git a/libcuda/cuobjdump.l b/libcuda/cuobjdump.l
index c86a861..f63ee73 100644
--- a/libcuda/cuobjdump.l
+++ b/libcuda/cuobjdump.l
@@ -55,8 +55,9 @@ void cuobjdump_error(const char*);
%s elfheader
%s ptxheader
%s endheader
-%s identifier
-%s identifierF
+%x identifier
+%x conidentifier
+%s endidentifier
alpha [a-zA-Z]
numeric [0-9]
@@ -101,10 +102,16 @@ newlines {newline}+
/*SASS code tokens*/
<sasscode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return SASSLINE;
-<identifier>"identifier = " BEGIN(identifierF); return H_IDENTIFIER;
-<identifier>"\n" yy_pop_state();
+<identifier>{newline}"compressed"{newline} BEGIN(conidentifier); return H_COMPRESSED;
+<identifier>{newline}"identifier = " BEGIN(endidentifier); return H_IDENTIFIER;
+<identifier>{newline}{newline} yy_pop_state();
-<identifierF>{notnewline}+ yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME;
+
+<conidentifier>"identifier = " BEGIN(endidentifier); return H_IDENTIFIER;
+<conidentifier>{newline} yy_pop_state();
+
+
+<endidentifier>{notnewline}+ yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME;
@@ -128,8 +135,7 @@ newlines {newline}+
<ptxheader>\[{numeric},{numeric}\] return CODEVERSION;
<ptxheader>"producer = " return H_PRODUCER;
<ptxheader>"host = " return H_HOST;
-<ptxheader>"compile_size = " return H_COMPILESIZE;
-<ptxheader>"compressed"{newline} yy_pop_state(); return H_COMPRESSED;
+<ptxheader>"compile_size = " BEGIN(endheader); return H_COMPILESIZE;
diff --git a/libcuda/cuobjdump.y b/libcuda/cuobjdump.y
index 5fc0c8f..29509e8 100644
--- a/libcuda/cuobjdump.y
+++ b/libcuda/cuobjdump.y
@@ -39,7 +39,7 @@ void setCuobjdumpelffilename(const char* filename);
void setCuobjdumpsassfilename(const char* filename);
int elfserial = 1;
int ptxserial = 1;
-
+int yydebug = 1;
FILE *ptxfile;
FILE *elffile;
FILE *sassfile;
@@ -75,7 +75,7 @@ section : PTXHEADER {
snprintf(filename, 1024, "_cuobjdump_%d.ptx", ptxserial++);
ptxfile = fopen(filename, "w");
setCuobjdumpptxfilename(filename);
- } headerinfo identifier ptxcode {
+ } headerinfo compressedkeyword identifier ptxcode {
fclose(ptxfile);
}
| ELFHEADER {
@@ -84,6 +84,7 @@ section : PTXHEADER {
elffile = fopen(filename, "w");
setCuobjdumpelffilename(filename);
} headerinfo identifier{
+ printf("\nHeader Info and Identifier Parsed\n");
} elfcode {
fclose(elffile);
snprintf(filename, 1024, "_cuobjdump_%d.sass", elfserial++);
@@ -98,24 +99,20 @@ headerinfo : H_SEPARATOR NEWLINE
H_CODEVERSION CODEVERSION NEWLINE
H_PRODUCER H_UNKNOWN NEWLINE
H_HOST IDENTIFIER NEWLINE
- H_COMPILESIZE IDENTIFIER emptylines {setCuobjdumparch($4);};
+ H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4);};
| H_SEPARATOR NEWLINE
H_ARCH IDENTIFIER NEWLINE
H_CODEVERSION CODEVERSION NEWLINE
H_PRODUCER IDENTIFIER NEWLINE
H_HOST IDENTIFIER NEWLINE
- H_COMPILESIZE IDENTIFIER emptylines {setCuobjdumparch($4);};
- | H_SEPARATOR NEWLINE
- H_ARCH IDENTIFIER NEWLINE
- H_CODEVERSION CODEVERSION NEWLINE
- H_PRODUCER IDENTIFIER NEWLINE
- H_HOST IDENTIFIER NEWLINE
- H_COMPILESIZE IDENTIFIER NEWLINE
- H_COMPRESSED emptylines {setCuobjdumparch($4);};
+ H_COMPILESIZE IDENTIFIER {setCuobjdumparch($4);};
-identifier : H_IDENTIFIER FILENAME {setCuobjdumpidentifier($2);};
+identifier : H_IDENTIFIER FILENAME emptylines {setCuobjdumpidentifier($2);};
| ;
+compressedkeyword : H_COMPRESSED emptylines
+ | ;
+
ptxcode : ptxcode PTXLINE {fprintf(ptxfile, "%s", $2);}
| ;