replace DEBUG compiler define with -d/--debug runtime option

I'm tired of setting CFLAGS and people shouldn't have to
recompile to get debug output.  This lays the foundations
proper option handling and logging levels.

Signed-off-by: Seth Jennings <sjenning@redhat.com>
add inventory file creation to create-object-diff

In preparation for adding an automated test framework,
add an ability to create-object-diff that will create
a human readable list of included sections and symbols
with type and bind information so that the test framework
can compare against a known-good reference list with the
expected set of sections and symbols.

The file is created when the -i/--inventory option is
used.  The inventory filename is the user supplied output
file name suffixed by .inventory

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

Testframework
kpatch-build: show changed functions

Pipe create-diff-object output to both stdout and the log file, so the
user can see which functions have changed.
Merge pull request #49 from jpoimboe/show-changed-functions

kpatch-build: show changed functions
add automated testing system

This commit introduces a simple automated testing system
with 3 simple testcase.

For each test case there is a .c, a .patch, and a .inventory
file.  The .c is compiled, using the flags from the kflags file,
to create the original object.  The .c file is then patched
with the .patch file and rebuilt to create the patched object.
The files are then analyzed by the differencing tool and an
output object is generated with a .inventory file that lists
the sections and symbol included in the output object.  That
inventory file is then compared to the .inventory file for
that testcase.  If they are the same, the test passes. If
not, the differences in the inventory files are displayed,
and the test fails.

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

add automated testing system
add comment for __ksymtab_strings case

Signed-off-by: Seth Jennings <sjenning@redhat.com>
add error for sym value != 0

For a local object or function symbol, we expect that
the section offset, sym.st_value, be 0 because we used
-ffunction-sections and -fdata-section during compile.

If value != 0, it undermines assumptions we make and
should return an error.  Exceptions should be handled
on a case by case basis, like __ksymtab_strings.

Signed-off-by: Seth Jennings <sjenning@redhat.com>
fixup comment

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

add a few comments and st_value !=0 error
make kpatch-build a first class script

kpatch-build is outgrowing the kpatch script and probably is a better
fit as its own utility instead of being wrapped by kpatch.  Install
kpatch-build into /usr/local/bin, remove the kpatch wrapper around it,
and update the README accordingly.
kpatch-build --sourcedir option

Allow the user to supply a custom kernel source directory.  This copies
the directory to ~/.kpatch/src instead of using it in place.  Otherwise
the "make mrproper" (which is needed for compiling objects in a separate
tree) would modify the original source tree and remove its .config file.

There's currently no caching support for this option.  If needed, we
could implement that pretty easily by calculating an md5sum of the
original source directory.
Merge pull request #50 from jpoimboe/sourcedir-option

kpatch-build: remove "kpatch build" wrapper and add --sourcedir option