Vector35 / Vector35/binaryninja-api

TriCore calling convention cannot specify integer argument registers

Open
#6,426 0 comments 0 reactions 1 assignee View on GitHub

@hongyu-dev is already working on this.

Since Sep 12, 2025.

Arch: TriCore Component: Core Core: Calling Convention Effort: Medium Impact: Medium
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

Because the calling convention model does not identify groupings of registers (aside from integer/float) we cannot properly model TriCore's dual integer register files (a, d). This resulted in us deciding to fallback entirely to heuristics to pickup the arguments. The one main issue with that is the heuristics are not aware of the register ordering, i.e. that register 1 must be preceded by register 0.

We should either:

  1. Improve our calling convention model to have a notion of register files (or groups)
  2. Create a workflow that fixes up the misidentified functions, this would incur a reanalysis cost as we would likely have to re-analyze the function assuming that we cannot interject our workflow activity before any usage of the bad params.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.