Skip to content

Commit 721565d

Browse files
committed
remove generic arch from calling convention
1 parent da1b04d commit 721565d

File tree

10 files changed

+203
-259
lines changed

10 files changed

+203
-259
lines changed

arch/riscv/src/lib.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2670,9 +2670,9 @@ impl<D: 'static + RiscVDisassembler + Send + Sync> RiscVCC<D> {
26702670
}
26712671
}
26722672

2673-
impl<D: 'static + RiscVDisassembler + Send + Sync> CallingConventionBase for RiscVCC<D> {
2674-
type Arch = RiscVArch<D>;
2675-
2673+
impl<D: 'static + RiscVDisassembler + Send + Sync> CallingConventionBase<RiscVArch<D>>
2674+
for RiscVCC<D>
2675+
{
26762676
fn caller_saved_registers(&self) -> Vec<Register<D>> {
26772677
let mut regs = Vec::with_capacity(36);
26782678
let int_reg_count = <D::RegFile as RegFile>::int_reg_count();

plugins/pdb-ng/src/parser.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,11 @@ pub struct PDBParserInstance<'a, S: Source<'a> + 'a> {
4848
/// Default arch of self.bv
4949
pub(crate) arch: CoreArchitecture,
5050
/// Default calling convention for self.arch
51-
pub(crate) default_cc: Ref<CallingConvention<CoreArchitecture>>,
51+
pub(crate) default_cc: Ref<CallingConvention>,
5252
/// Thiscall calling convention for self.bv, or default_cc if we can't find one
53-
pub(crate) thiscall_cc: Ref<CallingConvention<CoreArchitecture>>,
53+
pub(crate) thiscall_cc: Ref<CallingConvention>,
5454
/// Cdecl calling convention for self.bv, or default_cc if we can't find one
55-
pub(crate) cdecl_cc: Ref<CallingConvention<CoreArchitecture>>,
55+
pub(crate) cdecl_cc: Ref<CallingConvention>,
5656
/// Default platform of self.bv
5757
pub(crate) platform: Ref<Platform>,
5858
/// pdb-rs structure for making lifetime hell a real place

plugins/pdb-ng/src/type_parser.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ use std::sync::OnceLock;
1818
use crate::struct_grouper::group_structure;
1919
use crate::PDBParserInstance;
2020
use anyhow::{anyhow, Result};
21-
use binaryninja::architecture::{Architecture, CoreArchitecture};
21+
use binaryninja::architecture::Architecture;
2222
use binaryninja::binary_view::BinaryViewExt;
2323
use binaryninja::calling_convention::CallingConvention;
2424
use binaryninja::confidence::{Conf, MAX_CONFIDENCE};
@@ -2084,7 +2084,7 @@ impl<'a, S: Source<'a> + 'a> PDBParserInstance<'a, S> {
20842084
pub(crate) fn find_calling_convention(
20852085
platform: &Platform,
20862086
name: &str,
2087-
) -> Option<Ref<CallingConvention<CoreArchitecture>>> {
2087+
) -> Option<Ref<CallingConvention>> {
20882088
platform
20892089
.calling_conventions()
20902090
.iter()
@@ -2093,10 +2093,7 @@ impl<'a, S: Source<'a> + 'a> PDBParserInstance<'a, S> {
20932093
}
20942094

20952095
/// Convert pdb calling convention enum to binja
2096-
fn cv_call_t_to_calling_convention(
2097-
&self,
2098-
cv: u8,
2099-
) -> Option<Ref<CallingConvention<CoreArchitecture>>> {
2096+
fn cv_call_t_to_calling_convention(&self, cv: u8) -> Option<Ref<CallingConvention>> {
21002097
match CV_call_t::try_from(cv) {
21012098
Ok(CV_call_t::NEAR_FAST) | Ok(CV_call_t::FAR_FAST) => {
21022099
self.platform.get_fastcall_calling_convention()

plugins/warp/src/convert.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -348,17 +348,15 @@ pub fn from_bn_type_internal(
348348
}
349349
}
350350

351-
pub fn from_bn_calling_convention<A: BNArchitecture>(
352-
raw_cc: BNRef<BNCallingConvention<A>>,
353-
) -> CallingConvention {
351+
pub fn from_bn_calling_convention(raw_cc: BNRef<BNCallingConvention>) -> CallingConvention {
354352
// NOTE: Currently calling convention just stores the name.
355353
CallingConvention::new(raw_cc.name().as_str())
356354
}
357355

358356
pub fn to_bn_calling_convention<A: BNArchitecture>(
359357
arch: &A,
360358
calling_convention: &CallingConvention,
361-
) -> BNRef<BNCallingConvention<A>> {
359+
) -> BNRef<BNCallingConvention> {
362360
for cc in &arch.calling_conventions() {
363361
if cc.name().as_str() == calling_convention.name {
364362
return cc.clone();

rust/src/architecture.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1897,7 +1897,7 @@ impl Architecture for CoreArchitecture {
18971897

18981898
macro_rules! cc_func {
18991899
($get_name:ident, $get_api:ident, $set_name:ident, $set_api:ident) => {
1900-
fn $get_name(&self) -> Option<Ref<CallingConvention<Self>>> {
1900+
fn $get_name(&self) -> Option<Ref<CallingConvention>> {
19011901
let arch = self.as_ref();
19021902

19031903
unsafe {
@@ -1906,16 +1906,16 @@ macro_rules! cc_func {
19061906
if cc.is_null() {
19071907
None
19081908
} else {
1909-
Some(CallingConvention::ref_from_raw(cc, self.handle()))
1909+
Some(CallingConvention::ref_from_raw(cc))
19101910
}
19111911
}
19121912
}
19131913

1914-
fn $set_name(&self, cc: &CallingConvention<Self>) {
1914+
fn $set_name(&self, cc: &CallingConvention) {
19151915
let arch = self.as_ref();
19161916

19171917
assert!(
1918-
cc.arch_handle.borrow().as_ref().handle == arch.handle,
1918+
cc.arch().handle == arch.handle,
19191919
"use of calling convention with non-matching architecture!"
19201920
);
19211921

@@ -1939,12 +1939,12 @@ pub trait ArchitectureExt: Architecture {
19391939
}
19401940
}
19411941

1942-
fn calling_conventions(&self) -> Array<CallingConvention<Self>> {
1942+
fn calling_conventions(&self) -> Array<CallingConvention> {
19431943
unsafe {
19441944
let mut count = 0;
19451945
let calling_convs =
19461946
BNGetArchitectureCallingConventions(self.as_ref().handle, &mut count);
1947-
Array::new(calling_convs, count, self.handle())
1947+
Array::new(calling_convs, count, ())
19481948
}
19491949
}
19501950

0 commit comments

Comments
 (0)