| Crates.io | squid_ewe |
| lib.rs | squid_ewe |
| version | 2.0.1 |
| created_at | 2025-03-18 17:10:37.617565+00 |
| updated_at | 2025-03-18 17:24:03.337916+00 |
| description | A helper tool for squid that extracts CFG metadata from C code |
| homepage | |
| repository | |
| max_upload_size | |
| id | 1596887 |
| size | 90,699 |
ewe is a compiler wrapper toolset that extracts metadata from C
code and stores it in addition to the binaries as .ewe files.
Its primary purpose is to tackle the information loss problem during compilation
and reconstruct basic block boundaries in machine code.
This enables CFG reconstruction from C code making use of the goto* extension.
The ewe tools are part of squid's toolchain and can be found in the /ewe/ directory
inside the docker container.
The following tools are available:
/ewe/gcc: A wrapper around riscv64-unknown-linux-gnu-gcc/ewe/as: A wrapper around riscv64-unknown-linux-gnu-as/ewe/ar: A wrapper around riscv64-unknown-linux-gnu-ar/ewe/ld: A wrapper around riscv64-unknown-linux-gnu-ldUse these programs instead of their RISC-V counterparts whenever your target uses goto* statements.
squid automatically detects if the binaries it loads have a corresponding .ewe file and uses that
for CFG reconstruction.
It is important that the .ewe files follow the following convention: For a binary path/to/binary.ext that is loaded
by squid the .ewe file must be named path/to/binary.ext.ewe. So, the .ewe extension is appended to the filename
in order to signal that this .ewe file belongs to this binary.