19ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein/* 29ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Copyright (C) 2011 The Android Open Source Project 39ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * 49ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Licensed under the Apache License, Version 2.0 (the "License"); 59ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * you may not use this file except in compliance with the License. 69ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * You may obtain a copy of the License at 79ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * 89ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * http://www.apache.org/licenses/LICENSE-2.0 99ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * 109ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Unless required by applicable law or agreed to in writing, software 119ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * distributed under the License is distributed on an "AS IS" BASIS, 129ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * See the License for the specific language governing permissions and 149ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * limitations under the License. 159ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein */ 169ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein 179ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein/* 189ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Handling of method debug info in a .dex file. 199ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein */ 209ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein 21375fb116bcb817b37509ab579dbd55cdbb765cbfCarl Shapiro#ifndef LIBDEX_DEXDEBUGINFO_H_ 22375fb116bcb817b37509ab579dbd55cdbb765cbfCarl Shapiro#define LIBDEX_DEXDEBUGINFO_H_ 23a70a3d8faa8f7332549fa0c9ae2008d428e28606Dan Bornstein 249ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein#include "DexFile.h" 259ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein 269ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein/* 279ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Callback for "new position table entry". 289ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Returning non-0 causes the decoder to stop early. 299ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein */ 309ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornsteintypedef int (*DexDebugNewPositionCb)(void *cnxt, u4 address, u4 lineNum); 319ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein 329ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein/* 339ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Callback for "new locals table entry". "signature" is an empty string 349ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * if no signature is available for an entry. 359ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein */ 369ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornsteintypedef void (*DexDebugNewLocalCb)(void *cnxt, u2 reg, u4 startAddress, 379ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein u4 endAddress, const char *name, const char *descriptor, 389ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein const char *signature); 399ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein 409ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein/* 419ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * Decode debug info for method. 429ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * 439ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * posCb is called in ascending address order. 449ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein * localCb is called in order of ascending end address. 459ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein */ 469ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornsteinvoid dexDecodeDebugInfo( 479ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein const DexFile* pDexFile, 489ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein const DexCode* pDexCode, 499ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein const char* classDescriptor, 509ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein u4 protoIdx, 519ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein u4 accessFlags, 529ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein DexDebugNewPositionCb posCb, DexDebugNewLocalCb localCb, 539ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein void* cnxt); 549ea32b0a0fa0eb4c4bfcd73f0c7fe15ddb0f9ce2Dan Bornstein 55375fb116bcb817b37509ab579dbd55cdbb765cbfCarl Shapiro#endif // LIBDEX_DEXDEBUGINFO_H_ 56