Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 23 Jul 2010 17:32:47 +0000 (UTC)
From:      Andriy Gapon <avg@FreeBSD.org>
To:        cvs-src-old@freebsd.org
Subject:   cvs commit: src/cddl/contrib/opensolaris/lib/libdtrace/common dt_impl.h dt_module.c
Message-ID:  <201007231733.o6NHX814095126@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
avg         2010-07-23 17:32:47 UTC

  FreeBSD src repository

  Modified files:
    cddl/contrib/opensolaris/lib/libdtrace/common dt_impl.h 
                                                  dt_module.c 
  Log:
  SVN rev 210425 on 2010-07-23 17:32:47Z by avg
  
  dtrace: correctly map sections to addresses in elf object modules (amd64)
  
  Unlike for modules with dso type, in elf object modules all the sections
  have virtual address of zero.  So, it is insufficient to add module base
  address to section virtual address (as recorded in section header) to
  get section address in kernel memory.
  Instead, we should apply the same calculations that are performed by
  kernel loaders (in boot code and in kernel) when they lay out sections
  in memory.
  Also, unlike OpenSolaris, the sections are not collapsed into just .text,
  .data and .bss by module loaders, so we need to take additional care
  about other sections.
  
  Note that in-kernel symbol-to-address mapping worked just fine, e.g. fbt
  provider could correctly find the functions, etc.  It's only in userland
  that the mapping in both direction worked incorrectly, e.g. in stack()
  output addresses of functions in kernel modules were not translated to
  their names.
  
  Reviewed by:    rpaulo
  MFC after:      3 weeks
  
  Revision  Changes    Path
  1.3       +1 -0      src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h
  1.3       +69 -6     src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_module.c



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201007231733.o6NHX814095126>