From a2cb050ca18fd7c5533d69e9aa093e4f0a40d0fa Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 8 Apr 2026 16:04:12 +0200 Subject: Implement the asan:stack statement MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This statement allows programmers to reserve a memory range for the stack. This is useful to reserve a memory region which is not attached to any variable, and: 1. It is a way to safely reserve space on the $0100 page. 2. The --stats/--write-info flags will be able to add up the memory space reserved for the stack. 3. Future tooling might be able to use this value as a way to detect stack overflows. Signed-off-by: Miquel Sabaté Solà --- lib/xixanta/src/node.rs | 3 +++ 1 file changed, 3 insertions(+) (limited to 'lib/xixanta/src/node.rs') diff --git a/lib/xixanta/src/node.rs b/lib/xixanta/src/node.rs index 7a5cf3d..3803840 100644 --- a/lib/xixanta/src/node.rs +++ b/lib/xixanta/src/node.rs @@ -1,4 +1,5 @@ use std::fmt; +use std::ops::Range; /// Returns true if this String follows the naming /// conventions as expected by the address sanitizer. @@ -264,6 +265,7 @@ pub enum OperationType { pub enum CommentType { AsanReserveIdentifier(PString), AsanReserve(usize), + AsanStack(Range), AsanIgnore, } @@ -366,6 +368,7 @@ impl fmt::Display for NodeType { NodeType::Comment(ct) => match ct { CommentType::AsanReserveIdentifier(_) => write!(f, ";; asan:reserve"), CommentType::AsanReserve(_) => write!(f, ";; asan:reserve"), + CommentType::AsanStack(_) => write!(f, ";; asan:stack"), CommentType::AsanIgnore => write!(f, ";; asan:ignore"), }, } -- cgit v1.2.3