mirror of
https://github.com/openharmony/third_party_elfutils.git
synced 2026-07-21 07:45:27 -04:00
efba194008
Signed-off-by: lizhenlin <lizhenlin2@h-partners.com>
88 lines
2.4 KiB
C
88 lines
2.4 KiB
C
/* Internal definitions for libdwfl_stacktrace.
|
|
Copyright (C) 2025 Red Hat, Inc.
|
|
This file is part of elfutils.
|
|
|
|
This file is free software; you can redistribute it and/or modify
|
|
it under the terms of either
|
|
|
|
* the GNU Lesser General Public License as published by the Free
|
|
Software Foundation; either version 3 of the License, or (at
|
|
your option) any later version
|
|
|
|
or
|
|
|
|
* the GNU General Public License as published by the Free
|
|
Software Foundation; either version 2 of the License, or (at
|
|
your option) any later version
|
|
|
|
or both in parallel, as here.
|
|
|
|
elfutils is distributed in the hope that it will be useful, but
|
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
General Public License for more details.
|
|
|
|
You should have received copies of the GNU General Public License and
|
|
the GNU Lesser General Public License along with this program. If
|
|
not, see <http://www.gnu.org/licenses/>. */
|
|
|
|
#ifndef _LIBDWFL_STACKTRACEP_H
|
|
#define _LIBDWFL_STACKTRACEP_H 1
|
|
|
|
#include <libdwfl_stacktrace.h>
|
|
|
|
#include "libdwflP.h"
|
|
|
|
/* Hash table for Elf *. */
|
|
typedef struct
|
|
{
|
|
char *module_name; /* dwfltracker_elftab_ent is used iff non-NULL. */
|
|
int fd;
|
|
Elf *elf;
|
|
dev_t dev;
|
|
ino_t ino;
|
|
time_t last_mtime;
|
|
} dwflst_tracker_elf_info;
|
|
#include "dwflst_tracker_elftab.h"
|
|
|
|
/* Hash table for Dwfl *. */
|
|
typedef struct
|
|
{
|
|
Dwfl *dwfl;
|
|
bool invalid; /* Mark when the dwfl has been removed. */
|
|
} dwflst_tracker_dwfl_info;
|
|
#include "dwflst_tracker_dwfltab.h"
|
|
|
|
struct Dwflst_Process_Tracker
|
|
{
|
|
const Dwfl_Callbacks *callbacks;
|
|
|
|
/* Table of cached Elf * including fd, path, fstat info. */
|
|
dwflst_tracker_elftab elftab;
|
|
rwlock_define(, elftab_lock);
|
|
|
|
/* Table of cached Dwfl * including pid. */
|
|
dwflst_tracker_dwfltab dwfltab;
|
|
rwlock_define(, dwfltab_lock);
|
|
};
|
|
|
|
|
|
/* Called when dwfl->process->pid becomes known to add the dwfl to its
|
|
Dwflst_Process_Tracker's dwfltab: */
|
|
extern void __libdwfl_stacktrace_add_dwfl_to_tracker (Dwfl *dwfl)
|
|
internal_function;
|
|
|
|
/* Called from dwfl_end() to remove the dwfl from its
|
|
Dwfl_Process_Tracker's dwfltab: */
|
|
extern void __libdwfl_stacktrace_remove_dwfl_from_tracker (Dwfl *dwfl)
|
|
internal_function;
|
|
|
|
|
|
/* Avoid PLT entries. */
|
|
INTDECL (dwflst_module_gettracker)
|
|
INTDECL (dwflst_tracker_find_cached_elf)
|
|
INTDECL (dwflst_tracker_cache_elf)
|
|
|
|
|
|
#endif /* libdwfl_stacktraceP.h */
|