This is an implementation of https://github.com/google/sanitizers/issues/579
It has a number of advantages over the current mapping:
- works for non-PIE executables
- does not require ASLR; as a consequence, debugging MSan programs in gdb no longer requires "set disable-randomization off"
- supports linux kernels >=4.1.2
- the code is marginally faster and smaller
This is an ABI break. We never really promised ABI stability, but this patch includes a courtesy escape hatch: a compile-time macro that reverts back to the old mapping layout. The same macro will be used in the llvm part of the patch, their definitions have to match, of course.