Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
systemtap-docs.2327
systemtap-handle-v4.5-kernel.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File systemtap-handle-v4.5-kernel.patch of Package systemtap-docs.2327
From: David Smith <dsmith@redhat.com> Date: Tue Feb 16 11:06:58 2016 -0600 Subject: Handle v4.5 kernel Git-commit 64ffc49b5deb57e19e94f67f9878f5c03e617775 References: bsc#977306 Signed-off-by: Tony Jones <tonyj@suse.de> Fix PR19644 by updating the runtime to handle linux 4.5 commit 8244062ef1. * runtime/transport/symbols.c (_stp_module_update_self): Handle kernel change moving module symbol table information into a 'struct mod_kallsyms'. * runtime/linux/autoconf-mod_kallsyms.c: New autoconf test. * buildrun.cxx (compile_pass): Add autoconf test for 'struct mod_kallsyms'. --- buildrun.cxx | 2 ++ runtime/linux/autoconf-mod_kallsyms.c | 3 +++ runtime/transport/symbols.c | 9 ++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) --- a/buildrun.cxx +++ b/buildrun.cxx @@ -418,6 +418,8 @@ compile_pass (systemtap_session& s) output_autoconf(s, o, "autoconf-tracepoint-strings.c", "STAPCONF_TRACEPOINT_STRINGS", NULL); + output_autoconf(s, o, "autoconf-mod_kallsyms.c", "STAPCONF_MOD_KALLSYMS", NULL); + o << module_cflags << " += -include $(STAPCONF_HEADER)" << endl; for (unsigned i=0; i<s.c_macros.size(); i++) --- /dev/null +++ b/runtime/linux/autoconf-mod_kallsyms.c @@ -0,0 +1,3 @@ +#include <linux/module.h> + +struct mod_kallsyms mk; --- a/runtime/transport/symbols.c +++ b/runtime/transport/symbols.c @@ -206,10 +206,17 @@ static int _stp_module_update_self (void found_eh_frame = true; } else if (!strcmp(".symtab", attr->name)) { - _stp_module_self.sections[0].static_addr = attr->address; +#ifdef STAPCONF_MOD_KALLSYMS + struct mod_kallsyms *kallsyms = rcu_dereference_sched(mod->kallsyms); + if (attr->address == (unsigned long) kallsyms->symtab) + _stp_module_self.sections[0].size = + kallsyms->num_symtab * sizeof(kallsyms->symtab[0]); +#else if (attr->address == (unsigned long) mod->symtab) _stp_module_self.sections[0].size = mod->num_symtab * sizeof(mod->symtab[0]); +#endif + _stp_module_self.sections[0].static_addr = attr->address; } else if (!strcmp(".text", attr->name)) { _stp_module_self.sections[1].static_addr = attr->address;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor