blob: 395c08fbfe49f86f4f3a080b00b852ea42283e04 [file] [log] [blame]
/*******************************************************************************
* 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