a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/* $Id$ */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/** @file
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * DBGPlugInCommonELF - Common code for dealing with ELF images, Header.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2008-2013 Oracle Corporation
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync *
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * available from http://www.virtualbox.org. This file is free software;
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * you can redistribute it and/or modify it under the terms of the GNU
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * General Public License (GPL) as published by the Free Software
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
6ec4e1827eab6a424d672ef0e5a17b065e52db20vboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#ifndef ___Debugger_DBGPlugInCommonELF_h
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#define ___Debugger_DBGPlugInCommonELF_h
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include <VBox/types.h>
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include "../Runtime/include/internal/ldrELF32.h"
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#include "../Runtime/include/internal/ldrELF64.h"
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/** @name DBGDiggerCommonParseElf32Mod and DBGDiggerCommonParseElf64Mod flags
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * @{ */
ad27e1d5e48ca41245120c331cc88b50464813cevboxsync/** Whether to adjust the symbol values or not. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#define DBG_DIGGER_ELF_ADJUST_SYM_VALUE RT_BIT_32(0)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/** Indicates that we're missing section headers and that
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * all section indexes are to be considered invalid. (Solaris hack.)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync * This flag is incompatible with DBG_DIGGER_ELF_ADJUST_SYM_VALUE. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#define DBG_DIGGER_ELF_FUNNY_SHDRS RT_BIT_32(1)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/** Valid bit mask. */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#define DBG_DIGGER_ELF_MASK UINT32_C(0x00000003)
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync/* @} */
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
98427c0ab08697e468c26dc33ee9571308577867vboxsyncint DBGDiggerCommonParseElf32Mod(PUVM pUVM, const char *pszModName, const char *pszFilename, uint32_t fFlags,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync Elf32_Ehdr const *pEhdr, Elf32_Shdr const *paShdrs,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync Elf32_Sym const *paSyms, size_t cMaxSyms,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync char const *pbStrings, size_t cbMaxStrings,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTGCPTR MinAddr, RTGCPTR MaxAddr, uint64_t uModTag);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
98427c0ab08697e468c26dc33ee9571308577867vboxsyncint DBGDiggerCommonParseElf64Mod(PUVM pUVM, const char *pszModName, const char *pszFilename, uint32_t fFlags,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync Elf64_Ehdr const *pEhdr, Elf64_Shdr const *paShdrs,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync Elf64_Sym const *paSyms, size_t cMaxSyms,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync char const *pbStrings, size_t cbMaxStrings,
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync RTGCPTR MinAddr, RTGCPTR MaxAddr, uint64_t uModTag);
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync#endif
a33af978add1a03aab11b2895f441af5cb2a11a6vboxsync