kpatch/kpatch-build
Josh Poimboeuf 5c98ec65a0 kpatch-build: use original vmlinux
There's at least one case in the kernel (ddebug_proc_show) where the
compiled instructions are affected by the source file path given to gcc.
Which means that compiling the kernel with O= will result in many of the
function addresses changing.  This causes a mismatch between the locally
compiled vmlinux and the original vmlinux, which is very dangerous,
since we need the addresses to be correct.

The easy fix is just to use the original vmlinux for all the function
addresses.

Other potential ways to fix it which we might want to consider in the
future:

- use a combination of the old System.map and the new vmlinux to find
  the addresses.  The function ordering should be the same.  For
  non-duplicate symbols, use System.map.  For duplicate symbols, use
  vmlinux to find what order the symbol comes in.  e.g. the 2nd
  occurrence of foo() in System.map.  It adds a little complexity to the
  lookup code, but seems safe and wouldn't require the kernel debuginfo
  package.  However, this may not help us for patching modules.

- do something similar at runtime, i.e. use kallsyms_lookup_name for
  non-dups and kallsyms_on_each_symbol for dups, and look for the nth
  occurrence of the symbol (value of n is decided at build time).  This
  has the complexity of the previous option but it's done at runtime
  rather than build time, so... why?  Doing it at build time is better.

- compile the kernel in place.  This basically means no more caching
  because recompiling with --function-sections causes everything to be
  recompiled again.  This is bad for kpatch developers' SSDs...
2014-05-16 21:19:25 -05:00
..
add-patches-section.c Revert #186 (add dynamic symbol linking support) 2014-05-15 17:34:16 -05:00
create-diff-object.c Revert #186 (add dynamic symbol linking support) 2014-05-15 17:34:16 -05:00
kpatch-build kpatch-build: use original vmlinux 2014-05-16 21:19:25 -05:00
link-vmlinux-syms.c Revert #186 (add dynamic symbol linking support) 2014-05-15 17:34:16 -05:00
list.h fix list corruption in special section handlers 2014-05-15 15:27:53 -05:00
Makefile Revert #186 (add dynamic symbol linking support) 2014-05-15 17:34:16 -05:00