• Linus Torvalds's avatar
    Merge tag 'trace-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace · 343a9f35
    Linus Torvalds authored
    Pull tracing updates from Steven Rostedt:
     "The biggest change here is the updates to kprobes
    
      Back in January I posted patches to create function based events.
      These were the events that you suggested I make to allow developers to
      easily create events in code where no trace event exists. After
      posting those changes for review, it was suggested that we implement
      this instead with kprobes.
    
      The problem with kprobes is that the interface is too complex and
      needs to be simplified. Masami Hiramatsu posted patches in March and
      I've been playing with them a bit. There's been a bit of clean up in
      the kprobe code that was inspired by the function based event patches,
      and a couple of enhancements to the kprobe event interface.
    
       - If the arch supports it (we added support for x86), you can place a
         kprobe event at the start of a function and use $arg1, $arg2, etc
         to reference the arguments of a function. (Before you needed to
         know what register or where on the stack the argument was).
    
       - The second is a way to see array of events. For example, if you
         reference a mac address, you can add:
    
    	echo 'p:mac ip_rcv perm_addr=+574($arg2):x8[6]' > kprobe_events
    
         And this will produce:
    
    	mac: (ip_rcv+0x0/0x140) perm_addr={0x52,0x54,0x0,0xc0,0x76,0xec}
    
      Other changes include
    
       - Exporting trace_dump_stack to modules
    
       - Have the stack tracer trace the entire stack (stop trying to remove
         tracing itself, as we keep removing too much).
    
       - Added support for SDT in uprobes"
    
    [ SDT - "Statically Defined Tracing" are userspace markers for tracing.
      Let's not use random TLA's in explanations unless they are fairly
      well-established as generic (at least for kernel people) - Linus ]
    
    * tag 'trace-v4.20' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace: (24 commits)
      tracing: Have stack tracer trace full stack
      tracing: Export trace_dump_stack to modules
      tracing: probeevent: Fix uninitialized used of offset in parse args
      tracing/kprobes: Allow kprobe-events to record module symbol
      tracing/kprobes: Check the probe on unloaded module correctly
      tracing/uprobes: Fix to return -EFAULT if copy_from_user failed
      tracing: probeevent: Add $argN for accessing function args
      x86: ptrace: Add function argument access API
      tracing: probeevent: Add array type support
      tracing: probeevent: Add symbol type
      tracing: probeevent: Unify fetch_insn processing common part
      tracing: probeevent: Append traceprobe_ for exported function
      tracing: probeevent: Return consumed bytes of dynamic area
      tracing: probeevent: Unify fetch type tables
      tracing: probeevent: Introduce new argument fetching code
      tracing: probeevent: Remove NOKPROBE_SYMBOL from print functions
      tracing: probeevent: Cleanup argument field definition
      tracing: probeevent: Cleanup print argument functions
      trace_uprobe: support reference counter in fd-based uprobe
      perf probe: Support SDT markers having reference counter (semaphore)
      ...
    343a9f35
uprobes.c 56.4 KB