ranges: add initial kprobes demo

This adds a small demo of sectoin ranges matching the style
used in the Linux kernel for kprobes. The only use case we give
and test here is being able to annotate routines as part of
the kprobe section, or not. We test a __kprobes routine, and
then also test another routine without the __kprobes annotation.

To support section ranges properly I noticed we needed to also
extend ranges.h with a proper:

SECTION_RANGE_BEGIN()
SECTION_RANGE_END()

These are used for the DEFINE_SECTION_RANGE(), which is used
to require the user to specify the specific section the custom
section range being defined belongs to.

The next required set of tests would be to test sub-sections...
Its not clear what examples there are for these yet though.
At least I have not seen them in

Results:

Initializing x86 bare metal world
Number of init entries: 8
Initializing kasan ...
Early init for Kasan...
Completed initializing kasan !
Initializing memory ...
Completed initializing memory !
Initializing kprobes ...
== OK: test_kprobe_0001 within range!
== OK: test_kprobe_0002 not in range as expected!
Completed initializing kprobes !
Initializing pci ...
PCI fixup size: 1
Demo: Using LINKTABLE_FOR_EACH
foo_fixup
Demo: Using LINKTABLE_RUN_ALL
foo_fixup
Completed initializing pci !
Initializing beta ...
Completed initializing beta !
Initializing alpha ...
Completed initializing alpha !
Initializing acme ...
Completed initializing acme !
Booting bare metal
Calling start_kernel()...
Running setup_arch for kasan ...
Calling setup_arch work for Kasan...

Signed-off-by: Luis R. Rodriguez <mcgrof@kernel.org>
3 files changed