Skip to content

Commit a1484fd

Browse files
committed
Update TriCore callingconvention APIs.
1 parent ac98a87 commit a1484fd

File tree

2 files changed

+14
-35
lines changed

2 files changed

+14
-35
lines changed

callingconvention.cpp

Lines changed: 8 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -298,55 +298,34 @@ vector<uint32_t> CallingConvention::GetFloatArgumentRegisters()
298298

299299
vector<uint32_t> CallingConvention::GetRegisterArgumentClasses()
300300
{
301-
size_t count;
302-
uint32_t* classes = BNGetRegisterArgumentClasses(GetObject(), &count);
303-
vector<uint32_t> result;
304-
for (size_t i = 0; i < count; i++)
305-
result.push_back(classes[i]);
306-
BNFreeRegisterList(classes);
307-
return result;
301+
return vector<uint32_t>();
308302
}
309303

310304

311305
vector<uint32_t> CallingConvention::GetRegisterArgumentClassLists(uint32_t classId)
312306
{
313-
size_t count;
314-
uint32_t* lists = BNGetRegisterArgumentClassLists(GetObject(), classId, &count);
315-
vector<uint32_t> result;
316-
for (size_t i = 0; i < count; i++)
317-
result.push_back(lists[i]);
318-
BNFreeRegisterList(lists);
319-
return result;
307+
return vector<uint32_t>();
320308
}
321309

322310

323311
vector<uint32_t> CallingConvention::GetRegisterArgumentLists()
324312
{
325-
size_t count;
326-
uint32_t* lists = BNGetRegisterArgumentLists(GetObject(), &count);
327-
vector<uint32_t> result;
328-
for (size_t i = 0; i < count; i++)
329-
result.push_back(lists[i]);
330-
BNFreeRegisterList(lists);
331-
return result;
313+
// Default implementation: derive from classes
314+
return vector<uint32_t>();
332315
}
333316

334317

335318
vector<uint32_t> CallingConvention::GetRegisterArgumentListRegs(uint32_t regListId)
336319
{
337-
size_t count;
338-
uint32_t* regs = BNGetRegisterArgumentListRegs(GetObject(), regListId, &count);
339-
vector<uint32_t> result;
340-
for (size_t i = 0; i < count; i++)
341-
result.push_back(regs[i]);
342-
BNFreeRegisterList(regs);
343-
return result;
320+
// Default implementation: no registers for any list
321+
return vector<uint32_t>();
344322
}
345323

346324

347325
BNRegisterListKind CallingConvention::GetRegisterArgumentListKind(uint32_t regListId)
348326
{
349-
return BNGetRegisterArgumentListKind(GetObject(), regListId);
327+
// Default implementation: list 0 = integer, others = float
328+
return (regListId == 0) ? REGISTER_LIST_KIND_INTEGER_SEMANTICS : REGISTER_LIST_KIND_FLOAT_SEMANTICS;
350329
}
351330

352331

rust/src/calling_convention.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ where
530530
let params_slice = std::slice::from_raw_parts(params, param_count);
531531
let rust_params: Vec<FunctionParameter> = params_slice
532532
.iter()
533-
.map(|p| FunctionParameter::from_raw(p))
533+
.map(FunctionParameter::from_raw)
534534
.collect();
535535

536536
// Convert permitted registers if provided
@@ -542,13 +542,13 @@ where
542542
};
543543

544544
// Call the trait method
545-
if let Some(variables) = ctxt.cc.variables_for_parameters(
546-
&rust_params,
547-
permitted_reg_ids.as_ref().map(|v| v.as_slice()),
548-
) {
545+
if let Some(variables) = ctxt
546+
.cc
547+
.variables_for_parameters(&rust_params, permitted_reg_ids.as_deref())
548+
{
549549
// Convert Vec<Variable> to *mut BNVariable using From trait
550550
let mut raw_variables: Vec<BNVariable> =
551-
variables.into_iter().map(|v| BNVariable::from(v)).collect();
551+
variables.into_iter().map(BNVariable::from).collect();
552552

553553
*result_count = raw_variables.len();
554554
let ptr = raw_variables.as_mut_ptr();

0 commit comments

Comments
 (0)