Vector35 / Vector35/binaryninja-api
Support parsing C++ templates (at least concrete specializations)
Nobody has claimed this yet.
- 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
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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