GDB: introduce external libraries

This instroduces external libraries that are used by the avocado GDB
handling library. The two libraries are:

1) the spark parser, used as part of cPython builds, but not available
   a pip'able package or distro level packages;
2) the GDB MI parser from the pygdb project. Project seems to be be dead
   but the parser is really useful and fits well with avocado's needs.
   Also not pip'able or available from a distro package.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add GNU Debugger handling library

This library is supposed to be useful both to test writers and to avocado itself.

Test writers may want to explicitly interact with the GNU debugger, run their
applications both in out outside it, generate core dumps, etc.

Avocado itself uses that library to implement the GDB plugin, that allows test
runners to run binaries inside the debugger transparently.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
gdbtest: introduce new test

This test fires a GDB instance, sends both valid and invalid commands,
runs a couple of binaries, setting breakpoints, catching signals and
generating core dumps.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
avocado/runtime.py: add runtime configuration module

Simple namespace for storing configurations that will affect
the avocado runtime, including the test runner and standard
API behavior.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB plugin: enables GNU Debugger features

Such as the ability to run any number of applications inside the
debugger transparently.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
job runtime: set the currently running test

So that other parts of the framework may act upon it if necessary.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add transparent support to avocado/utils/process.py

So that any code using our process API can be run through a debugger.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add paused and paused_msg to the test state and job main loop

paused is a boolean that indicates if the test is paused, and paused_msg
may contain a message to give to the user running the test.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: add documentation about the feature, caveats and workarounds

Signed-off-by: Cleber Rosa <crosa@redhat.com>
GDB: be more explicit about the current big caveat

There is actually *no way* to perform I/O with the inferior process
STDIN/STDOUT/STDERR, so let's be clear about it.

Signed-off-by: Cleber Rosa <crosa@redhat.com>
avocado/utils/process.py: raise an exception instead of returning possible failure as success

Signed-off-by: Cleber Rosa <crosa@redhat.com>
Merge pull request #198 from clebergnu/gdb_interactive_v2

GDB v2
avocado.utils.build: introduce env parameter to make()

This way users can specify environment variables (such as CFLAGS,
which is very common) to be used when building something using make.

Signed-off-by: Ademar de Souza Reis Jr <areis@redhat.com>
tests/doublefree.py: build with debug symbols

So that we can use it to showcase gdb support

Signed-off-by: Ademar de Souza Reis Jr <areis@redhat.com>
avocado.external: Indentation fixes

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
setup.py: Add missing external module
Merge pull request #200 from avocado-framework/trivial-fixes-12

Trivial fixes 12
avocado: Bump version to 0.12.0

Our new upstream version.

Signed-off-by: Lucas Meneghel Rodrigues <lmr@redhat.com>
Merge pull request #201 from adereis/master

uitls.build.make(): support env variables (such as CFLAGS)
avocado.job: output a line break after Ctrl+C

Otherwise, the rest of the console UI ("PASS: ...") will stay in the same
line as the throbber.

Before the patch:
    ...
    TESTS     : 1
    (1/1) linuxbuild.py:  ^CPASS      : 0
    ERROR     : 0
    FAIL      : 0
    ...

After:
    ...
    TESTS     : 1
    (1/1) linuxbuild.py:  ^C
    PASS      : 0
    ERROR     : 0
    ...

Signed-off-by: Ademar de Souza Reis Jr <areis@redhat.com>