Skip to content
  1. Jan 19, 2011
  2. Jan 16, 2011
    • Stephen Wilson's avatar
      Initial support for a DynamicLoader plugin on Linux. · 2103e25e
      Stephen Wilson authored
      This patch is enough to have shared objects recognized by LLDB.  We can handle
      position independent executables.  We can handle dynamically loaded modules
      brought in via dlopen.
      
      The DYLDRendezvous class provides an interface to a structure present in the
      address space of ELF-based processes.  This structure provides the address of a
      function which is called by the linker each time a shared object is loaded and
      unloaded (thus a breakpoint at that address will let LLDB intercept such
      events), a list of entries describing the currently loaded shared objects, plus
      a few other things.
      
      On Linux, processes are brought up with an auxiliary vector on the stack.  One
      element in this vector contains the (possibly dynamic) entry address of the
      process.  One does not need to walk the stack to find this information as it is
      also available under /proc/<pid>/auxv.  The new AuxVector class provides a
      convenient read-only view of this auxiliary vector information.  We use the
      dynamic entry address and the address as specified in the object file to compute
      the actual load address of the inferior image.  This strategy works for both
      normal executables and PIE's.
      
      llvm-svn: 123592
      2103e25e
Loading