summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--dwflpp.cxx11
-rw-r--r--includes/sys/sdt.h8
2 files changed, 10 insertions, 9 deletions
diff --git a/dwflpp.cxx b/dwflpp.cxx
index e01c6974..61627e16 100644
--- a/dwflpp.cxx
+++ b/dwflpp.cxx
@@ -2341,11 +2341,13 @@ dwflpp::get_blacklist_section(Dwarf_Addr addr)
Dwarf_Addr
-dwflpp::relocate_address(Dwarf_Addr addr,
+dwflpp::relocate_address(Dwarf_Addr dw_addr,
string& reloc_section,
string& blacklist_section)
{
- Dwarf_Addr reloc_addr = addr;
+ // PR10273
+ // libdw address, so adjust for bias gotten from dwfl_module_getdwarf
+ Dwarf_Addr reloc_addr = dw_addr + module_bias;
if (!module)
{
assert(module_name == TOK_KERNEL);
@@ -2364,14 +2366,13 @@ dwflpp::relocate_address(Dwarf_Addr addr,
if (reloc_section == "" && dwfl_module_relocations (module) == 1)
{
- blacklist_section = get_blacklist_section(addr);
+ blacklist_section = get_blacklist_section(dw_addr);
reloc_section = ".dynamic";
- reloc_addr += module_bias; // PR10273
}
}
else
{
- blacklist_section = get_blacklist_section(addr);
+ blacklist_section = get_blacklist_section(dw_addr);
reloc_section = ".absolute";
}
return reloc_addr;
diff --git a/includes/sys/sdt.h b/includes/sys/sdt.h
index 10639d9c..0f86cc3b 100644
--- a/includes/sys/sdt.h
+++ b/includes/sys/sdt.h
@@ -257,10 +257,10 @@ do { \
syscall (STAP_SYSCALL, #probe, GETTID); \
} while (0)
-#define STAP_PROBE1_(probe,label,parm1) \
-do { \
- STAP_PROBE_DATA(probe,STAP_GUARD,1); \
- syscall (STAP_SYSCALL, #probe, GETTID, parm1); \
+#define STAP_PROBE1_(probe,label,parm1) \
+do { \
+ STAP_PROBE_DATA(probe,STAP_GUARD,1); \
+ syscall (STAP_SYSCALL, #probe, GETTID, (size_t)parm1); \
} while (0)
#define STAP_PROBE2_(probe,label,parm1,parm2) \