aboutsummaryrefslogtreecommitdiff
path: root/disassembler_dex.h
diff options
context:
space:
mode:
Diffstat (limited to 'disassembler_dex.h')
-rw-r--r--disassembler_dex.h37
1 files changed, 30 insertions, 7 deletions
diff --git a/disassembler_dex.h b/disassembler_dex.h
index 8c6f691..ecc4be6 100644
--- a/disassembler_dex.h
+++ b/disassembler_dex.h
@@ -73,21 +73,21 @@ class DisassemblerDex : public Disassembler {
kMethodIdToProtoId, // kProtoId
kCodeToFieldId, // kFieldId
- // kAnnotationsDirectoryToFieldId,
+ kAnnotationsDirectoryToFieldId,
kCodeToMethodId, // kMethodId
- // kAnnotationsDirectoryToMethodId,
- // kAnnotationsDirectoryToParameterMethodId,
+ kAnnotationsDirectoryToMethodId,
+ kAnnotationsDirectoryToParameterMethodId,
kProtoIdToParametersTypeList, // kTypeList
kClassDefToInterfacesTypeList,
- // kAnnotationsDirectoryToParameterAnnotationSetRef, // kAnnotationSetRef,
+ kAnnotationsDirectoryToParameterAnnotationSetRef, // kAnnotationSetRef,
kAnnotationSetRefListToAnnotationSet, // kAnnotationSet,
- // kAnnotationsDirectoryToClassAnnotationSet,
- // kAnnotationsDirectoryToFieldAnnotationSet,
- // kAnnotationsDirectoryToMethodAnnotationSet,
+ kAnnotationsDirectoryToClassAnnotationSet,
+ kAnnotationsDirectoryToFieldAnnotationSet,
+ kAnnotationsDirectoryToMethodAnnotationSet,
kClassDefToClassData, // kClassData
@@ -179,6 +179,23 @@ class DisassemblerDex : public Disassembler {
std::unique_ptr<ReferenceReader> MakeReadAnnotationSetRefListToAnnotationSet(
offset_t lo,
offset_t hi);
+ std::unique_ptr<ReferenceReader>
+ MakeReadAnnotationsDirectoryToClassAnnotationSet(offset_t lo, offset_t hi);
+ std::unique_ptr<ReferenceReader> MakeReadAnnotationsDirectoryToFieldId32(
+ offset_t lo,
+ offset_t hi);
+ std::unique_ptr<ReferenceReader>
+ MakeReadAnnotationsDirectoryToFieldAnnotationSet(offset_t lo, offset_t hi);
+ std::unique_ptr<ReferenceReader> MakeReadAnnotationsDirectoryToMethodId32(
+ offset_t lo,
+ offset_t hi);
+ std::unique_ptr<ReferenceReader>
+ MakeReadAnnotationsDirectoryToMethodAnnotationSet(offset_t lo, offset_t hi);
+ std::unique_ptr<ReferenceReader>
+ MakeReadAnnotationsDirectoryToParameterMethodId32(offset_t lo, offset_t hi);
+ std::unique_ptr<ReferenceReader>
+ MakeReadAnnotationsDirectoryToParameterAnnotationSetRef(offset_t lo,
+ offset_t hi);
std::unique_ptr<ReferenceReader> MakeReadCodeToStringId16(offset_t lo,
offset_t hi);
std::unique_ptr<ReferenceReader> MakeReadCodeToStringId32(offset_t lo,
@@ -236,12 +253,18 @@ class DisassemblerDex : public Disassembler {
// Optionally supported (not all DEX files have these).
dex::MapItem annotation_set_ref_list_map_item_ = {};
dex::MapItem annotation_set_map_item_ = {};
+ dex::MapItem annotations_directory_map_item_ = {};
// Sorted list of offsets of parsed items in |image_|.
std::vector<offset_t> code_item_offsets_;
std::vector<offset_t> type_list_offsets_;
std::vector<offset_t> annotation_set_ref_list_offsets_;
std::vector<offset_t> annotation_set_offsets_;
+ std::vector<offset_t> annotations_directory_item_offsets_;
+ std::vector<offset_t> annotations_directory_item_field_annotation_offsets_;
+ std::vector<offset_t> annotations_directory_item_method_annotation_offsets_;
+ std::vector<offset_t>
+ annotations_directory_item_parameter_annotation_offsets_;
DISALLOW_COPY_AND_ASSIGN(DisassemblerDex);
};