support for__key and __warned special static local vars

Add support for the __key and __warned "special" static local variables.
I'm calling them that for lack of a better term, analagous to the
kernel's special sections that we have to deal with.

__warned: Used by WARN_ONCE et al as an indicator as to whether a
message has already been printed.  I think it makes sense (and is much
easier) to reset this counter for a given function when replacing the
function, since the user may expect the new function to warn again.

__key: Used by lockdep as an identifier for a given lock initialization
code path (see http://lwn.net/Articles/185666/ for more info).  I think
it makes sense (and is much easier) to create a new key for a given
function when replacing the function, because the locking semantics may
have changed, so it makes sense for lockdep to use a new key to validate
the new locking behavior.

So for both __warned and __key static variables, the new version of the
variable should be used when referenced by an included function.

Made the following changes to support these special variables:

- Ignore their suffixes when comparing them in rela_equal, so that gcc
  renaming them will not result in a function being marked as changed
  just because it referenced a renamed static local

- Don't ever correlate them, so that their new versions will be included
  if a changed or new function uses their corresponding symbols

Fixes #402.
don't convert section references to syms for debug sections

This fixes a seg fault in the test suite caused by a debug section
referencing an un-included unbundled symbol (though its section was
included).  The symbol was a __warned symbol and the section was
.data.unlikely.

For debug sections, there is no need to replace section references with
symbols because we don't compare debug sections.
skip data sections when looking for users of static locals

It's possible for a static local variable's data section to have
a relocation which refers to the variable symbol itself.  Fix the logic
which searches for the user of a static local variable by only looking
in text sections (i.e. functions).

Fixes #411.
add another user of is_text_section
allow the user to ignore a rela section

If the user specifies KPATCH_IGNORE_SECTION for a rela section, ignore
the corresponding text section instead of corrupting memory.

Fixes #381.
Merge pull request #414 from jpoimboe/ignore-rela-section

allow the user to ignore a rela section
patch module function/variable renaming

Make the kpatch-patch-hook.c function and variable names consistent by
prefixing them all with 'patch_'.  This makes it easier to distinguish
the patch hook sections from the patched sections when looking at the
ELF section data.
Merge pull request #416 from jpoimboe/patch-function-rename

patch module function/variable renaming
fix the mangled function strcmp

Fix the mangled function strcmp so that it compares all of the string
except for the numbered parts.  foo.isra.35 should match foo.isra.1, but
not foo.isra.35.part.36.

Fixes #352.
add other users of kpatch_mangled_strcmp
Merge pull request #413 from jpoimboe/static-fix

skip data sections when looking for users of static locals
Merge pull request #415 from jpoimboe/mangled-strcmp

fix the mangled function strcmp
Merge pull request #412 from jpoimboe/key-warned

support for__key and __warned special static local vars
check ARCHVERSION for hyphen before creating localversion

If hyphen doesn't exist in uname -r (ARCHVERSION), then it is probably a
non-distro kernel and we don't need to create the localversion file.

Fixes #376

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

check ARCHVERSION for hyphen before creating localversion
fix test conflict

I accidentally added two tests which both create a non-static
kpatch_foo() function, which breaks the combined integration test kernel
build.
Merge pull request #419 from jpoimboe/fix-integration-tests

fix test conflict
process special sections after inclusion logic

The special sections should be processed after all the other inclusion
logic has run, so that should_keep_rela_group() can work properly.
Otherwise it might remove a needed rela group from a special section.
Merge pull request #420 from jpoimboe/special-sections-later

process special sections after inclusion logic
readme: add openssl to F20 dependencies