fix(visitor): ignore DW_AT_decl_file/line in visit_namespace#14
Merged
Conversation
Namespace DIEs can carry DW_AT_decl_file and DW_AT_decl_line, but the attribute match in visit_namespace had no skip-set, so those fell through to the catch-all and raised ValueError. Skip them, matching visit_typedef, visit_enumeration_type and the other visit_* methods.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
visit_namespacecrashed withValueError: Unhandled attribute DW_AT_decl_fileon binaries whose namespace DIEs carry a declaration location.Namespace DIEs can include
DW_AT_decl_file/DW_AT_decl_line(where the namespace was first declared), but the attributematchinvisit_namespacehad no skip-set, so those attributes fell through to the catch-allcase _:and raised. Every other visitor (visit_typedef,visit_enumeration_type, …) already skips these declaration-location attributes.This adds the same
if attribute.name in {...}: continueskip-set tovisit_namespace. The attributes are safely ignored: a namespace does not need a source location (namespaces re-open across files); its members each carry their own.Closes #13
Test plan
dwarf2cppon a binary whose namespaces carryDW_AT_decl_file(the case from Error invisit_namespace#13) and confirm it no longer raises.