Skip to content

Conversation

@calebh
Copy link
Contributor

@calebh calebh commented Dec 1, 2025

This pull request enhances CLE's capabilities to load DWARF information, particularly for Rust binaries. There will be a corresponding pull request in angr to take advantage of these changes to CLE. The current purpose of this pull request is to gather feedback on architecture/design. Note that the CLE side here is a bit more well tested than the angr side.

Summary of changes:

  • Adds EnumerationType, SubroutineType, SubprogramType, ConstType, VariantType as subclasses of VariableType. Adds functions to load these classes from DWARF information.
  • Adds logic to grab the namespace and alignment information of the various types from DWARF.
  • Encoding is grabbed for BaseType from DWARF information if available.
  • TODO: There was already a class called Subprogram, which inherited from LexicalBlock. Figure out if SubprogramType should remain separate from this class.

See also: angr/angr#5857

Caleb Helbling and others added 20 commits July 7, 2025 14:48
…. Added count, lower_bound and upper_bound to ArrayType.
… can handle any attribute. An error is now thrown if the reference form is not one we can understand.
…e. Changed and simplified implementation of resolve_reference_addr to make use of this method. Cleaned up imports that are now unused.
… and discr_values to variant_cases. Added some more accessors.
…ant to having byte_size missing. TypeDefType now knows what namespace it is in. Added more resilience to DWARF information about inline functions.
…t, rvalue reference, shared and volatile types. Accomplished this by making a new TypeModifier superclass. ConstType now inherits from this new superclass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant