From 2012a0b24593a13639188136404d651868415e72 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 20 Jun 2021 22:48:49 +0200 Subject: [PATCH 1/6] A step at time: replace comment with readable code --- src/common/MemoryActions.h | 28 ++++++++++++++-------------- src/common/action.h | 8 ++++---- src/detector/determinacy/checker.cc | 10 +++++----- src/detector/determinacy/conflict.h | 2 +- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/common/MemoryActions.h b/src/common/MemoryActions.h index c615c5b..e54dbd6 100644 --- a/src/common/MemoryActions.h +++ b/src/common/MemoryActions.h @@ -25,7 +25,7 @@ class MemoryActions { Action action; int taskId; - ADDRESS addr; // destination address + ADDRESS destination_address; // Default constructor MemoryActions() { @@ -42,10 +42,10 @@ class MemoryActions { // (b) is last write action inline void storeAction(Action & act) { if ( isEmpty || act.isWrite ) { - action = act; - isEmpty = false; - taskId = action.taskId; - addr = action.addr; + action = act; + isEmpty = false; + taskId = action.taskId; + destination_address = action.destination_address; } } @@ -53,16 +53,16 @@ class MemoryActions { INTEGER & val, INTEGER & linNo, INTEGER & funcID, bool isWrite_) { if ( isEmpty || isWrite_) { - action.taskId = taskID; - action.addr = adr; - action.funcId = funcID; - action.value = val; - action.lineNo = linNo; - action.isWrite = isWrite_; + action.taskId = taskID; + action.destination_address = adr; + action.funcId = funcID; + action.value = val; + action.lineNo = linNo; + action.isWrite = isWrite_; - isEmpty = false; - taskId = action.taskId; - addr = action.addr; + isEmpty = false; + taskId = action.taskId; + destination_address = action.destination_address; } } diff --git a/src/common/action.h b/src/common/action.h index 5dde4ad..7cc094b 100644 --- a/src/common/action.h +++ b/src/common/action.h @@ -23,7 +23,7 @@ class Action { public: INTEGER taskId; // task id of writter - ADDRESS addr; // destination address + ADDRESS destination_address; VALUE value; // value written VALUE lineNo; // source-line number INTEGER funcId; // the identifier of corresponding function @@ -34,10 +34,10 @@ class Action { taskId(tskId), value(val), lineNo(ln), funcId(fuId) {} Action(INTEGER tskId, ADDRESS adr, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), addr(adr), value(val), lineNo(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value(val), lineNo(ln), funcId(fuId) { } Action(INTEGER tskId, address adr, lint val, int ln, INTEGER fuId ): - taskId(tskId), addr(adr), value(val), lineNo(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value(val), lineNo(ln), funcId(fuId) { } Action() { } @@ -53,7 +53,7 @@ class Action { void printActionNN(std::ostringstream & buff) { std::string type = " R "; if ( isWrite ) type = " W "; - buff << taskId << type << addr << " " << value + buff << taskId << type << destination_address << " " << value << " " << lineNo << " " << funcId; } diff --git a/src/detector/determinacy/checker.cc b/src/detector/determinacy/checker.cc index e3a59aa..510e431 100644 --- a/src/detector/determinacy/checker.cc +++ b/src/detector/determinacy/checker.cc @@ -147,11 +147,11 @@ void Checker::saveTaskActions( const MemoryActions & taskActions ) { // write in the parallel writes,update and take it forward // 4.2.1 check conflicts with other parallel tasks - auto perAddrActions = writes.find( taskActions.addr ); + auto perAddrActions = writes.find(taskActions.destination_address); if (perAddrActions == writes.end()) {// 1. first action - writes[taskActions.addr] = std::list(); + writes[taskActions.destination_address] = std::list(); } - std::list & AddrActions = writes[taskActions.addr]; + std::list & AddrActions = writes[taskActions.destination_address]; for (auto lastWrt = AddrActions.begin(); lastWrt != AddrActions.end(); lastWrt++) { // actions of same task @@ -185,7 +185,7 @@ void Checker::saveTaskActions( const MemoryActions & taskActions ) { AddrActions.pop_front(); // remove oldest element } - writes[taskActions.addr].push_back( taskActions ); // save + writes[taskActions.destination_address].push_back( taskActions ); // save } // Records the determinacy race warning to the conflicts table. @@ -227,7 +227,7 @@ void Checker::constructMemoryAction(std::stringstream & ssin, Action & action) { std::string tempBuff; ssin >> tempBuff; // address - action.addr = (ADDRESS)stoul(tempBuff, 0, 16); + action.destination_address = (ADDRESS)stoul(tempBuff, 0, 16); ssin >> tempBuff; // value action.value = stol(tempBuff); diff --git a/src/detector/determinacy/conflict.h b/src/detector/determinacy/conflict.h index a092092..9ebb1eb 100644 --- a/src/detector/determinacy/conflict.h +++ b/src/detector/determinacy/conflict.h @@ -29,7 +29,7 @@ class Conflict { Conflict(const Action& curMemAction, const Action& prevMemAction) { action1 = curMemAction; action2 = prevMemAction; - addr = curMemAction.addr; + addr = curMemAction.destination_address; } inline int getTask1Id() { From c107d75493ad45ba4b78abdd90a73a6443f96f68 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 20 Jun 2021 22:55:42 +0200 Subject: [PATCH 2/6] Replace value with value_written --- src/common/MemoryActions.h | 2 +- src/common/action.h | 12 ++++++------ src/detector/determinacy/checker.cc | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/common/MemoryActions.h b/src/common/MemoryActions.h index e54dbd6..1b2f9ae 100644 --- a/src/common/MemoryActions.h +++ b/src/common/MemoryActions.h @@ -56,7 +56,7 @@ class MemoryActions { action.taskId = taskID; action.destination_address = adr; action.funcId = funcID; - action.value = val; + action.value_written = val; action.lineNo = linNo; action.isWrite = isWrite_; diff --git a/src/common/action.h b/src/common/action.h index 7cc094b..f7f02eb 100644 --- a/src/common/action.h +++ b/src/common/action.h @@ -22,22 +22,22 @@ class Action { public: - INTEGER taskId; // task id of writter + INTEGER taskId; // task id of writer ADDRESS destination_address; - VALUE value; // value written + VALUE value_written; VALUE lineNo; // source-line number INTEGER funcId; // the identifier of corresponding function std::string funcName; // source-function name bool isWrite; // true if this action is "write" Action(INTEGER tskId, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), value(val), lineNo(ln), funcId(fuId) {} + taskId(tskId), value_written(val), lineNo(ln), funcId(fuId) {} Action(INTEGER tskId, ADDRESS adr, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), destination_address(adr), value(val), lineNo(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value_written(val), lineNo(ln), funcId(fuId) { } Action(INTEGER tskId, address adr, lint val, int ln, INTEGER fuId ): - taskId(tskId), destination_address(adr), value(val), lineNo(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value_written(val), lineNo(ln), funcId(fuId) { } Action() { } @@ -53,7 +53,7 @@ class Action { void printActionNN(std::ostringstream & buff) { std::string type = " R "; if ( isWrite ) type = " W "; - buff << taskId << type << destination_address << " " << value + buff << taskId << type << destination_address << " " << value_written << " " << lineNo << " " << funcId; } diff --git a/src/detector/determinacy/checker.cc b/src/detector/determinacy/checker.cc index 510e431..7089d6f 100644 --- a/src/detector/determinacy/checker.cc +++ b/src/detector/determinacy/checker.cc @@ -166,7 +166,7 @@ void Checker::saveTaskActions( const MemoryActions & taskActions ) { // check write-write case (different values written) // 4.1 both write to shared memory if ( (taskActions.action.isWrite && lastWrt->action.isWrite) && - (taskActions.action.value != lastWrt->action.value) ) { + (taskActions.action.value_written != lastWrt->action.value_written) ) { // write different values, code for recording errors saveDeterminacyRaceReport( taskActions.action, lastWrt->action ); } else if ((!taskActions.action.isWrite) && lastWrt->action.isWrite) { @@ -230,7 +230,7 @@ void Checker::constructMemoryAction(std::stringstream & ssin, action.destination_address = (ADDRESS)stoul(tempBuff, 0, 16); ssin >> tempBuff; // value - action.value = stol(tempBuff); + action.value_written = stol(tempBuff); ssin >> tempBuff; // line number action.lineNo = stol(tempBuff); From 287d73713310fa8d6d7122fa76facbbfc29aae23 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 20 Jun 2021 23:03:44 +0200 Subject: [PATCH 3/6] Replace lineNo with source_line_num --- src/common/MemoryActions.h | 2 +- src/common/action.h | 10 +++++----- src/detector/commutativity/CommutativityChecker.cc | 4 ++-- src/detector/determinacy/checker.cc | 10 +++++----- test/MemoryActions_gtest.cc | 12 ++++++------ 5 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/common/MemoryActions.h b/src/common/MemoryActions.h index 1b2f9ae..9fcf06d 100644 --- a/src/common/MemoryActions.h +++ b/src/common/MemoryActions.h @@ -57,7 +57,7 @@ class MemoryActions { action.destination_address = adr; action.funcId = funcID; action.value_written = val; - action.lineNo = linNo; + action.source_line_num = linNo; action.isWrite = isWrite_; isEmpty = false; diff --git a/src/common/action.h b/src/common/action.h index f7f02eb..98bc864 100644 --- a/src/common/action.h +++ b/src/common/action.h @@ -25,19 +25,19 @@ class Action { INTEGER taskId; // task id of writer ADDRESS destination_address; VALUE value_written; - VALUE lineNo; // source-line number + VALUE source_line_num; INTEGER funcId; // the identifier of corresponding function std::string funcName; // source-function name bool isWrite; // true if this action is "write" Action(INTEGER tskId, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), value_written(val), lineNo(ln), funcId(fuId) {} + taskId(tskId), value_written(val), source_line_num(ln), funcId(fuId) {} Action(INTEGER tskId, ADDRESS adr, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), destination_address(adr), value_written(val), lineNo(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), funcId(fuId) { } Action(INTEGER tskId, address adr, lint val, int ln, INTEGER fuId ): - taskId(tskId), destination_address(adr), value_written(val), lineNo(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), funcId(fuId) { } Action() { } @@ -54,7 +54,7 @@ class Action { std::string type = " R "; if ( isWrite ) type = " W "; buff << taskId << type << destination_address << " " << value_written - << " " << lineNo << " " << funcId; + << " " << source_line_num << " " << funcId; } }; // end Action diff --git a/src/detector/commutativity/CommutativityChecker.cc b/src/detector/commutativity/CommutativityChecker.cc index d1b55fd..86731df 100644 --- a/src/detector/commutativity/CommutativityChecker.cc +++ b/src/detector/commutativity/CommutativityChecker.cc @@ -62,8 +62,8 @@ bool CommutativityChecker::isCommutative(const Conflict & conflict) { if (conflict.action1.isWrite != conflict.action2.isWrite) { return false; } - INTEGER line1 = conflict.action1.lineNo; - INTEGER line2 = conflict.action2.lineNo; + INTEGER line1 = conflict.action1.source_line_num; + INTEGER line2 = conflict.action2.source_line_num; operationSet.clear(); // clear set of commuting operations // check if line1 operations commute & line2 operations commute diff --git a/src/detector/determinacy/checker.cc b/src/detector/determinacy/checker.cc index 7089d6f..4a29954 100644 --- a/src/detector/determinacy/checker.cc +++ b/src/detector/determinacy/checker.cc @@ -200,8 +200,8 @@ VOID Checker::saveDeterminacyRaceReport(const Action& curMemAction, // code for recording errors std::pair linePair = { - std::min(curMemAction.lineNo, prevMemAction.lineNo), - std::max(curMemAction.lineNo, prevMemAction.lineNo) + std::min(curMemAction.source_line_num, prevMemAction.source_line_num), + std::max(curMemAction.source_line_num, prevMemAction.source_line_num) }; conflictTable[linePair].insert( aConflict ); } @@ -233,7 +233,7 @@ void Checker::constructMemoryAction(std::stringstream & ssin, action.value_written = stol(tempBuff); ssin >> tempBuff; // line number - action.lineNo = stol(tempBuff); + action.source_line_num = stol(tempBuff); ssin >> action.funcId; // get function id @@ -310,9 +310,9 @@ VOID Checker::reportConflicts() { for (auto aConflict : it.second) { std::cout << " " << aConflict.addr << " lines: " << " " << functions.at( aConflict.action1.funcId ) - << ": " << aConflict.action1.lineNo + << ": " << aConflict.action1.source_line_num << ", " << functions.at( aConflict.action2.funcId ) - << ": " << aConflict.action2.lineNo + << ": " << aConflict.action2.source_line_num << " task ids: (" << aConflict.action1.taskId << "[" << (aConflict.action1.isWrite? "W]" : "R]") << " " << aConflict.action2.taskId diff --git a/test/MemoryActions_gtest.cc b/test/MemoryActions_gtest.cc index 3d3d9bf..207f9ca 100644 --- a/test/MemoryActions_gtest.cc +++ b/test/MemoryActions_gtest.cc @@ -31,14 +31,14 @@ TEST_F(TestMemoryActionsFixture, CheckConstructorWithActionArgument) { MemoryActions m_actions(m_act); EXPECT_FALSE(m_actions.isEmpty); EXPECT_EQ(taskId, m_actions.taskId); - EXPECT_EQ(addr, m_actions.addr); + EXPECT_EQ(addr, m_actions.destination_address); } TEST_F(TestMemoryActionsFixture, CheckStoreActionFunction) { MemoryActions m_actions(m_act); EXPECT_FALSE(m_actions.isEmpty); EXPECT_EQ(taskId, m_actions.taskId); - EXPECT_EQ(addr, m_actions.addr); + EXPECT_EQ(addr, m_actions.destination_address); } TEST_F(TestMemoryActionsFixture, CheckStoreActionFunctionWithParamsRead) { @@ -50,14 +50,14 @@ TEST_F(TestMemoryActionsFixture, CheckStoreActionFunctionWithParamsRead) { m_actions.storeAction(ut, addr, value, lineNo, funcId, false); EXPECT_EQ(taskId, m_actions.taskId); - EXPECT_EQ(addr, m_actions.addr); + EXPECT_EQ(addr, m_actions.destination_address); EXPECT_FALSE(m_actions.isEmpty); EXPECT_EQ(taskId, m_actions.action.taskId); - EXPECT_EQ(addr, m_actions.action.addr); + EXPECT_EQ(addr, m_actions.action.destination_address); EXPECT_EQ(funcId, m_actions.action.funcId); - EXPECT_EQ(value, m_actions.action.value); - EXPECT_EQ(lineNo, m_actions.action.lineNo); + EXPECT_EQ(value, m_actions.action.value_written); + EXPECT_EQ(lineNo, m_actions.action.source_line_num); } TEST_F(TestMemoryActionsFixture, CheckHasWrite) { From 7ad4860c161bb5916ee1df2d05cf2851269688a2 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 20 Jun 2021 23:18:43 +0200 Subject: [PATCH 4/6] Rename member variables of action --- src/common/MemoryActions.h | 12 +++++----- src/common/action.h | 16 +++++++------- .../commutativity/CommutativityChecker.cc | 2 +- src/detector/determinacy/checker.cc | 22 +++++++++---------- src/instrumentor/eventlogger/TaskInfo.h | 8 +++---- src/instrumentor/pass/TaskSanitizer.cc | 16 +++++++------- test/MemoryActions_gtest.cc | 12 +++++----- 7 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/common/MemoryActions.h b/src/common/MemoryActions.h index 9fcf06d..dfd3e08 100644 --- a/src/common/MemoryActions.h +++ b/src/common/MemoryActions.h @@ -41,7 +41,7 @@ class MemoryActions { // Stores action if (a) is first action of task, or // (b) is last write action inline void storeAction(Action & act) { - if ( isEmpty || act.isWrite ) { + if ( isEmpty || act.is_write_action ) { action = act; isEmpty = false; taskId = action.taskId; @@ -51,14 +51,14 @@ class MemoryActions { inline void storeAction(uint & taskID, ADDRESS & adr, INTEGER & val, INTEGER & linNo, - INTEGER & funcID, bool isWrite_) { - if ( isEmpty || isWrite_) { + INTEGER & funcID, bool is_write_action_) { + if ( isEmpty || is_write_action_) { action.taskId = taskID; action.destination_address = adr; - action.funcId = funcID; + action.source_func_id = funcID; action.value_written = val; action.source_line_num = linNo; - action.isWrite = isWrite_; + action.is_write_action = is_write_action_; isEmpty = false; taskId = action.taskId; @@ -68,7 +68,7 @@ class MemoryActions { // Returns true if current action is a write bool hasWrite() { - if ( isEmpty || ( !action.isWrite )) { + if ( isEmpty || ( !action.is_write_action )) { return false; } else { return true; diff --git a/src/common/action.h b/src/common/action.h index 98bc864..3862314 100644 --- a/src/common/action.h +++ b/src/common/action.h @@ -26,18 +26,18 @@ class Action { ADDRESS destination_address; VALUE value_written; VALUE source_line_num; - INTEGER funcId; // the identifier of corresponding function - std::string funcName; // source-function name - bool isWrite; // true if this action is "write" + INTEGER source_func_id; + std::string source_func_name; + bool is_write_action; Action(INTEGER tskId, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), value_written(val), source_line_num(ln), funcId(fuId) {} + taskId(tskId), value_written(val), source_line_num(ln), source_func_id(fuId) {} Action(INTEGER tskId, ADDRESS adr, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), source_func_id(fuId) { } Action(INTEGER tskId, address adr, lint val, int ln, INTEGER fuId ): - taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), funcId(fuId) { } + taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), source_func_id(fuId) { } Action() { } @@ -52,9 +52,9 @@ class Action { // It does not append '\n' at the end of. the std::string void printActionNN(std::ostringstream & buff) { std::string type = " R "; - if ( isWrite ) type = " W "; + if ( is_write_action ) type = " W "; buff << taskId << type << destination_address << " " << value_written - << " " << source_line_num << " " << funcId; + << " " << source_line_num << " " << source_func_id; } }; // end Action diff --git a/src/detector/commutativity/CommutativityChecker.cc b/src/detector/commutativity/CommutativityChecker.cc index 86731df..597f1b7 100644 --- a/src/detector/commutativity/CommutativityChecker.cc +++ b/src/detector/commutativity/CommutativityChecker.cc @@ -59,7 +59,7 @@ VOID CommutativityChecker::parseTasksIR(char * IRlogName) { bool CommutativityChecker::isCommutative(const Conflict & conflict) { // skip commutativity check if read-write conflict - if (conflict.action1.isWrite != conflict.action2.isWrite) { + if (conflict.action1.is_write_action != conflict.action2.is_write_action) { return false; } INTEGER line1 = conflict.action1.source_line_num; diff --git a/src/detector/determinacy/checker.cc b/src/detector/determinacy/checker.cc index 4a29954..fc5069c 100644 --- a/src/detector/determinacy/checker.cc +++ b/src/detector/determinacy/checker.cc @@ -116,7 +116,7 @@ void Checker::detectRaceOnMem( action.taskId = taskID; constructMemoryAction(ssin, operation, action); - if (action.funcId == 0) { + if (action.source_func_id == 0) { std::cout << "Warning function Id 0: " << std::endl; exit(0); } @@ -165,16 +165,16 @@ void Checker::saveTaskActions( const MemoryActions & taskActions ) { // check write-write case (different values written) // 4.1 both write to shared memory - if ( (taskActions.action.isWrite && lastWrt->action.isWrite) && + if ( (taskActions.action.is_write_action && lastWrt->action.is_write_action) && (taskActions.action.value_written != lastWrt->action.value_written) ) { // write different values, code for recording errors saveDeterminacyRaceReport( taskActions.action, lastWrt->action ); - } else if ((!taskActions.action.isWrite) && lastWrt->action.isWrite) { + } else if ((!taskActions.action.is_write_action) && lastWrt->action.is_write_action) { // 4.2 read-after-write or write-after-read conflicts // (a) taskActions is read-only and lastWrt is a writer: // code for recording errors saveDeterminacyRaceReport(taskActions.action, lastWrt->action); - } else if ((!lastWrt->action.isWrite) && taskActions.action.isWrite ) { + } else if ((!lastWrt->action.is_write_action) && taskActions.action.is_write_action ) { // (b) lastWrt is read-only and taskActions is a writer: // code for recording errors saveDeterminacyRaceReport(taskActions.action, lastWrt->action); @@ -235,12 +235,12 @@ void Checker::constructMemoryAction(std::stringstream & ssin, ssin >> tempBuff; // line number action.source_line_num = stol(tempBuff); - ssin >> action.funcId; // get function id + ssin >> action.source_func_id; // get function id if (operation == "W") { - action.isWrite = true; + action.is_write_action = true; } else { - action.isWrite = false; + action.is_write_action = false; } #ifdef DEBUG // check if data correctly set std::cout << "Action constructed: "; @@ -309,14 +309,14 @@ VOID Checker::reportConflicts() { for (auto aConflict : it.second) { std::cout << " " << aConflict.addr << " lines: " << " " - << functions.at( aConflict.action1.funcId ) + << functions.at( aConflict.action1.source_func_id ) << ": " << aConflict.action1.source_line_num - << ", " << functions.at( aConflict.action2.funcId ) + << ", " << functions.at( aConflict.action2.source_func_id ) << ": " << aConflict.action2.source_line_num << " task ids: (" << aConflict.action1.taskId - << "[" << (aConflict.action1.isWrite? "W]" : "R]") + << "[" << (aConflict.action1.is_write_action? "W]" : "R]") << " " << aConflict.action2.taskId - << "[" << (aConflict.action2.isWrite? "W])" : "R])") + << "[" << (aConflict.action2.is_write_action? "W])" : "R])") << std::endl; addressCount++; diff --git a/src/instrumentor/eventlogger/TaskInfo.h b/src/instrumentor/eventlogger/TaskInfo.h index 46eda01..649eb63 100644 --- a/src/instrumentor/eventlogger/TaskInfo.h +++ b/src/instrumentor/eventlogger/TaskInfo.h @@ -44,7 +44,7 @@ typedef struct TaskInfo { // Stores the action info as performed by task. The rules for // storing this information are explained in MemoryActions.h inline void saveMemoryAction(Action & action) { - MemoryActions &loc = memoryLocations[action.addr]; + MemoryActions &loc = memoryLocations[action.destination_address]; loc.storeAction( action ); } @@ -55,7 +55,7 @@ typedef struct TaskInfo { MemoryActions & loc = memoryLocations[addr]; if ( !loc.hasWrite() ) { Action action( taskID, addr, 0, lineNo, funcID ); - action.isWrite = false; + action.is_write_action = false; loc.storeAction( action ); } } @@ -67,8 +67,8 @@ typedef struct TaskInfo { INTEGER funcID) { MemoryActions & loc = memoryLocations[addr]; - bool isWrite = true; - loc.storeAction(taskID, addr, value, lineNo, funcID, isWrite); + bool is_write_action = true; + loc.storeAction(taskID, addr, value, lineNo, funcID, is_write_action); } // Prints to ostringstream all memory access actions recorded. diff --git a/src/instrumentor/pass/TaskSanitizer.cc b/src/instrumentor/pass/TaskSanitizer.cc index d62e71d..143dd0d 100644 --- a/src/instrumentor/pass/TaskSanitizer.cc +++ b/src/instrumentor/pass/TaskSanitizer.cc @@ -522,8 +522,8 @@ bool TaskSanitizer::runOnFunction(llvm::Function &F) { bool TaskSanitizer::instrumentLoadOrStore(llvm::Instruction *I, const llvm::DataLayout &DL) { llvm::IRBuilder<> IRB(I); - bool IsWrite = llvm::isa(*I); - llvm::Value *Addr = IsWrite + bool is_write_action = llvm::isa(*I); + llvm::Value *Addr = is_write_action ? llvm::cast(I)->getPointerOperand() : llvm::cast(I)->getPointerOperand(); @@ -536,7 +536,7 @@ bool TaskSanitizer::instrumentLoadOrStore(llvm::Instruction *I, int Idx = getMemoryAccessFuncIndex(Addr, DL); if (Idx < 0) return false; - if (IsWrite && isVtableAccess(I)) { + if (is_write_action && isVtableAccess(I)) { llvm::dbgs() << " VPTR : " << *I << "\n"; llvm::Value *StoredValue = llvm::cast(I)->getValueOperand(); // StoredValue may be a std::vector type if we are storing several vptrs at once. @@ -553,23 +553,23 @@ bool TaskSanitizer::instrumentLoadOrStore(llvm::Instruction *I, IRB.CreatePointerCast(StoredValue, IRB.getInt8PtrTy())}); return true; } - if (!IsWrite && isVtableAccess(I)) { + if (!is_write_action && isVtableAccess(I)) { IRB.CreateCall(TsanVptrLoad, IRB.CreatePointerCast(Addr, IRB.getInt8PtrTy())); return true; } - const unsigned Alignment = IsWrite + const unsigned Alignment = is_write_action ? llvm::cast(I)->getAlignment() : llvm::cast(I)->getAlignment(); llvm::Type *OrigTy = llvm::cast(Addr->getType())->getElementType(); const uint32_t TypeSize = DL.getTypeStoreSizeInBits(OrigTy); llvm::Value *OnAccessFunc = nullptr; if (Alignment == 0 || Alignment >= 8 || (Alignment % (TypeSize / 8)) == 0) - OnAccessFunc = IsWrite ? TsanWrite[Idx] : TsanRead[Idx]; + OnAccessFunc = is_write_action ? TsanWrite[Idx] : TsanRead[Idx]; else - OnAccessFunc = IsWrite ? TsanUnalignedWrite[Idx] : TsanUnalignedRead[Idx]; + OnAccessFunc = is_write_action ? TsanUnalignedWrite[Idx] : TsanUnalignedRead[Idx]; - if (IsWrite) { + if (is_write_action) { llvm::Value *Val = llvm::cast(I)->getValueOperand(); if ( Val->getType()->isFloatTy() ) OnAccessFunc = TaskSanitizer_MemWriteFloat; diff --git a/test/MemoryActions_gtest.cc b/test/MemoryActions_gtest.cc index 207f9ca..3dc391f 100644 --- a/test/MemoryActions_gtest.cc +++ b/test/MemoryActions_gtest.cc @@ -13,7 +13,7 @@ class TestMemoryActionsFixture : public ::testing::Test { VALUE lineNo = 100; INTEGER funcId = 6; std::string funcName = "some_function"; - bool isWrite = true; + bool is_write_action = true; Action m_act; @@ -55,7 +55,7 @@ TEST_F(TestMemoryActionsFixture, CheckStoreActionFunctionWithParamsRead) { EXPECT_EQ(taskId, m_actions.action.taskId); EXPECT_EQ(addr, m_actions.action.destination_address); - EXPECT_EQ(funcId, m_actions.action.funcId); + EXPECT_EQ(funcId, m_actions.action.source_func_id); EXPECT_EQ(value, m_actions.action.value_written); EXPECT_EQ(lineNo, m_actions.action.source_line_num); } @@ -70,12 +70,12 @@ TEST_F(TestMemoryActionsFixture, CheckHasWrite) { EXPECT_FALSE(m_actions.hasWrite()); // Setting action to write - m_actions.action.isWrite = true; + m_actions.action.is_write_action = true; EXPECT_TRUE(m_actions.hasWrite()); // adding a write action - m_actions.action.isWrite = false; - m_act.isWrite = true; + m_actions.action.is_write_action = false; + m_act.is_write_action = true; m_actions.storeAction(m_act); EXPECT_TRUE(m_actions.hasWrite()); } @@ -88,7 +88,7 @@ TEST_F(TestMemoryActionsFixture, ChecPrintEmptyAction) { } TEST_F(TestMemoryActionsFixture, ChecPrintExistingAction) { - m_act.isWrite = true; + m_act.is_write_action = true; MemoryActions m_actions(m_act); std::ostringstream os; m_actions.printActions(os); From 80c733873ab3065446fd9e022bf91c3c5df1f248 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 20 Jun 2021 23:25:32 +0200 Subject: [PATCH 5/6] replace task_id name with more elaborate version --- src/common/MemoryActions.h | 8 ++++---- src/common/action.h | 10 +++++----- src/detector/determinacy/checker.cc | 14 +++++++------- src/detector/determinacy/conflict.h | 4 ++-- test/MemoryActions_gtest.cc | 12 ++++++------ 5 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/common/MemoryActions.h b/src/common/MemoryActions.h index dfd3e08..15b1d18 100644 --- a/src/common/MemoryActions.h +++ b/src/common/MemoryActions.h @@ -24,7 +24,7 @@ class MemoryActions { Action action; - int taskId; + int accessing_task_id; ADDRESS destination_address; // Default constructor @@ -44,7 +44,7 @@ class MemoryActions { if ( isEmpty || act.is_write_action ) { action = act; isEmpty = false; - taskId = action.taskId; + accessing_task_id = action.accessing_task_id; destination_address = action.destination_address; } } @@ -53,7 +53,7 @@ class MemoryActions { INTEGER & val, INTEGER & linNo, INTEGER & funcID, bool is_write_action_) { if ( isEmpty || is_write_action_) { - action.taskId = taskID; + action.accessing_task_id = taskID; action.destination_address = adr; action.source_func_id = funcID; action.value_written = val; @@ -61,7 +61,7 @@ class MemoryActions { action.is_write_action = is_write_action_; isEmpty = false; - taskId = action.taskId; + accessing_task_id = action.accessing_task_id; destination_address = action.destination_address; } } diff --git a/src/common/action.h b/src/common/action.h index 3862314..6da3341 100644 --- a/src/common/action.h +++ b/src/common/action.h @@ -22,7 +22,7 @@ class Action { public: - INTEGER taskId; // task id of writer + INTEGER accessing_task_id; ADDRESS destination_address; VALUE value_written; VALUE source_line_num; @@ -31,13 +31,13 @@ class Action { bool is_write_action; Action(INTEGER tskId, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), value_written(val), source_line_num(ln), source_func_id(fuId) {} + accessing_task_id(tskId), value_written(val), source_line_num(ln), source_func_id(fuId) {} Action(INTEGER tskId, ADDRESS adr, VALUE val, VALUE ln, INTEGER fuId): - taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), source_func_id(fuId) { } + accessing_task_id(tskId), destination_address(adr), value_written(val), source_line_num(ln), source_func_id(fuId) { } Action(INTEGER tskId, address adr, lint val, int ln, INTEGER fuId ): - taskId(tskId), destination_address(adr), value_written(val), source_line_num(ln), source_func_id(fuId) { } + accessing_task_id(tskId), destination_address(adr), value_written(val), source_line_num(ln), source_func_id(fuId) { } Action() { } @@ -53,7 +53,7 @@ class Action { void printActionNN(std::ostringstream & buff) { std::string type = " R "; if ( is_write_action ) type = " W "; - buff << taskId << type << destination_address << " " << value_written + buff << accessing_task_id << type << destination_address << " " << value_written << " " << source_line_num << " " << source_func_id; } diff --git a/src/detector/determinacy/checker.cc b/src/detector/determinacy/checker.cc index fc5069c..5153d80 100644 --- a/src/detector/determinacy/checker.cc +++ b/src/detector/determinacy/checker.cc @@ -113,7 +113,7 @@ void Checker::detectRaceOnMem( std::stringstream & ssin) { Action action; - action.taskId = taskID; + action.accessing_task_id = taskID; constructMemoryAction(ssin, operation, action); if (action.source_func_id == 0) { @@ -127,7 +127,7 @@ void Checker::detectRaceOnMem( ssin >> separator; ssin >> taskID; Action lastWAction; - lastWAction.taskId = taskID; + lastWAction.accessing_task_id = taskID; ssin >> operation; constructMemoryAction(ssin, operation, lastWAction); memActions.storeAction( lastWAction ); // save second action @@ -155,10 +155,10 @@ void Checker::saveTaskActions( const MemoryActions & taskActions ) { for (auto lastWrt = AddrActions.begin(); lastWrt != AddrActions.end(); lastWrt++) { // actions of same task - if (taskActions.taskId == lastWrt->taskId) continue; + if (taskActions.accessing_task_id == lastWrt->accessing_task_id) continue; - auto HBfound = serial_bags[taskActions.taskId]->HB.find(lastWrt->taskId); - auto end = serial_bags[taskActions.taskId]->HB.end(); + auto HBfound = serial_bags[taskActions.accessing_task_id]->HB.find(lastWrt->accessing_task_id); + auto end = serial_bags[taskActions.accessing_task_id]->HB.end(); if (HBfound != end) continue; // 3. there's happens-before // 4. parallel, possible race! ((check race)) @@ -313,9 +313,9 @@ VOID Checker::reportConflicts() { << ": " << aConflict.action1.source_line_num << ", " << functions.at( aConflict.action2.source_func_id ) << ": " << aConflict.action2.source_line_num - << " task ids: (" << aConflict.action1.taskId + << " task ids: (" << aConflict.action1.accessing_task_id << "[" << (aConflict.action1.is_write_action? "W]" : "R]") - << " " << aConflict.action2.taskId + << " " << aConflict.action2.accessing_task_id << "[" << (aConflict.action2.is_write_action? "W])" : "R])") << std::endl; addressCount++; diff --git a/src/detector/determinacy/conflict.h b/src/detector/determinacy/conflict.h index 9ebb1eb..c098288 100644 --- a/src/detector/determinacy/conflict.h +++ b/src/detector/determinacy/conflict.h @@ -33,11 +33,11 @@ class Conflict { } inline int getTask1Id() { - return action1.taskId; + return action1.accessing_task_id; } inline int getTask2Id() { - return action2.taskId; + return action2.accessing_task_id; } bool operator<(const Conflict &RHS) const { diff --git a/test/MemoryActions_gtest.cc b/test/MemoryActions_gtest.cc index 3dc391f..69e267c 100644 --- a/test/MemoryActions_gtest.cc +++ b/test/MemoryActions_gtest.cc @@ -18,7 +18,7 @@ class TestMemoryActionsFixture : public ::testing::Test { Action m_act; virtual void SetUp() { - m_act = Action(taskId, addr, value, lineNo, funcId); + m_act = Action(accessing_task_id, addr, value, lineNo, funcId); } }; @@ -30,14 +30,14 @@ TEST_F(TestMemoryActionsFixture, CheckConstructorIsEmptyTrue) { TEST_F(TestMemoryActionsFixture, CheckConstructorWithActionArgument) { MemoryActions m_actions(m_act); EXPECT_FALSE(m_actions.isEmpty); - EXPECT_EQ(taskId, m_actions.taskId); + EXPECT_EQ(accessing_task_id, m_actions.accessing_task_id); EXPECT_EQ(addr, m_actions.destination_address); } TEST_F(TestMemoryActionsFixture, CheckStoreActionFunction) { MemoryActions m_actions(m_act); EXPECT_FALSE(m_actions.isEmpty); - EXPECT_EQ(taskId, m_actions.taskId); + EXPECT_EQ(accessing_task_id, m_actions.accessing_task_id); EXPECT_EQ(addr, m_actions.destination_address); } @@ -46,14 +46,14 @@ TEST_F(TestMemoryActionsFixture, CheckStoreActionFunctionWithParamsRead) { EXPECT_TRUE(m_actions.isEmpty); // store - uint ut = taskId; + uint ut = accessing_task_id; m_actions.storeAction(ut, addr, value, lineNo, funcId, false); - EXPECT_EQ(taskId, m_actions.taskId); + EXPECT_EQ(accessing_task_id, m_actions.accessing_task_id); EXPECT_EQ(addr, m_actions.destination_address); EXPECT_FALSE(m_actions.isEmpty); - EXPECT_EQ(taskId, m_actions.action.taskId); + EXPECT_EQ(accessing_task_id, m_actions.action.accessing_task_id); EXPECT_EQ(addr, m_actions.action.destination_address); EXPECT_EQ(funcId, m_actions.action.source_func_id); EXPECT_EQ(value, m_actions.action.value_written); From 8d8c8ae2f3291b7b99728f9819427a708abd70f1 Mon Sep 17 00:00:00 2001 From: "Hassan @Ubuntu" Date: Sun, 20 Jun 2021 23:35:34 +0200 Subject: [PATCH 6/6] Rename line number for readability --- src/common/action.h | 6 +- src/common/instruction.h | 4 +- .../commutativity/CommutativityChecker.cc | 10 +-- .../commutativity/CriticalSectionBody.h | 10 +-- src/detector/commutativity/CriticalSections.h | 12 ++-- src/functionengine/FunctionEngine.h | 2 +- .../callbacks/InstrumentationCallbacks.cc | 64 +++++++++---------- .../callbacks/InstrumentationCallbacks.h | 28 ++++---- src/instrumentor/eventlogger/Logger.h | 12 ++-- src/instrumentor/eventlogger/TaskInfo.h | 8 +-- src/instrumentor/pass/IIRlogger.h | 12 ++-- src/unittests/CommutativityUnittests.cc | 4 +- test/MemoryActions_gtest.cc | 18 +++--- 13 files changed, 95 insertions(+), 95 deletions(-) diff --git a/src/common/action.h b/src/common/action.h index 6da3341..e898354 100644 --- a/src/common/action.h +++ b/src/common/action.h @@ -51,9 +51,9 @@ class Action { // Generates std::string representation of the action and stores in "buff". // It does not append '\n' at the end of. the std::string void printActionNN(std::ostringstream & buff) { - std::string type = " R "; - if ( is_write_action ) type = " W "; - buff << accessing_task_id << type << destination_address << " " << value_written + std::string action_type = " R "; + if ( is_write_action ) action_type = " W "; + buff << accessing_task_id << action_type << destination_address << " " << value_written << " " << source_line_num << " " << source_func_id; } diff --git a/src/common/instruction.h b/src/common/instruction.h index e539658..7903c6e 100644 --- a/src/common/instruction.h +++ b/src/common/instruction.h @@ -20,7 +20,7 @@ class Instruction { public: - INTEGER lineNo; + INTEGER source_line_num; std::string destination; std::string type; OPERATION oper; @@ -128,7 +128,7 @@ class Instruction { } void print() { - std::cout << "LineNo: " << lineNo + std::cout << "source_line_num: " << source_line_num << ", type: " << type << ", oper: " << OperRepresentation(oper) << ", dest: " << destination diff --git a/src/detector/commutativity/CommutativityChecker.cc b/src/detector/commutativity/CommutativityChecker.cc index 597f1b7..237a666 100644 --- a/src/detector/commutativity/CommutativityChecker.cc +++ b/src/detector/commutativity/CommutativityChecker.cc @@ -29,14 +29,14 @@ VOID CommutativityChecker::parseTasksIR(char * IRlogName) { sttmt = Instruction::trim( sttmt ); // trim spaces if ( isValidStatement(sttmt) ) { // check if normal statement - INTEGER lineNo = getLineNumber( sttmt ); + INTEGER source_line_num = getLineNumber( sttmt ); // skip instruction with line # 0: args to task body - if (lineNo <= 0) continue; + if (source_line_num <= 0) continue; sttmt = sttmt.substr(sttmt.find_first_not_of(' ', sttmt.find_first_of(' '))); Instruction instr( sttmt ); - instr.lineNo = lineNo; + instr.source_line_num = source_line_num; currentTask.push_back(instr); continue; } // if @@ -87,8 +87,8 @@ BOOL CommutativityChecker::involveSimpleOperations( INTEGER index = -1; for (auto i = taskBody->begin(); i != taskBody->end(); i++) { - if (i->lineNo > lineNumber) break; - if (i->lineNo == lineNumber) instr = *i; + if (i->source_line_num > lineNumber) break; + if (i->source_line_num == lineNumber) instr = *i; index++; } diff --git a/src/detector/commutativity/CriticalSectionBody.h b/src/detector/commutativity/CriticalSectionBody.h index 27eec35..9015500 100644 --- a/src/detector/commutativity/CriticalSectionBody.h +++ b/src/detector/commutativity/CriticalSectionBody.h @@ -36,16 +36,16 @@ class CriticalSectionBody { CriticalSectionBody(std::vector _body) { if( _body.size() > 0 ) { - setStartLineNo( _body.front().lineNo ); - setEndLineNo ( _body.back().lineNo ); + setStartLineNo( _body.front().source_line_num ); + setEndLineNo ( _body.back().source_line_num ); body = _body; } else { throw "Critical section must contain at least one statement"; } } - void setStartLineNo(int lineNo) { startLineNo = lineNo; } - void setEndLineNo(int lineNo) { - endLineNo = lineNo; + void setStartLineNo(int source_line_num) { startLineNo = source_line_num; } + void setEndLineNo(int source_line_num) { + endLineNo = source_line_num; assert(endLineNo >= startLineNo); } int getStartLineNo() { return startLineNo; } diff --git a/src/detector/commutativity/CriticalSections.h b/src/detector/commutativity/CriticalSections.h index eb6ccd2..c9255c4 100644 --- a/src/detector/commutativity/CriticalSections.h +++ b/src/detector/commutativity/CriticalSections.h @@ -39,19 +39,19 @@ class CriticalSections { size_t getSize() { return sections.size(); } - CriticalSectionBody *find(int lineNo) { + CriticalSectionBody *find(int source_line_num) { if (0 == sections.size()) return end(); for (auto &cr : sections) { - if (cr.second.getStartLineNo() <= lineNo - && lineNo <= cr.second.getEndLineNo()) { + if (cr.second.getStartLineNo() <= source_line_num + && source_line_num <= cr.second.getEndLineNo()) { return &cr.second; } } - auto start = sections.lower_bound(lineNo); + auto start = sections.lower_bound(source_line_num); if (start == sections.end()) return end(); - if ( lineNo >= start->second.getStartLineNo() && - lineNo <= start->second.getEndLineNo() ) { + if ( source_line_num >= start->second.getStartLineNo() && + source_line_num <= start->second.getEndLineNo() ) { return &start->second; } diff --git a/src/functionengine/FunctionEngine.h b/src/functionengine/FunctionEngine.h index 2e89af5..fc77d5e 100644 --- a/src/functionengine/FunctionEngine.h +++ b/src/functionengine/FunctionEngine.h @@ -23,7 +23,7 @@ class FunctionEngine { public: - void pushFunction(std::string name, unsigned taskID, int lineNo); + void pushFunction(std::string name, unsigned taskID, int source_line_num); void popFunction(std::string name, unsigned taskID); CallStack &getStack(unsigned taskID); void removeStack(unsigned taskID); diff --git a/src/instrumentor/callbacks/InstrumentationCallbacks.cc b/src/instrumentor/callbacks/InstrumentationCallbacks.cc index 0e364c7..c2f5753 100644 --- a/src/instrumentor/callbacks/InstrumentationCallbacks.cc +++ b/src/instrumentor/callbacks/InstrumentationCallbacks.cc @@ -68,23 +68,23 @@ static TaskInfo * getTaskInfo(int * _type = NULL) { inline void INS_MemRead( address addr, ulong size, - int lineNo, + int source_line_num, address funcName) { - if (!lineNo) return; + if (!source_line_num) return; TaskInfo * taskInfo = getTaskInfo(); //lint value = getMemoryValue( addr, size ); //uint threadID = (uint)pthread_self(); if ( taskInfo && taskInfo->active ) { - INS::Read(*taskInfo, addr, lineNo, (char*)funcName); + INS::Read(*taskInfo, addr, source_line_num, (char*)funcName); #ifdef DEBUG std::stringstream ss; ss << std::hex << addr; PRINT_DEBUG("READ: addr: " + ss.str() + " taskID: " + std::to_string(taskInfo->taskID) + - " line no: " + std::to_string(lineNo)); + " line no: " + std::to_string(source_line_num)); #endif } } @@ -93,23 +93,23 @@ inline void INS_MemRead( inline void INS_MemWrite( address addr, lint value, - int lineNo, + int source_line_num, address funcName ) { - if (!lineNo) return; + if (!source_line_num) return; TaskInfo * taskInfo = getTaskInfo(); //uint threadID = (uint)pthread_self(); if ( taskInfo && taskInfo->active ) { - INS::Write(*taskInfo, addr, (lint)value, lineNo, (char*)funcName ); + INS::Write(*taskInfo, addr, (lint)value, source_line_num, (char*)funcName ); #ifdef DEBUG std::stringstream ss; ss << std::hex << addr; PRINT_DEBUG("= WRITE: addr: " + ss.str() + ", value: " + std::to_string((lint)value) + ", taskID: " + std::to_string(taskInfo->taskID) + - ", line number: " + std::to_string(lineNo) + + ", line number: " + std::to_string(source_line_num) + ", func name: " + std::string((char*)funcName)); #endif } @@ -119,9 +119,9 @@ inline void INS_MemWrite( void __tasksan_write_float( address addr, float value, - int lineNo, + int source_line_num, address funcName) { - INS_MemWrite(addr, (lint)value, lineNo, funcName); + INS_MemWrite(addr, (lint)value, source_line_num, funcName); } void __tasksan_register_iir_file(void * fileName) { @@ -132,52 +132,52 @@ void __tasksan_register_iir_file(void * fileName) { void __tasksan_write_double( address addr, double value, - int lineNo, + int source_line_num, address funcName) { - INS_MemWrite(addr, (lint)value, lineNo, funcName); + INS_MemWrite(addr, (lint)value, source_line_num, funcName); } void __tasksan_flush_memory() { PRINT_DEBUG(" TaskSanitizer: flush memory"); } -void __tasksan_read1(void *addr, int lineNo, address funcName) { - INS_MemRead(addr, 1, lineNo, funcName); +void __tasksan_read1(void *addr, int source_line_num, address funcName) { + INS_MemRead(addr, 1, source_line_num, funcName); } -void __tasksan_read2(void *addr, int lineNo, address funcName) { - INS_MemRead(addr, 2, lineNo, funcName); +void __tasksan_read2(void *addr, int source_line_num, address funcName) { + INS_MemRead(addr, 2, source_line_num, funcName); } -void __tasksan_read4(void *addr, int lineNo, address funcName) { - INS_MemRead(addr, 4, lineNo, funcName); +void __tasksan_read4(void *addr, int source_line_num, address funcName) { + INS_MemRead(addr, 4, source_line_num, funcName); } -void __tasksan_read8(void *addr, int lineNo, address funcName) { - INS_MemRead( addr, 8, lineNo, funcName ); +void __tasksan_read8(void *addr, int source_line_num, address funcName) { + INS_MemRead( addr, 8, source_line_num, funcName ); } -void __tasksan_read16(void *addr, int lineNo, address funcName) { - INS_MemRead( addr, 16, lineNo, funcName ); +void __tasksan_read16(void *addr, int source_line_num, address funcName) { + INS_MemRead( addr, 16, source_line_num, funcName ); } -void __tasksan_write1(void *addr, lint value, int lineNo, address funcName) { - INS_MemWrite((address)addr, value, lineNo, funcName); +void __tasksan_write1(void *addr, lint value, int source_line_num, address funcName) { + INS_MemWrite((address)addr, value, source_line_num, funcName); } -void __tasksan_write2(void *addr, lint value, int lineNo, address funcName) { - INS_MemWrite((address)addr, value, lineNo, funcName); +void __tasksan_write2(void *addr, lint value, int source_line_num, address funcName) { + INS_MemWrite((address)addr, value, source_line_num, funcName); } -void __tasksan_write4(void *addr, lint value, int lineNo, address funcName) { - INS_MemWrite((address)addr, value, lineNo, funcName); +void __tasksan_write4(void *addr, lint value, int source_line_num, address funcName) { + INS_MemWrite((address)addr, value, source_line_num, funcName); } -void __tasksan_write8(void *addr, lint value, int lineNo, address funcName) { - INS_MemWrite((address)addr, value, lineNo, funcName); +void __tasksan_write8(void *addr, lint value, int source_line_num, address funcName) { + INS_MemWrite((address)addr, value, source_line_num, funcName); } -void __tasksan_write16(void *addr, lint value, int lineNo, address funcName) { - INS_MemWrite((address)addr, value, lineNo, funcName); +void __tasksan_write16(void *addr, lint value, int source_line_num, address funcName) { + INS_MemWrite((address)addr, value, source_line_num, funcName); } void __tasksan_unaligned_read2(const void *addr) { diff --git a/src/instrumentor/callbacks/InstrumentationCallbacks.h b/src/instrumentor/callbacks/InstrumentationCallbacks.h index fc34627..85de790 100644 --- a/src/instrumentor/callbacks/InstrumentationCallbacks.h +++ b/src/instrumentor/callbacks/InstrumentationCallbacks.h @@ -42,9 +42,9 @@ extern "C" { unsigned long size); // callbacks for memory access, race detection - void INS_MemRead8(void *addr, int lineNo, void *fName); - void INS_MemRead4(void *addr, int lineNo, void *fName); - void INS_MemRead1(void *addr, int lineNo, void *fName); + void INS_MemRead8(void *addr, int source_line_num, void *fName); + void INS_MemRead4(void *addr, int source_line_num, void *fName); + void INS_MemRead1(void *addr, int source_line_num, void *fName); void INS_MemWrite8(void *addr, long int v, int lnNo, void *fName); void INS_MemWrite4(void *addr, long int v, int lnNo, void *fName); void INS_MemWrite1(void *addr, long int v, int lnNo, void *fName); @@ -74,17 +74,17 @@ extern "C" { void __tasksan_flush_memory(); - void __tasksan_read1(void *addr, int lineNo, address funcName); - void __tasksan_read2(void *addr, int lineNo, address funcName); - void __tasksan_read4(void *addr, int lineNo, address funcName); - void __tasksan_read8(void *addr, int lineNo, address funcName); - void __tasksan_read16(void *addr, int lineNo, address funcName); - - void __tasksan_write1(void *addr, long int value, int lineNo, address funcName); - void __tasksan_write2(void *addr, long int value, int lineNo, address funcName); - void __tasksan_write4(void *addr, long int value, int lineNo, address funcName); - void __tasksan_write8(void *addr, long int value, int lineNo, address funcName); - void __tasksan_write16(void *addr, long int value, int lineNo, address funcName); + void __tasksan_read1(void *addr, int source_line_num, address funcName); + void __tasksan_read2(void *addr, int source_line_num, address funcName); + void __tasksan_read4(void *addr, int source_line_num, address funcName); + void __tasksan_read8(void *addr, int source_line_num, address funcName); + void __tasksan_read16(void *addr, int source_line_num, address funcName); + + void __tasksan_write1(void *addr, long int value, int source_line_num, address funcName); + void __tasksan_write2(void *addr, long int value, int source_line_num, address funcName); + void __tasksan_write4(void *addr, long int value, int source_line_num, address funcName); + void __tasksan_write8(void *addr, long int value, int source_line_num, address funcName); + void __tasksan_write16(void *addr, long int value, int source_line_num, address funcName); void __tasksan_unaligned_read2(const void *addr); void __tasksan_unaligned_read4(const void *addr); diff --git a/src/instrumentor/eventlogger/Logger.h b/src/instrumentor/eventlogger/Logger.h index 3cd19aa..85e5833 100644 --- a/src/instrumentor/eventlogger/Logger.h +++ b/src/instrumentor/eventlogger/Logger.h @@ -182,7 +182,7 @@ class INS { // provides the address of memory a task reads from static inline VOID Read( TaskInfo & task, - ADDRESS addr, INTEGER lineNo, STRING funcName ) { + ADDRESS addr, INTEGER source_line_num, STRING funcName ) { INTEGER funcID = task.getFunctionId( funcName ); // register function if not registered yet @@ -191,9 +191,9 @@ class INS { task.registerFunction( funcName, funcID ); } - //task.saveReadAction(addr, lineNo, funcID); + //task.saveReadAction(addr, source_line_num, funcID); std::stringstream ssin(std::to_string((VALUE)addr) + " 0 " + - std::to_string(lineNo) + " " + std::to_string(funcID)); + std::to_string(source_line_num) + " " + std::to_string(funcID)); guardLock.lock(); onlineChecker.detectRaceOnMem(task.taskID, "R", ssin); @@ -202,7 +202,7 @@ class INS { // stores a write action static inline VOID Write(TaskInfo & task, ADDRESS addr, - INTEGER value, INTEGER lineNo, STRING funcName) { + INTEGER value, INTEGER source_line_num, STRING funcName) { INTEGER funcID = task.getFunctionId( funcName ); @@ -212,9 +212,9 @@ class INS { task.registerFunction( funcName, funcID ); } - //task.saveWriteAction(addr, value, lineNo, funcID); + //task.saveWriteAction(addr, value, source_line_num, funcID); std::stringstream ssin(std::to_string((VALUE)addr) + " " + - std::to_string(value) + " " + std::to_string(lineNo) + + std::to_string(value) + " " + std::to_string(source_line_num) + " " + std::to_string(funcID)); guardLock.lock(); diff --git a/src/instrumentor/eventlogger/TaskInfo.h b/src/instrumentor/eventlogger/TaskInfo.h index 649eb63..4bccceb 100644 --- a/src/instrumentor/eventlogger/TaskInfo.h +++ b/src/instrumentor/eventlogger/TaskInfo.h @@ -49,12 +49,12 @@ typedef struct TaskInfo { } inline void saveReadAction(ADDRESS & addr, - INTEGER & lineNo, + INTEGER & source_line_num, const INTEGER funcID) { MemoryActions & loc = memoryLocations[addr]; if ( !loc.hasWrite() ) { - Action action( taskID, addr, 0, lineNo, funcID ); + Action action( taskID, addr, 0, source_line_num, funcID ); action.is_write_action = false; loc.storeAction( action ); } @@ -63,12 +63,12 @@ typedef struct TaskInfo { inline void saveWriteAction( ADDRESS addr, INTEGER value, - INTEGER lineNo, + INTEGER source_line_num, INTEGER funcID) { MemoryActions & loc = memoryLocations[addr]; bool is_write_action = true; - loc.storeAction(taskID, addr, value, lineNo, funcID, is_write_action); + loc.storeAction(taskID, addr, value, source_line_num, funcID, is_write_action); } // Prints to ostringstream all memory access actions recorded. diff --git a/src/instrumentor/pass/IIRlogger.h b/src/instrumentor/pass/IIRlogger.h index bb6b3b7..06967e6 100644 --- a/src/instrumentor/pass/IIRlogger.h +++ b/src/instrumentor/pass/IIRlogger.h @@ -58,12 +58,12 @@ namespace IIRlog { // // This function is used in logging instructions which // are in critical sections of a program. - void LogNewIIRcode(int lineNo, llvm::Instruction& IIRcode ) { - //errs() << lineNo << ": " << IIRcode.str() << "\n"; + void LogNewIIRcode(int source_line_num, llvm::Instruction& IIRcode ) { + //errs() << source_line_num << ": " << IIRcode.str() << "\n"; std::string tempBuf; llvm::raw_string_ostream rso(tempBuf); IIRcode.print(rso); - logFile << lineNo << ": " << tempBuf << std::endl; + logFile << source_line_num << ": " << tempBuf << std::endl; } // Returns signature (function name) of call being made @@ -135,11 +135,11 @@ namespace IIRlog { IIRlog::SaveToLogFile( tasksan::getEndCriticalSignature() ); } } else if (in_critical_section > 0) { // in critical section - unsigned lineNo = 0; + unsigned source_line_num = 0; if (auto Loc = Inst.getDebugLoc()) { - lineNo = Loc->getLine(); + source_line_num = Loc->getLine(); } - IIRlog::LogNewIIRcode(lineNo, Inst); + IIRlog::LogNewIIRcode(source_line_num, Inst); } } } diff --git a/src/unittests/CommutativityUnittests.cc b/src/unittests/CommutativityUnittests.cc index 449129c..4cd2756 100644 --- a/src/unittests/CommutativityUnittests.cc +++ b/src/unittests/CommutativityUnittests.cc @@ -21,9 +21,9 @@ int main() { // first body Instruction instr1; - instr1.lineNo = 3; + instr1.source_line_num = 3; Instruction instr2; - instr2.lineNo = 6; + instr2.source_line_num = 6; std::vector body = {instr1, instr2}; tasksan::commute::CriticalSectionBody body1(body); body1.setStartLineNo(3); diff --git a/test/MemoryActions_gtest.cc b/test/MemoryActions_gtest.cc index 69e267c..f7cc6f0 100644 --- a/test/MemoryActions_gtest.cc +++ b/test/MemoryActions_gtest.cc @@ -10,7 +10,7 @@ class TestMemoryActionsFixture : public ::testing::Test { INTEGER taskId = 123; ADDRESS addr = 0x033; VALUE value = 42; - VALUE lineNo = 100; + VALUE source_line_num = 100; INTEGER funcId = 6; std::string funcName = "some_function"; bool is_write_action = true; @@ -18,7 +18,7 @@ class TestMemoryActionsFixture : public ::testing::Test { Action m_act; virtual void SetUp() { - m_act = Action(accessing_task_id, addr, value, lineNo, funcId); + m_act = Action(taskId, addr, value, source_line_num, funcId); } }; @@ -30,14 +30,14 @@ TEST_F(TestMemoryActionsFixture, CheckConstructorIsEmptyTrue) { TEST_F(TestMemoryActionsFixture, CheckConstructorWithActionArgument) { MemoryActions m_actions(m_act); EXPECT_FALSE(m_actions.isEmpty); - EXPECT_EQ(accessing_task_id, m_actions.accessing_task_id); + EXPECT_EQ(taskId, m_actions.accessing_task_id); EXPECT_EQ(addr, m_actions.destination_address); } TEST_F(TestMemoryActionsFixture, CheckStoreActionFunction) { MemoryActions m_actions(m_act); EXPECT_FALSE(m_actions.isEmpty); - EXPECT_EQ(accessing_task_id, m_actions.accessing_task_id); + EXPECT_EQ(taskId, m_actions.accessing_task_id); EXPECT_EQ(addr, m_actions.destination_address); } @@ -46,18 +46,18 @@ TEST_F(TestMemoryActionsFixture, CheckStoreActionFunctionWithParamsRead) { EXPECT_TRUE(m_actions.isEmpty); // store - uint ut = accessing_task_id; - m_actions.storeAction(ut, addr, value, lineNo, funcId, false); + uint ut = taskId; + m_actions.storeAction(ut, addr, value, source_line_num, funcId, false); - EXPECT_EQ(accessing_task_id, m_actions.accessing_task_id); + EXPECT_EQ(taskId, m_actions.accessing_task_id); EXPECT_EQ(addr, m_actions.destination_address); EXPECT_FALSE(m_actions.isEmpty); - EXPECT_EQ(accessing_task_id, m_actions.action.accessing_task_id); + EXPECT_EQ(taskId, m_actions.action.accessing_task_id); EXPECT_EQ(addr, m_actions.action.destination_address); EXPECT_EQ(funcId, m_actions.action.source_func_id); EXPECT_EQ(value, m_actions.action.value_written); - EXPECT_EQ(lineNo, m_actions.action.source_line_num); + EXPECT_EQ(source_line_num, m_actions.action.source_line_num); } TEST_F(TestMemoryActionsFixture, CheckHasWrite) {