add file hint to add-patches-section

Currently, add-patches-section just blindly looks in vmlinux
for a function symbol matching the name of the patched function
in the input object file.  However, for local symbols, they may
appear multiple times in the vmlinux symbol table since the symbol
name may be reused locally in different files.

This commit add support for "file hinting".  It tracks what
file the symbol is in and searches for local symbols within
that file in vmlinux first.  If it doesn't find one, it then
searches globally like it always has.

Fixes issue #53

Signed-off-by: Seth Jennings <sjenning@redhat.com>
remove dead code

Signed-off-by: Seth Jennings <sjenning@redhat.com>
remove obsolete comments

Signed-off-by: Seth Jennings <sjenning@redhat.com>
add TODO to de-dup code

Signed-off-by: Seth Jennings <sjenning@redhat.com>
Merge pull request #55 from spartacus06/fixes

Fixes for symbol collisions in add-patches-section and cleanup
kmod/core: update API and use hash table

My apologies for the size of this commit.  I combined these two features
(updating API and using a hash table) into a single commit because their
implementations are tightly coupled and I didn't want to have to add
support for the old kpatch_funcs array with the new API just for the
sake of splitting up the commit :-)

- Update the core module API to get a more clear separation between core
  module and patch module.  This is cleaner and will help our case for
  getting the core module merged upstream into the kernel.
- Convert the old kpatch_funcs array into a hash table.  This is so much
  nicer performance-wise and everything-else-wise than that ugly old
  array.
- Do the incremental patching in stop machine.  This ensures that the
  funcs hash is up to date and we don't miss anything.
- Disable preemption in the ftrace handler when accessing the func hash.
  That way we don't get conflicts with the stop_machine handler updating
  the hash.
Merge pull request #63 from jpoimboe/core-api-hash

kmod/core: new API and kpatch_funcs_hash
core/kmod: use kmalloc instead of kzalloc

There's no need to zero out the kpatch funcs array.  The addr fields are
initialized by the patch module, the mod field is intialized by the core
module, and the node struct doesn't need to be initialized because its
fields are overwritten by hash_add.
Merge pull request #68 from jpoimboe/core-no-kzalloc

core/kmod: use kmalloc instead of kzalloc