summaryrefslogtreecommitdiff
path: root/libcuda/cuda_runtime_api.cc
diff options
context:
space:
mode:
authorMengchi Zhang <[email protected]>2019-04-21 15:55:21 -0400
committerMengchi Zhang <[email protected]>2019-04-21 20:55:11 -0400
commita7ae218e89859b5a5b8433f57029590b8877fc18 (patch)
tree58ee587623b1b9d5376a160844b95dfe9c6fc5d9 /libcuda/cuda_runtime_api.cc
parent2e4669fdc12f251c60158e8b49d0bf74e5b17bef (diff)
Move cuobjdump parser to reentrant
Signed-off-by: Mengchi Zhang <[email protected]>
Diffstat (limited to 'libcuda/cuda_runtime_api.cc')
-rw-r--r--libcuda/cuda_runtime_api.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/libcuda/cuda_runtime_api.cc b/libcuda/cuda_runtime_api.cc
index 27644b3..ef5abce 100644
--- a/libcuda/cuda_runtime_api.cc
+++ b/libcuda/cuda_runtime_api.cc
@@ -1935,7 +1935,10 @@ void setCuobjdumpsassfilename(const char* filename){
}
(dynamic_cast<cuobjdumpELFSection*>(cuobjdumpSectionList.front()))->setSASSfilename(filename);
}
-extern int cuobjdump_parse();
+typedef void * yyscan_t;
+extern int cuobjdump_lex_init(yyscan_t* scanner);
+extern int cuobjdump_parse(yyscan_t scanner);
+extern int cuobjdump_lex_destroy(yyscan_t scanner);
extern FILE *cuobjdump_in;
//! Return the executable file of the process containing the PTX/SASS code
@@ -2147,7 +2150,10 @@ void extract_code_using_cuobjdump(){
printf("Parsing file %s\n", fname);
cuobjdump_in = fopen(fname, "r");
- cuobjdump_parse();
+ yyscan_t scanner;
+ cuobjdump_lex_init(&scanner);
+ cuobjdump_parse(scanner);
+ cuobjdump_lex_destroy(scanner);
fclose(cuobjdump_in);
printf("Done parsing!!!\n");
} else {
@@ -2196,7 +2202,10 @@ void extract_code_using_cuobjdump(){
std::cout << "Trying to parse " << libcodfn.str() << std::endl;
cuobjdump_in = fopen(libcodfn.str().c_str(), "r");
- cuobjdump_parse();
+ yyscan_t scanner;
+ cuobjdump_lex_init(&scanner);
+ cuobjdump_parse(scanner);
+ cuobjdump_lex_destroy(scanner);
fclose(cuobjdump_in);
std::getline(libsf, line);
}