Changed how direct branches are resolved, to a new simpler method. The old method introduced one major inefficiency related to unconditionally resolving branch targets that weren't necessarily taken. Also updated the debug trace logger to log returns as well. Updated the tracing stuff to always be on, but not always follow conditional branch fall-throughs. It now always follows unconditional JMPs. Updates the basic block info locator stuff to be trace aware, so now that system is at least a bit smarter. Still got some kernel bugs, although not sure why just yet.
Renamed a number of macros, trying to track down a kernel bug. Changed how IBL mangling is done (somewhat), which removes the redzone guard through indirect call/jmp/ret instructions. I thought the IBL was the source of the bug (random null pointer accesses), but not so.
The bug seems to have been the __get_free_page used for the IDT allocation. For the time being, I've limited Granary to supporting only one IDT for the whole kernel, which seems to be typical.
Updated the DBL to propagate the allocator when the trace allocator is enabled.