| /******************************************************************************* |
| * Copyright (c) 2006-2007 Wind River Systems, Inc. and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Eclipse Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/epl-v10.html |
| * |
| * Contributors: |
| * Wind River Systems - initial API and implementation |
| *******************************************************************************/ |
| |
| /* |
| * This module implements low-level functions for reading DWARF debug information. |
| * |
| * Functions in this module use exceptions to report errors, see exceptions.h |
| */ |
| #ifndef D_dwarfio |
| #define D_dwarfio |
| |
| #include "elf.h" |
| |
| extern U4_T dio_gVersion; |
| extern U1_T dio_g64bit; |
| extern U1_T dio_gAddressSize; |
| extern U8_T dio_gUnitPos; |
| extern U4_T dio_gUnitSize; |
| extern U8_T dio_gEntryPos; |
| |
| extern U8_T dio_gFormRef; |
| extern U8_T dio_gFormData; |
| extern U1_T dio_gFormDataSize; |
| extern U1_T * dio_gFormBlockBuf; |
| extern U4_T dio_gFormBlockSize; |
| |
| extern void dio_EnterSection(ELF_Section * Section, U8_T Offset); |
| extern void dio_ExitSection(void); |
| |
| extern void dio_Skip(U8_T Bytes); |
| extern void dio_Read(U1_T * Buf, U4_T Size); |
| extern U8_T dio_GetPos(void); |
| |
| extern U1_T dio_ReadU1(void); |
| extern U2_T dio_ReadU2(void); |
| extern U4_T dio_ReadU4(void); |
| extern U8_T dio_ReadU8(void); |
| |
| extern U4_T dio_ReadLEB128(void); |
| extern U8_T dio_ReadU8LEB128(void); |
| extern I8_T dio_ReadI8LEB128(void); |
| |
| extern U8_T dio_ReadUX(int Size); |
| extern U8_T dio_ReadAddress(void); |
| |
| extern char * dio_ReadString(void); |
| |
| extern U8_T dio_ReadAddrBuf(U1_T * Buf); |
| |
| typedef void (*DIO_EntryCallBack)(U2_T /* Tag */, U2_T /* Attr */, U2_T /* Form */); |
| /* |
| * CallBack is called berore each DWARF entry with Atrr = 0 and Form = 1, |
| * then is is called for each entry attribute with appropriate Attr and Form values, |
| * and then called after the entry with Attr = 0 and Form = 0. |
| * This sequence is repeated for each entry in the debug info unit. |
| */ |
| extern void dio_ReadUnit(DIO_EntryCallBack CallBack); |
| |
| extern void dio_LoadAbbrevTable(ELF_File * File); |
| |
| extern void dio_ChkFlag(U2_T Form); |
| extern void dio_ChkRef(U2_T Form); |
| extern void dio_ChkAddr(U2_T Form); |
| extern void dio_ChkData(U2_T Form); |
| extern void dio_ChkBlock(U2_T Form, U1_T ** Buf, U4_T * Size); |
| extern void dio_ChkString(U2_T Form); |
| |
| #endif |
| |