mirror of
https://github.com/JakeHillion/drgn.git
synced 2024-12-23 17:53:07 +00:00
10142f922f
For now, we only support stack traces for the Linux kernel (at least v4.9) on x86-64, and we only support getting the program counter and corresponding function symbol from each stack frame.
42 lines
1.1 KiB
C
42 lines
1.1 KiB
C
// Copyright 2019 - Omar Sandoval
|
|
// SPDX-License-Identifier: GPL-3.0+
|
|
|
|
#ifndef DRGN_PLATFORM_H
|
|
#define DRGN_PLATFORM_H
|
|
|
|
#include <elfutils/libdwfl.h>
|
|
|
|
#include "drgn.h"
|
|
|
|
struct drgn_architecture_info {
|
|
const char *name;
|
|
enum drgn_architecture arch;
|
|
enum drgn_platform_flags default_flags;
|
|
struct drgn_error *(*linux_kernel_set_initial_registers)(Dwfl_Thread *,
|
|
struct drgn_object *);
|
|
};
|
|
|
|
extern const struct drgn_architecture_info arch_info_unknown;
|
|
extern const struct drgn_architecture_info arch_info_x86_64;
|
|
|
|
struct drgn_platform {
|
|
const struct drgn_architecture_info *arch;
|
|
enum drgn_platform_flags flags;
|
|
};
|
|
|
|
/**
|
|
* Initialize a @ref drgn_platform from an architecture, word size, and
|
|
* endianness.
|
|
*
|
|
* The default flags for the architecture are used other than the word size and
|
|
* endianness.
|
|
*/
|
|
void drgn_platform_from_arch(const struct drgn_architecture_info *arch,
|
|
bool is_64_bit, bool is_little_endian,
|
|
struct drgn_platform *ret);
|
|
|
|
/** Initialize a @ref drgn_platform from an ELF header. */
|
|
void drgn_platform_from_elf(GElf_Ehdr *ehdr, struct drgn_platform *ret);
|
|
|
|
#endif /* DRGN_PLATFORM_H */
|