Skip to content

Commit 0c64d7c

Browse files
committed
CMD: add size-origin to patch records
1 parent 49e816b commit 0c64d7c

3 files changed

Lines changed: 9 additions & 1 deletion

File tree

chb/ast/ASTCPrettyPrinter.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,7 @@ def visit_memref(self, memref: AST.ASTMemRef) -> None:
497497
if memref.memexp.is_ast_addressof:
498498
memexpa = cast(AST.ASTAddressOf, memref.memexp)
499499
memexpa.lval.accept(self)
500+
'''
500501
elif memref.memexp.is_ast_binary_op:
501502
memexpb = cast(AST.ASTBinaryOp, memref.memexp)
502503
exp1 = memexpb.exp1
@@ -510,6 +511,7 @@ def visit_memref(self, memref: AST.ASTMemRef) -> None:
510511
self.ccode.write("(*(")
511512
memref.memexp.accept(self)
512513
self.ccode.write("))")
514+
'''
513515
else:
514516
self.ccode.write("(*(")
515517
memref.memexp.accept(self)

chb/buffer/LibraryCallCallsites.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,7 @@ def lentype(self) -> str:
236236
def to_json_result(self,
237237
dstoffset: int,
238238
buffersize: int,
239+
sizeorigin: str,
239240
spare: Optional[str],
240241
) -> JSONResult:
241242
if self.dstarg is None:
@@ -248,6 +249,7 @@ def to_json_result(self,
248249
content["faddr"] = self.faddr
249250
content["iaddr"] = self.instr.iaddr
250251
content["buffersize"] = buffersize
252+
content["size-origin"] = sizeorigin
251253
content["target-function"] = self.summary.name
252254
content["stack-offset"] = dstoffset
253255
if self.lenarg is not None:

chb/cmdline/reportcmds.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1324,11 +1324,14 @@ def include_target(target: 'CallTarget') -> bool:
13241324
"Stackbuffer for %s at offset %s does not have a size, but stackframe "
13251325
+ " allows a buffer of %s",
13261326
str(instr), str(dstoffset), str(buffersize))
1327+
sizeorigin = "stackframe-layout"
1328+
else:
1329+
sizeorigin = "stackslot-access"
13271330

13281331
basicblock = fn.block(pc.baddr)
13291332
spare = find_spare_instruction(basicblock, instr.iaddr)
13301333

1331-
jresult = pc.to_json_result(dstoffset, buffersize, spare)
1334+
jresult = pc.to_json_result(dstoffset, buffersize, sizeorigin, spare)
13321335
if not jresult.is_ok:
13331336
chklogger.logger.warning("Couldn't process patch callsite %s", pc)
13341337
continue
@@ -1352,6 +1355,7 @@ def include_target(target: 'CallTarget') -> bool:
13521355
print(" - stack offset: %s" % patch_record['stack-offset'])
13531356
print(" - length argument: %s" % patch_record['length-argument'])
13541357
print(" - buffersize: %s" % patch_record['buffersize'])
1358+
print(" - size-origin: %s" % patch_record['size-origin'])
13551359
print(" - spare: %s" % patch_record['spare'])
13561360
print("")
13571361

0 commit comments

Comments
 (0)