12bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson/* 22bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Copyright (C) 2011 The Android Open Source Project 32bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 42bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Licensed under the Apache License, Version 2.0 (the "License"); 52bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * you may not use this file except in compliance with the License. 62bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * You may obtain a copy of the License at 72bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 82bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 92bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * 102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * Unless required by applicable law or agreed to in writing, software 112bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 122bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * See the License for the specific language governing permissions and 142bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * limitations under the License. 152bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 162bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 172bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpackage com.android.dex; 182bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 192bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilsonpublic final class SizeOf { 202bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson private SizeOf() {} 212bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 222bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int UBYTE = 1; 232bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int USHORT = 2; 242bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int UINT = 4; 252bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 262bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int SIGNATURE = UBYTE * 20; 272bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 282bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 292bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * magic ubyte[8] 302bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * checksum uint 312bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * signature ubyte[20] 322bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * file_size uint 332bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * header_size uint 342bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * endian_tag uint 352bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * link_size uint 362bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * link_off uint 372bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * map_off uint 382bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * string_ids_size uint 392bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * string_ids_off uint 402bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * type_ids_size uint 412bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * type_ids_off uint 422bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * proto_ids_size uint 432bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * proto_ids_off uint 442bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * field_ids_size uint 452bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * field_ids_off uint 462bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * method_ids_size uint 472bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * method_ids_off uint 482bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * class_defs_size uint 492bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * class_defs_off uint 502bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * data_size uint 512bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * data_off uint 522bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 532bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int HEADER_ITEM = (8 * UBYTE) + UINT + SIGNATURE + (20 * UINT); // 0x70 542bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 552bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 562bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * string_data_off uint 572bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 582bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int STRING_ID_ITEM = UINT; 592bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 602bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 612bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * descriptor_idx uint 622bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 632bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int TYPE_ID_ITEM = UINT; 642bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 652bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 662bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * type_idx ushort 672bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 682bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int TYPE_ITEM = USHORT; 692bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 702bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 712bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * shorty_idx uint 722bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * return_type_idx uint 732bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * return_type_idx uint 742bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 752bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int PROTO_ID_ITEM = UINT + UINT + UINT; 762bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 772bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 782bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * class_idx ushort 792bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * type_idx/proto_idx ushort 802bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * name_idx uint 812bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 822bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int MEMBER_ID_ITEM = USHORT + USHORT + UINT; 832bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 842bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 852bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * class_idx uint 862bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * access_flags uint 872bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * superclass_idx uint 882bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * interfaces_off uint 892bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * source_file_idx uint 902bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * annotations_off uint 912bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * class_data_off uint 922bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * static_values_off uint 932bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 942bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int CLASS_DEF_ITEM = 8 * UINT; 952bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson 962bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson /** 972bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * type ushort 982bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * unused ushort 992bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * size uint 1002bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson * offset uint 1012bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson */ 1022bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson public static final int MAP_ITEM = USHORT + USHORT + UINT + UINT; 10300a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche 10400a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche /** 10500a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche * start_addr uint 10600a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche * insn_count ushort 10700a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche * handler_off ushort 10800a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche */ 10900a2d1ee4cfee1f33344c3798940bbae22f96187Benoit Lamarche public static final int TRY_ITEM = UINT + USHORT + USHORT; 1102bea5ee615b0f4add658d5660bd81c5145a0d05eJesse Wilson} 111