• Sergey Senozhatsky's avatar
    symbol lookup: introduce dereference_symbol_descriptor() · 04b8eb7a
    Sergey Senozhatsky authored
    dereference_symbol_descriptor() invokes appropriate ARCH specific
    function descriptor dereference callbacks:
    - dereference_kernel_function_descriptor() if the pointer is a
      kernel symbol;
    
    - dereference_module_function_descriptor() if the pointer is a
      module symbol.
    
    This is the last step needed to make '%pS/%ps' smart enough to
    handle function descriptor dereference on affected ARCHs and
    to retire '%pF/%pf'.
    
    To refresh it:
      Some architectures (ia64, ppc64, parisc64) use an indirect pointer
      for C function pointers - the function pointer points to a function
      descriptor and we need to dereference it to get the actual function
      pointer.
    
      Function descriptors live in .opd elf section and all affected
      ARCHs (ia64, ppc64, parisc64) handle it properly for kernel and
      modules. So we, technically, can decide if the dereference is
      needed by simply looking at the pointer: if it belongs to .opd
      section then we need to dereference it.
    
      The kernel and modules have their own .opd sections, obviously,
      that's why we need to split dereference_function_descriptor()
      and use separate kernel and module dereference arch callbacks.
    
    Link: http://lkml.kernel.org/r/20171206043649.GB15885@jagdpanzerIV
    Cc: Fenghua Yu <fenghua.yu@intel.com>
    Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Michael Ellerman <mpe@ellerman.id.au>
    Cc: James Bottomley <jejb@parisc-linux.org>
    Cc: Andrew Morton <akpm@linux-foundation.org>
    Cc: Jessica Yu <jeyu@kernel.org>
    Cc: Steven Rostedt <rostedt@goodmis.org>
    Cc: linux-ia64@vger.kernel.org
    Cc: linux-parisc@vger.kernel.org
    Cc: linuxppc-dev@lists.ozlabs.org
    Cc: linux-kernel@vger.kernel.org
    Signed-off-by: default avatarSergey Senozhatsky <sergey.senozhatsky@gmail.com>
    Tested-by: Tony Luck <tony.luck@intel.com> #ia64
    Tested-by: Santosh Sivaraj <santosh@fossix.org> #powerpc
    Tested-by: Helge Deller <deller@gmx.de> #parisc64
    Signed-off-by: default avatarPetr Mladek <pmladek@suse.com>
    04b8eb7a
vsprintf.c 70.3 KB