Skip to content

cslab-pnu/SMORE

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SMORE: Practical Redzone-Based Stack Memory Error Detection Mechanism for Embedded Systems

This is the repository of our paper presented at the ACSAC 2025.

Paper: (to appear)

Abstract

This artifact contains the prototype implementation of SMORE, as described in Sections 6 and 7 of our paper. It includes modified LLVM 15.0.7 (for compiler instrumentation), a ported RIOT-OS 2024.01 with the SMORE runtime library, and a ported newlib used as the standard C library. The repository also provides benchmark programs (BEEBS, CoreMark, Juliet Test Suite cases) and scripts to reproduce the evaluation results.

Dependencies: Ubuntu 22.04 LTS, LLVM 15.0.7, newlib (ported for SMORE), Arm GNU Toolchain (arm-none-eabi-gcc 10.3.1, 2021.07 release), Python ≥3.9, make.

Infrastructure: Requires the STM32 Nucleo-L552ZE-Q development board (Cortex-M33, Armv8-M). Public cloud infrastructure (e.g., CloudLab, Chameleon, FABRIC) is not applicable due to the hardware requirement.

Expected runtime: < 1 hour for benchmarks.

Execution: Run install.sh to install dependencies, then execute the scripts under claims/ (e.g., claims/run.sh).

Repository: https://github.com/cslab-pnu/SMORE.git

Contents

File Description
artifact/SMORE-LLVM Modified LLVM 15.0.7 for compiler instrumentation
artifact/SMORE-RIOT Modified RIOT-OS 2024.01 for SMORE runtime library
artifact/newlib-nano-1.0 Ported newlib for SMORE, used as the standard C library with RIOT-OS
env.sh Script to configure the running environment
install.sh Script to automatically install toolchains for SMORE
pyterm.sh Script to connect the development board using pyterm

Dependencies

Development boards NUCLEO-L552ZE-Q by STMicroelectronics (Available 8 MPU Regions, 256 KB SRAM) Ubuntu 22.04 LTS Embedded ARM cross-compiler toolchain

$ sudo apt install gcc-arm-none-eabi

$ pip3 install pyserial

How to install

$ git clone https://github.com/cslab-pnu/SMORE.git

$ cd SMORE

Let's install SMROE toolchains. Building LLVM can take some time.

$ ./install.sh

Then, load the environment in your current shell:

$ source env.sh

Test if SMORE is working

To check the test results of SMORE, the development board must be connected to the terminal as shown below.

In a new terminal, enter the following:

$ ./pyterm.sh

Expected output:

2025-09-08 10:59:22,561 # Connect to serial port /dev/ttyACM0

Welcome to pyterm!

Type '/exit' to exit.

Compile the example programs in the artifact directory.

Coremark (claim)

In a new terminal, enter the following:

$ cd claim/

$ ./run.sh

Expected output:

2025-09-11 12:36:36,387 # �in(): This is RIOT! (Version: UNKNOWN (builddir: /home/usr/SMORE/artifact/SMORE-RIOT))
2025-09-11 12:37:05,716 # coremark clock cycle: 3167502237
2025-09-11 12:37:05,720 # 2K performance run parameters for coremark.
2025-09-11 12:37:05,722 # CoreMark Size    : 666
2025-09-11 12:37:05,724 # Total ticks      : 0
2025-09-11 12:37:05,726 # Total time (secs):
2025-09-11 12:37:05,731 # ERROR! Must execute for at least 10 secs for a valid result!
2025-09-11 12:37:05,734 # Iterations       : 3000
2025-09-11 12:37:05,744 # Compiler version : GCCClang 15.0.7 (https://github.com/cslab-pnu/SMORE.git)
2025-09-11 12:37:05,746 # Memory location  : STACK
2025-09-11 12:37:05,749 # seedcrc          : 0xe9f5
2025-09-11 12:37:05,751 # [0]crclist       : 0xe714
2025-09-11 12:37:05,753 # [0]crcmatrix     : 0x1fd7
2025-09-11 12:37:05,756 # [0]crcstate      : 0x8e3a
2025-09-11 12:37:05,758 # [0]crcfinal      : 0xcc42
2025-09-11 12:37:05,764 # Correct operation validated. See README.md for run and reporting rules.
2025-09-11 12:37:05,765 #  / STACK

The execution cycle is displayed. The parts marked as errors in the output appear because the built-in timer of CoreMark was not ported, and they do not indicate that the execution itself is incorrect.


Citation

If you use this work or parts of it, please cite our paper as follows:

@inproceedings {

  

}

About

SMORE: Practical Redzone-Based Stack Memory Error Detection Mechanism for Embedded Systems

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •