123
124 def killStack(self, killer=None):
125 if killer is None:
126 killer = []
127 reg_reset = set(range(self.stackFirst, self.stackLast + 1))
128 reg_reset.update(
129 [self.stackOverRead, self.stackOverWrite, self.stackRead, self.stackWrite]
313 return strDiagFalse, strNDiagTrue, accChCo
314
315 def toSets(self):
316 def UpdateToSets(self):
317
318 DiagFalse, NDiagTrue = InstMatrix.toSets(self)
319 accChCo = set()
320 for j in self.chainCond.nonzero()[1]:
321 accChCo.add(j)
322 return DiagFalse, NDiagTrue, accChCo
323
324 if "_cache_to_sets" not in self.__dict__:
325 self._cache_to_sets = UpdateToSets(self)
326 elif self._cache_matrix_last_modification > time():
327 self._cache_to_sets = UpdateToSets(self)
328
329 return self._cache_to_sets
330
331
332class Gadget(GadgetMatrix):
250 for child in srcChilds:
251 self.chainCond[0, child] = True
252 else:
253 raise ValueError(
254 "invalid chainInst: " + chainInst.mnemonic + " " + chainInst.op_str
255 )
256
177 return accDiagFalse, accNDiagTrue
178
179 def toSets(self):
180 def UpdateToSets(self):
181 accDiagFalse = set()
182 accNDiagTrue = set()
183
184 diagonal = self.matrix.diagonal()
185 for State, Index in zip(diagonal, range(len(diagonal))):
186 if State == False:
187 accDiagFalse.add(Index)
188
189 for i, j in zip(*self.matrix.nonzero()):
190 if i != j:
191 accNDiagTrue.add((i, j))
192 return accDiagFalse, accNDiagTrue
193
194 if "_cache_to_sets" not in self.__dict__:
195 self._cache_to_sets = UpdateToSets(self)
196 elif self._cache_matrix_last_modification > time():
197 self._cache_to_sets = UpdateToSets(self)
198
199 return self._cache_to_sets
200
201
202class GadgetMatrix(InstMatrix):
154 if depStrings[i] == None:
155 parents, _ = self.arch.getRegDependencies(i)
156 if not self.matrix[i, i] and not parents and verbose:
157 _str += "%s <-/- %s\n" % (
158 self.printIndexName(i),
159 self.printIndexName(i),
160 )
A source line is considered covered when at least one instruction that is assigned to this line has been executed by a test case. These lines were not executed during any of the test cases.