summaryrefslogtreecommitdiffstats
path: root/runtime/sym.h
diff options
context:
space:
mode:
authorFrank Ch. Eigler <fche@elastic.org>2008-04-13 14:59:36 -0400
committerFrank Ch. Eigler <fche@elastic.org>2008-04-13 14:59:36 -0400
commit1ec6761a6b893c2c755753617bebac79b3040fca (patch)
treebd252bb1d5253e1a10ff24b1790e6e0e1b7cec02 /runtime/sym.h
parentbf50bb491c5bfcf3035de45ac58acf11ed02af06 (diff)
parent1c86aa2adc1165906057cdde4cc7484468726fc4 (diff)
downloadsystemtap-steved-1ec6761a6b893c2c755753617bebac79b3040fca.tar.gz
systemtap-steved-1ec6761a6b893c2c755753617bebac79b3040fca.tar.xz
systemtap-steved-1ec6761a6b893c2c755753617bebac79b3040fca.zip
Merge commit 'origin/unwind'
* commit 'origin/unwind': Fixes for 2.6.25 pt_regs changes. Include string.h Change stap to get kernel symbols from debuginfo and reincarnate vim/ directory in this branch to match master Add new define STP_USE_DWARF_UNWINDER which is set based on which archs Remove misleading error message. Support for kernels built with CONFIG_FRAME_POINTER Fix regression. dded _stp_read_address() and changed code to use it. kretprobe trampoline fixes i386 fixes. control.c (_stp_ctl_write_dbug): Insert missing break. 32-bit fixes Cleanup. 2008-03-23 Frank Ch. Eigler <fche@elastic.org> 2008-03-23 Frank Ch. Eigler <fche@elastic.org> 2008-03-21 Eugene Teo <eugeneteo@kernel.sg> add (back) runtime/unwind files * clarify utility of epilogue-type probe aliases in documentation rebased unwind_branch on top of current master
Diffstat (limited to 'runtime/sym.h')
-rw-r--r--runtime/sym.h25
1 files changed, 15 insertions, 10 deletions
diff --git a/runtime/sym.h b/runtime/sym.h
index b124882a..0bb64c13 100644
--- a/runtime/sym.h
+++ b/runtime/sym.h
@@ -7,8 +7,8 @@
* later version.
*/
-#ifndef _STAP_SYMBOLS_H_
-#define _STAP_SYMBOLS_H_
+#ifndef _STP_SYM_H_
+#define _STP_SYM_H_
#define STP_MODULE_NAME_LEN 64
@@ -16,11 +16,6 @@ struct _stp_symbol {
unsigned long addr;
const char *symbol;
};
-struct stap_symbol {
- unsigned long addr;
- const char *symbol;
- const char *module;
-};
DEFINE_RWLOCK(_stp_module_lock);
#define STP_RLOCK_MODULES read_lock_irqsave(&_stp_module_lock, flags)
@@ -50,8 +45,14 @@ struct _stp_module {
/* how many sections this module has */
uint32_t num_sections;
- /* how the symbol_data below was allocated */
- int32_t allocated; /* 0 = kmalloc, 1 = vmalloc */
+ /* how the data below was allocated */
+ /* 0 = kmalloc, 1 = vmalloc */
+ struct {
+ unsigned symbols :1;
+ unsigned symbol_data :1;
+ unsigned unwind_data :1;
+ unsigned unwind_hdr :1;
+ } allocated;
struct _stp_symbol *sections;
@@ -63,7 +64,10 @@ struct _stp_module {
/* the stack unwind data for this module */
void *unwind_data;
+ void *unwind_hdr;
uint32_t unwind_data_len;
+ uint32_t unwind_hdr_len;
+ uint32_t unwind_is_ehframe; /* unwind data comes from .eh_frame */
rwlock_t lock; /* lock while unwinding is happening */
};
@@ -80,7 +84,8 @@ struct _stp_module *_stp_modules_by_addr[STP_MAX_MODULES];
/* the number of modules in the arrays */
int _stp_num_modules = 0;
+static unsigned long _stp_kretprobe_trampoline = 0;
unsigned long _stp_module_relocate (const char *module, const char *section, unsigned long offset);
static struct _stp_module *_stp_get_unwind_info (unsigned long addr);
-#endif /* _STAP_SYMBOLS_H_ */
+#endif /* _STP_SYM_H_ */