This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug runtime/11015] Support shared library reloading (in different processes)


------- Additional Comments From mjw at redhat dot com  2009-12-21 14:47 -------
commit ea549ffc2915aa58861637472b12196222673fa2
Author: Mark Wielaard <mjw@redhat.com>
Date:   Mon Dec 21 13:02:19 2009 +0100

  PR11015 Support shared library reloading (in different processes)
  
  * runtime/task_finder_vma.c (stap_remove_vma_map_info): Return negative
    status on failure.
    (stap_find_vma_map_info): Likewise.
    (stap_find_vma_map_info_user): New function.
    (stap_drop_vma_maps): New function.
  * runtime/sym.h (addr): Renamed to static_addr, to store addresses for
    sections which are always mapped at the same address.
    (_stp_module_relocate): Add extra struct task_struct *tsk argument.
  * runtime/sym.c (_stp_tf_exec_cb): New callback, calls stap_drop_vma_maps.
    (_stp_tf_mmap_cb): Don't store address in module.section, but call
    stap_add_vma_map_info() per tsk->group_leader for matched module.
    Don't register empty/null modules.
    (_stp_module_relocate): Take extra struct task_struct *tsk argument,
    cache last tsk used. Only use section->static_addr for none dynamic
    modules. Use stap_find_vma_map_info_user() to locate dynamic modules.
    (_stp_mod_sec_lookup): Add extra argument unsigned long *rel_addr to
    optionally store relative address when module/section found.
    (_stp_kallsyms_lookup): Use _stp_mod_sec_lookup to find relative address.
    (_stp_sym_init): Register _stp_tf_exec_cb in stap_task_finder_target.
    Add error check to see if task finder could be initialized.
  * dwflpp.cxx (emit_address): Pass NULL for kernel/modules and current for
    user tasks to _stp_module_relocate.
  * runtime/transport/symbols.c (_stp_do_relocation): Set new static_addr
    _stp_section field.
  * runtime/unwind.c (adjustStartLoc): Take new struct task_struct *tsk
    argument and pass to stap_find_vma_map_info_user and _stp_module_relocate
    to find adjusted addr.
    (_stp_search_unwind_hdr): Pass through struct task_struct *tsk.
    (unwind_frame): Likewise.
  * tapset/context-symbols.stp (probemod): Add NULL to _stp_mod_sec_lookup
    call to indicate we aren't interested in relative address.
  * tapsets.cxx (dwarf_derived_probe_group::emit_module_init): Pass NULL to
    _stp_module_relocate to indicate kernel/module address.

-- 
           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
         Resolution|                            |FIXED


http://sourceware.org/bugzilla/show_bug.cgi?id=11015

------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]