diff options
Diffstat (limited to 'cuobjdump_to_ptxplus')
| -rw-r--r-- | cuobjdump_to_ptxplus/Makefile | 21 | ||||
| -rw-r--r-- | cuobjdump_to_ptxplus/cuobjdump.l | 96 | ||||
| -rw-r--r-- | cuobjdump_to_ptxplus/cuobjdump.y | 83 |
3 files changed, 19 insertions, 181 deletions
diff --git a/cuobjdump_to_ptxplus/Makefile b/cuobjdump_to_ptxplus/Makefile index f58a0fd..2f3c202 100644 --- a/cuobjdump_to_ptxplus/Makefile +++ b/cuobjdump_to_ptxplus/Makefile @@ -12,7 +12,6 @@ LD = g++ LDFLAGS = ${CCFLAGS} -CUOBJDUMP_PARSER_OBJECTS = cuobjdump_parser.o cuobjdump_lexer.o SASS_PARSER_OBJECTS = sass_lexer.o sass_parser.o ELF_PARSER_OBJECTS = elf_lexer.o elf_parser.o HEADER_PARSER_OBJECTS = headerParser.o headerLexer.o @@ -20,7 +19,7 @@ PTX_PARSER_OBJECTS = ptx.tab.o lex.ptx_.o all: cuobjdump_to_ptxplus -cuobjdump_to_ptxplus: stringList.o decudaInst.o decudaInstList.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS) $(CUOBJDUMP_PARSER_OBJECTS) +cuobjdump_to_ptxplus: stringList.o decudaInst.o decudaInstList.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o $(PTX_PARSER_OBJECTS) $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) $(HEADER_PARSER_OBJECTS) ${LD} ${LDFLAGS} -ocuobjdump_to_ptxplus stringList.o decudaInst.o decudaInstList.o headerParser.o headerLexer.o cuobjdumpInst.o cuobjdumpInstList.o cuobjdump_to_ptxplus.o lex.ptx_.o ptx.tab.o $(SASS_PARSER_OBJECTS) $(ELF_PARSER_OBJECTS) stringList.o: ../decuda_to_ptxplus/stringList.cc ../decuda_to_ptxplus/stringList.h @@ -129,6 +128,11 @@ cuobjdump_lexer.o: cuobjdump_lexer.c %.o: %.cpp $(CXX) ${CXXFLAGS} -c -o $@ $< +SRCS = $(shell ls *.cc) + +depend: + makedepend $(SRCS) 2> /dev/null + clean: rm -f ./opcodes.def ./opcodes.h rm -f ./lex.ptx_.c ./ptx.tab.c ./ptx.tab.h ./lex.ptx_.o ./ptx.tab.o ptx.output @@ -143,3 +147,16 @@ clean: rm -f ./cuobjdump_parser.o ./cuobjdump_parser.c ./cuobjdump_parser.output ./cuobjdump_parser.h rm -f ./cuobjdump_lexer.o ./cuobjdump_lexer.c rm -f ./elf_lexer.o ./elf_parser.o ./elf_lexer.cpp ./elf_parser.cpp ./elf_parser.hpp ./elf_parser.output +# DO NOT DELETE + +cuobjdumpInst.o: cuobjdumpInst.h +cuobjdumpInstList.o: cuobjdumpInstList.h cuobjdumpInst.h +cuobjdump_to_ptxplus.o: cuobjdumpInstList.h cuobjdumpInst.h +cuobjdump_to_ptxplus.o: /usr/include/stdio.h /usr/include/features.h +cuobjdump_to_ptxplus.o: /usr/include/sys/cdefs.h /usr/include/bits/wordsize.h +cuobjdump_to_ptxplus.o: /usr/include/gnu/stubs.h /usr/include/gnu/stubs-64.h +cuobjdump_to_ptxplus.o: /usr/include/bits/types.h +cuobjdump_to_ptxplus.o: /usr/include/bits/typesizes.h /usr/include/libio.h +cuobjdump_to_ptxplus.o: /usr/include/_G_config.h /usr/include/wchar.h +cuobjdump_to_ptxplus.o: /usr/include/bits/stdio_lim.h +cuobjdump_to_ptxplus.o: /usr/include/bits/sys_errlist.h diff --git a/cuobjdump_to_ptxplus/cuobjdump.l b/cuobjdump_to_ptxplus/cuobjdump.l deleted file mode 100644 index fcd43f8..0000000 --- a/cuobjdump_to_ptxplus/cuobjdump.l +++ /dev/null @@ -1,96 +0,0 @@ - /*Lex file for output of cuobjdump*/ -%{ -#include <stdio.h> -#include <string.h> -#include "cuobjdump_parser.h" - -#define YY_NEVER_INTERACTIVE 1 - -#define YYDEBUG 1 - -#define yylval cuobjdump_lval - -void cuobjdump_error(const char*); -%} - -%option stack -%option noyywrap -%option yylineno - -%s ptxcode -%s sasscode -%s elfcode -%s header -%s endheader - -alpha [a-zA-Z] -numeric [0-9] -whitespace [ \t] -newline [\n] -notnewline [^\n] -newlines {newline}+ -%% - - -"ptxasOptions"{notnewline}*{newline} -[1-9]{numeric}* yylval.string_value = strdup(yytext); return DECIMAL; - - -"Fatbin ptx code:"{newline} { - yy_push_state(ptxcode); - yy_push_state(header); - yylval.string_value = strdup(yytext); - return PTXHEADER; -} -"Fatbin elf code:"{newline} { - yy_push_state(elfcode); - yy_push_state(header); - yylval.string_value = strdup(yytext); - return ELFHEADER; -} - /*PTX code tokens*/ -<ptxcode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return PTXLINE; - - /*ELF code tokens*/ -<elfcode>{whitespace}*"code for sm_"{numeric}+{newline} { - BEGIN(sasscode); - yylval.string_value = strdup(yytext); - return SASSLINE; -} -<elfcode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return ELFLINE; - - /*SASS code tokens*/ -<sasscode>{notnewline}*{newline} yylval.string_value = strdup(yytext); return SASSLINE; - - /*Header tokens*/ -<header>[[:alnum:]_]+ yylval.string_value = strdup(yytext); return IDENTIFIER; -<header>"================" return H_SEPARATOR; -<header>"arch = " return H_ARCH; -<header>"code version = " return H_CODEVERSION; -<header>\[{numeric},{numeric}\] return CODEVERSION; -<header>"producer = " return H_PRODUCER; -<header>"host = " return H_HOST; -<header>"compile_size = " return H_COMPILESIZE; -<header>"identifier = " BEGIN(endheader); return H_IDENTIFIER; -<header>"has debug info"{newline} - - /* Looking for the identifier (filename) then the header is done */ -<endheader>[[:alnum:]_\.]+{newline} yylval.string_value = strdup(yytext); yy_pop_state(); return FILENAME; - - -{newline} return NEWLINE; - - /*Reached end of file*/ -<<EOF>> return 0; - - /*No other rule matched. Throw an error*/ -. cuobjdump_error("Invalid token"); - -%% -void cuobjdump_error(const char* message) -{ - printf(" "); printf(message); printf(" near \""); printf(yytext); printf("\""); - printf(" on line "); - char line[5]; sprintf(line, "%i", yylineno); printf(line); - printf("\n"); -} diff --git a/cuobjdump_to_ptxplus/cuobjdump.y b/cuobjdump_to_ptxplus/cuobjdump.y deleted file mode 100644 index 0b20a83..0000000 --- a/cuobjdump_to_ptxplus/cuobjdump.y +++ /dev/null @@ -1,83 +0,0 @@ - /*Yacc file for output of cuobjdump*/ -%{ -#include <stdio.h> - -int yylex(void); -void yyerror(const char*); -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); -int elfserial = 1; -int ptxserial = 1; -FILE *ptxfile; -FILE *elffile; -FILE *sassfile; -char filename [1024]; -%} -%union { - char* string_value; -} -%token <string_value> H_SEPARATOR H_ARCH H_CODEVERSION H_PRODUCER H_HOST H_COMPILESIZE H_IDENTIFIER -%token <string_value> CODEVERSION -%token <string_value> STRING -%token <string_value> FILENAME -%token <string_value> DECIMAL -%token <string_value> PTXHEADER ELFHEADER -%token <string_value> PTXLINE -%token <string_value> ELFLINE -%token <string_value> SASSLINE -%token <string_value> IDENTIFIER -%token <string_value> NEWLINE - -%% - -program : emptylines section - | program section; - -emptylines : emptylines NEWLINE - | ; - -section : PTXHEADER { - addCuobjdumpSection(0); - snprintf(filename, 1024, "_cuobjdump_%d.ptx", ptxserial++); - ptxfile = fopen(filename, "w"); - setCuobjdumpptxfilename(filename); - } headerinfo ptxcode { - fclose(ptxfile); - } - | ELFHEADER { - addCuobjdumpSection(1); - snprintf(filename, 1024, "_cuobjdump_%d.elf", elfserial); - elffile = fopen(filename, "w"); - setCuobjdumpelffilename(filename); - } headerinfo elfcode { - fclose(elffile); - snprintf(filename, 1024, "_cuobjdump_%d.sass", elfserial++); - sassfile = fopen(filename, "w"); - setCuobjdumpsassfilename(filename); - } sasscode { - fclose(sassfile); - }; - -headerinfo : H_SEPARATOR NEWLINE - H_ARCH IDENTIFIER NEWLINE - H_CODEVERSION CODEVERSION NEWLINE - H_PRODUCER IDENTIFIER NEWLINE - H_HOST IDENTIFIER NEWLINE - H_COMPILESIZE IDENTIFIER NEWLINE - H_IDENTIFIER FILENAME {setCuobjdumparch($4); setCuobjdumpidentifier($19);}; - -ptxcode : ptxcode PTXLINE {fprintf(ptxfile, "%s", $2);} - | ; - -elfcode : elfcode ELFLINE {fprintf(elffile, "%s", $2);} - | ; - -sasscode : sasscode SASSLINE {fprintf(sassfile, "%s", $2)} - | ; - - -%% |
