Vector35 / Vector35/binaryninja-api

Support parsing C++ templates (at least concrete specializations)

Open
#5,257 4 comments 19 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Component: Type Parser Effort: Medium Impact: Medium
Dominant language
C++
Stars
1.3k
Forks
298
Avg merge
5d 5h
Merged PRs (30d)
19

Description

What is the feature you'd like to have?
The type parser should support parsing C++ template concrete specializations. Specifically concrete specializations and specifically just parsing into types, i.e. this does not involve creating templates in the typesystem like #3305.

Is your feature request related to a problem?
I want to import C++ headers which use templates, like things that use std::vector<int>

Are any alternative solutions acceptable?
I can manually create types for all of the template stuff, but that is tedious and error prone.

Additional Information:
Need to extend clang_svcs.cpp ClangTypeToBinja and add CType::TemplateSpecialization. Probably also need to add a bunch of other clang structures to deal with the scaffolding around the templates, but with any luck this can be limited to only fully concrete types for which a layout and fields can be generated.

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.

Research direction

Start in clang_svcs.cpp at ClangTypeToBinja and inspect CType::TemplateSpecialization, along with the related discussion in issue #3305. Determine the additional Clang structures needed for fully concrete specializations, then verify that headers using types such as std::vector import into concrete types with layout and fields.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
compilers
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.