asmslicer
asmslicer is the LOCI static-analysis service. It slices ELF binaries (embedded firmware and executables) into:
- ASM basic blocks and linear execution segments, including CFG info.
- Callgraph between functions.
- Symbol and variable-access information.
and additionally provides binary diffing, worst-case stack-depth estimation, ROM/RAM memory-usage reports, and cross-artifact symbol dependency resolution.
Documentation
Full documentation lives in docs/ — start with the overview.
| 1. Overview and scope | What the service does; scope boundary vs. the TDMP trace pipeline |
| 2. Architecture | Processing pipeline, disassembly engines, data flow |
| 3. CLI reference | Subcommands slice, diff, stack-depth, memmap, deps; exit codes |
| 4. Output formats | Normative schemas of all CSV/DOT/JSON artifacts |
| 5. Analyses | Methods, assumptions, guarantees, blind spots |
| 6. Platform support | aarch64 / Cortex-M / TriCore support matrix |
| 7. Deployment and operations | Docker image, env vars, security posture |
| 8. Dependencies | Third-party inventory and licenses |
| 9. Quality assurance | Test suites and golden-data regression evidence |
| 10. Limitations and determinism | Soundness limits, reproducibility statement |
| 11. Release and versioning | CI/CD, image tagging, provenance |
How do I get set up?
- asmslicer uses uv for Python project and dependency management; install uv first.
External dependencies
The following system tools are required for full functionality:
binutils— providesc++filtfor C++ symbol demanglingllvm-18— providesllvm-ifs-18for interface stub generationrustfilt— for Rust symbol demangling
On Debian/Ubuntu:
sudo apt-get update && sudo apt-get install binutils rustfilt
wget -qO- https://apt.llvm.org/llvm.sh | sudo bash -s -- 18
For CUDA binary analysis (optional):
# Requires NVIDIA CUDA toolkit
sudo apt-get install cuda-cuxxfilt-13-0 cuda-cuobjdump-13-0 cuda-nvdisasm-13-0
- Then configure the venv using uv:
uv venv
source .venv/bin/activate
uv sync
- Once the venv is set up you can run the service CLI locally:
loci-service-asmslicer --help
loci-service-asmslicer slice path/to/app.elf ./out
- The Docker container image can also be built in the standard way:
docker build -t loci-platform/loci-service-static-analysis .
Contribution guidelines
- The project uses the
mainbranch for active development. - Changes are merged by creating a pull request targeting
main. - Merging to
mainautomatically triggers a build pipeline which deploys the Docker container to AWS ECR with thelatesttag. - Creating an annotated tag with an
x.y.zversion number triggers a pipeline build which deploys the Docker container to AWS ECR with thex.y.ztag. See docs/11-versioning.md.
Who do I talk to?
- Repo owner or admin.
Metadata
Release files for loci-service-asmslicer 1.1.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| loci_service_asmslicer-1.1.14-cp312-cp312-win_amd64.whl | CPython 3.12 | CPython 3.12 | Windows x86-64 | Details |
| loci_service_asmslicer-1.1.14-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl | CPython 3.12 | CPython 3.12 | Linux glibc 2.17+ x86-64, Linux glibc 2.28+ x86-64 | Details |
| loci_service_asmslicer-1.1.14-cp312-cp312-macosx_11_0_x86_64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ x86-64 | Details |
| loci_service_asmslicer-1.1.14-cp312-cp312-macosx_11_0_arm64.whl | CPython 3.12 | CPython 3.12 | macOS 11.0+ ARM64 | Details |
Total release size: 38.1 MB
Release files / loci_service_asmslicer-1.1.14-cp312-cp312-win_amd64.whl
| Download URL | loci_service_asmslicer-1.1.14-cp312-cp312-win_amd64.whl |
|---|---|
| Size | 3.4 MB |
| Tags | CPython 3.12 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
3a443b2beb79a25ed913fff1fc6b92b4cb35c7b5c307a46f188c4e31208c5d87
|
|
BLAKE2b-256 checksum How to use checksums |
6b0083dce330828505a23a225e0f4c4df747fa7791dd1b7fbb85afe0bfe5a232
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / loci_service_asmslicer-1.1.14-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
| Download URL | loci_service_asmslicer-1.1.14-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl |
|---|---|
| Size | 27.1 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 Linux glibc 2.28+ x86-64 |
|
SHA-256 checksum How to use checksums |
26eb1fe1e5b27de1cedd1b47e7e2dec7764c9cfb7bc5dc33190ba600f3c9a1ba
|
|
BLAKE2b-256 checksum How to use checksums |
87b6a01a95fc38fc3eecd6a2b46ad14dad144125975177f6938feabe7d410ffd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.7
|
Release files / loci_service_asmslicer-1.1.14-cp312-cp312-macosx_11_0_x86_64.whl
| Download URL | loci_service_asmslicer-1.1.14-cp312-cp312-macosx_11_0_x86_64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.12 macOS 11.0+ x86-64 |
|
SHA-256 checksum How to use checksums |
a2f929d8a34b43d420904f9e4159c95e053ab020a0cc4b9e68d76a8c8b26f43e
|
|
BLAKE2b-256 checksum How to use checksums |
263c550ac6d6825c5436166fed4770668075345198734da417839b51d7883a2c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|
Release files / loci_service_asmslicer-1.1.14-cp312-cp312-macosx_11_0_arm64.whl
| Download URL | loci_service_asmslicer-1.1.14-cp312-cp312-macosx_11_0_arm64.whl |
|---|---|
| Size | 3.7 MB |
| Tags | CPython 3.12 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
17d7a4bc892ffc3f3c908e89ce743beecbb76a57ff12ddf4b3f21c723ebd04a6
|
|
BLAKE2b-256 checksum How to use checksums |
20675ed54f17aeb225e1e6ccdcb1c3fd0438031563f05d6a92f6a3828fbe95b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.13
|