Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
5053bcd
stub for inst_next2; bump crate version
xorpse Feb 23, 2024
8a446b6
allow to initialise ArchitectureDef from str with missing variant (us…
yeggor Aug 28, 2024
11f9632
bump version for fugue-arch
yeggor Aug 28, 2024
6c2df57
const constructor for ContextBitRange; get/set context via ContextBit…
xorpse Oct 22, 2024
3329cca
add ContextDatabase::set_variable_region_by_bits
xorpse Oct 22, 2024
f5a0aa9
update flatbuffers and flatcc in fugue-db
yeggor Oct 25, 2024
f4f67dc
update fugue-db version
yeggor Oct 25, 2024
556b18c
Merge pull request #17 from fugue-re/update/flatbuffers
yeggor Oct 26, 2024
f4e1cd5
parse call fixups from compiler specifications
xorpse Oct 28, 2024
0d532d8
mark SymbolTable::get_unchecked as unsafe; closes #18
xorpse Dec 1, 2024
a5f1e60
fix commit address space when address is computed
xorpse Dec 2, 2024
cef776b
mark exposed unchecked_* functions as unsafe
xorpse Dec 23, 2024
38eed7e
initial work on simplified/compact code generation
xorpse Dec 31, 2024
7c75d86
work-in-progress: context and handle resolution
xorpse Jan 6, 2025
8f3b68f
initial work on migration of templates
xorpse Jan 8, 2025
8b06764
sync updates to fugue-ir
xorpse Jan 8, 2025
39b9d55
progress on template resolution
xorpse Jan 9, 2025
d33655d
more template implementation
xorpse Jan 13, 2025
aca75ff
implement build actions
xorpse Jan 13, 2025
6880e8e
implement codegen for templates
xorpse Jan 14, 2025
a5bebca
address build issues
xorpse Jan 15, 2025
6979266
fix codegen for Symbol::ValueMap{Filled,}
xorpse Jan 15, 2025
d774d4e
add function specifications and groundwork for pattern libraries (#19)
xorpse Jan 20, 2025
f9b2d5a
update license information for fugue-{fspec,sleigh}
xorpse Jan 20, 2025
f56fbc6
sanity check on instruction length; initial handling of print pieces …
xorpse Jan 24, 2025
feb23b9
support for formatting (disassembly)
xorpse Jan 25, 2025
d81bd82
mark exposed interface for lifter runtime as unsafe
xorpse Jan 28, 2025
8c7c0d9
Merge branch 'crates-io' into feature/v0.3/simplified-codegen
xorpse Jan 28, 2025
94db4ba
add Language/Lifter; start conversion of fugue-sleigh to use fugue-li…
xorpse Jan 29, 2025
174348b
rework Lifter/Language; update fugue-sleigh
xorpse Jan 29, 2025
f143fc7
bump dependencies; add argument count to Op::UserOp
xorpse Jan 30, 2025
efd49d8
refactor and clean-up
xorpse Feb 1, 2025
ddd32a7
language formatter; fix varnode emission
xorpse Feb 3, 2025
63ef74a
improve PCode formatting
xorpse Feb 5, 2025
5bc1073
support for sleigh v4 specs; support for zstd compressed slas
xorpse Feb 9, 2025
97a0137
support for sleigh v4 specs: handle context commits
xorpse Feb 10, 2025
980ef39
add LanguageBuilder::build_with_sla
xorpse Feb 12, 2025
ad22f0a
add support to compile language specs when generating a lifter
xorpse Feb 12, 2025
1fbe9b5
split codegen and runtime components of fugue-lifter
xorpse Feb 20, 2025
a90118c
add lifters for x86/x86-64; reenable tests in fugue-sleigh
xorpse Feb 20, 2025
c961f21
add arm and aarch64 as default processor modules
xorpse Feb 21, 2025
f92c113
update fugue-sleigh dependency to only use x86-64 lifter
xorpse Feb 21, 2025
13bc646
split lifter into multiple crates to improve compile times
xorpse Mar 1, 2025
2f8cbf9
add fugue_lifter::builder::LifterBuilder
xorpse Mar 5, 2025
822f457
cleanup; add pspec
xorpse Mar 7, 2025
0542877
add logging
xorpse Mar 7, 2025
7736ac5
refactoring
xorpse Mar 9, 2025
21cf2f7
refactoring:
xorpse Mar 9, 2025
8cc87bc
initial work on loader interfaces
xorpse Mar 10, 2025
5839d29
loader interfaces; core types
xorpse Mar 11, 2025
a45a82c
test for loader API; rework
xorpse Mar 12, 2025
0250b91
rework loader traits; sketch object loader
xorpse Mar 13, 2025
d7fe8db
elf loader implementation; rework loadable trait
xorpse Mar 14, 2025
a4cb17b
port elf loading logic (wip)
xorpse Mar 15, 2025
4f96425
support for packed encoded slas
xorpse Mar 24, 2025
90db7c2
support for compressed SLAs via Language::from_{file,bytes} API; use …
xorpse Mar 25, 2025
a9b5d7c
add logging to elf loader; refactor
xorpse Mar 31, 2025
c35233e
split segment loading for linked and unlinked elfs
xorpse Apr 1, 2025
78bbbad
sketch relocations
xorpse Apr 2, 2025
5883158
external symbols support
xorpse Apr 4, 2025
d5f29f4
fallible iterators for segment loading
xorpse Apr 5, 2025
22d0a77
add R_X86_64_{GLOB_DAT,JUMP_SLOT}
xorpse Apr 5, 2025
e231f5c
more work on relocations
xorpse Apr 6, 2025
bfff028
add LocalSymbols; construct symbol mapping for object files
xorpse Apr 7, 2025
6071cd6
groundwork for arch-specifics;
xorpse Apr 7, 2025
c9c6fb6
define base architecture trait; extend codegen to preserve language m…
xorpse Apr 8, 2025
51e57bc
add Arch and ArchImpl
xorpse Apr 9, 2025
4e11c34
update tests; fix Arch::new
xorpse Apr 9, 2025
4ebd683
expose local/extern symbol mappings for ELF loader
xorpse Apr 9, 2025
5f3725f
refactor; use function template for extern region
xorpse Apr 9, 2025
a070e46
add segment_range
xorpse Apr 11, 2025
d1ca892
add symbol properties
xorpse Apr 12, 2025
b21bc03
fix logic for detecting STT_NOTYPE externs as functions
xorpse Apr 13, 2025
c45cb28
sketch Project; add generic Loader impl.
xorpse Apr 13, 2025
b06402c
fix architecture display; test case for generic loader
xorpse Apr 14, 2025
a8c2f37
initial memory mapping types
xorpse Apr 14, 2025
012fa9d
basic storage for mocking
xorpse Apr 15, 2025
a8ef9b7
add LoadableFrom* traits; implement basic storage provider
xorpse Apr 16, 2025
2f174e3
improve StorageProvider trait; fix InMemoryStorage
xorpse Apr 16, 2025
f85f99b
sketch core analyses
xorpse Apr 17, 2025
f834b9a
basic analysis pass manager
xorpse Apr 18, 2025
97fac41
add FromIterator for AnalysisGroup
xorpse Apr 18, 2025
89d7414
add AnalysisPassExt trait; extend test
xorpse Apr 19, 2025
44b196b
restructure
xorpse Apr 19, 2025
7d45a7d
basic disassembler sketch
xorpse Apr 20, 2025
4396c68
CFG recovery tests; fixes for storage, etc.
xorpse Apr 21, 2025
2c51e71
rework storage layer
xorpse Apr 22, 2025
c15fc7c
add memory mapped storage; rework storage traits
xorpse Apr 22, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,21 @@
members = [
"fugue",
"fugue-arch",
"fugue-base",
"fugue-bytes",
"fugue-bv",
"fugue-core",
"fugue-db",
"fugue-fp",
"fugue-ir",
"fugue-ghidra-marshal",
"fugue-lifter",
"fugue-state",
"fugue-state-derive",
"fugue-lifter-aarch64",
"fugue-lifter-arm",
"fugue-lifter-codegen",
"fugue-lifter-runtime",
"fugue-lifter-x86",
"fugue-specs",
"fugue-sleigh",
"fugue-sleigh-language",
"fugue-sleigh-semantics",
]
resolver = "2"

Expand Down
8 changes: 4 additions & 4 deletions MAINTAINERS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
| Github ID | Name | Email |
|----------------------------------------|---------------|------------------|
| [@xorpse](https://github.com/xorpse) | Sam L. Thomas | <sam@fugue.re> |
| [@zt-chen](https://github.com/zt-chen) | Zitai Chen | <zitai@fugue.re> |
| Github ID | Name | Email |
|--------------------------------------|-----------------|------------------|
| [@xorpse](https://github.com/xorpse) | Sam L. Thomas | <sam@fugue.re> |
| [@yeggor](https://github.com/yeggor) | Yegor Vasilenko | <yegor@fugue.re> |
4 changes: 2 additions & 2 deletions fugue-arch/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,5 @@ homepage = "https://fugue.re"
[dependencies]
fugue-bytes = { path = "../fugue-bytes", version = "0.3" }
serde = { version = "1", features = ["derive"] }
thiserror = "1"
unicase = "2.6"
thiserror = "2"
unicase = "2.8"
30 changes: 19 additions & 11 deletions fugue-arch/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ use std::str::FromStr;

use thiserror::Error;

#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
#[derive(serde::Deserialize, serde::Serialize)]
#[derive(
Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, serde::Deserialize, serde::Serialize,
)]
pub struct ArchitectureDef {
processor: String,
endian: Endian,
Expand All @@ -33,8 +34,8 @@ impl FromStr for ArchitectureDef {

fn from_str(s: &str) -> Result<Self, Self::Err> {
let parts = s.splitn(4, ':').collect::<Vec<_>>();
if parts.len() != 4 {
return Err(ArchDefParseError::ParseFormat)
if !matches!(parts.len(), 3 | 4) {
return Err(ArchDefParseError::ParseFormat);
}

let processor = parts[0];
Expand All @@ -43,21 +44,26 @@ impl FromStr for ArchitectureDef {
"be" | "BE" => Endian::Big,
_ => return Err(ArchDefParseError::ParseEndian),
};
let bits = parts[2].parse::<usize>()
let bits = parts[2]
.parse::<usize>()
.map_err(|_| ArchDefParseError::ParseBits)?;
let variant = parts[3];

Ok(ArchitectureDef::new(processor, endian, bits, variant))
Ok(ArchitectureDef::new(
processor,
endian,
bits,
*parts.get(3).unwrap_or(&"default"),
))
}
}

impl fmt::Display for ArchitectureDef {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(
f,
"processor: {}, endian: {}, bits: {}, variant: {}",
"{}:{}:{}:{}",
self.processor,
if self.endian.is_big() { "big" } else { "little" },
if self.endian.is_big() { "BE" } else { "LE" },
self.bits,
self.variant,
)
Expand All @@ -66,8 +72,10 @@ impl fmt::Display for ArchitectureDef {

impl ArchitectureDef {
pub fn new<P, V>(processor: P, endian: Endian, bits: usize, variant: V) -> Self
where P: Into<String>,
V: Into<String> {
where
P: Into<String>,
V: Into<String>,
{
Self {
processor: processor.into(),
endian,
Expand Down
38 changes: 38 additions & 0 deletions fugue-base/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
[package]
name = "fugue-base"
version = "0.3.0"
authors = ["Sam Thomas <st@xv.ax>"]
edition = "2021"

[dependencies]
anyhow = "1"
arrayvec = "0.7"
bitflags = "2"
clone_dyn = "0.30"
fallible-iterator = "0.3"
fugue-arch = { version = "0.3", path = "../fugue-arch" }
fugue-bv = { version = "0.3", path = "../fugue-bv" }
fugue-bytes = { version = "0.3", path = "../fugue-bytes" }
fugue-lifter = { version = "0.3", path = "../fugue-lifter" }
fugue-specs = { version = "0.3", path = "../fugue-specs" }
gazebo = "0.8"
iset = "0.3"
itertools = "0.14"
libmdbx = "0.5"
memmap2 = "0.9"
object = "0.35"
ouroboros = "0.18"
range-set-blaze = "0.1"
rustc-hash = "1.1"
sealed = "0.5"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
smallvec = "1.13"
static_init = "1"
thiserror = "2"
tracing = "0.1"
uuid = { version = "1", features = ["serde", "v7"] }
ustr = { version = "1.1", features = ["serde"] }

[dev-dependencies]
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
Loading