If we come across a map that is in another namespace, we might need to
translate it to the filesystem/path inside that mount namespace. Otherwise,
we won't be able to accurately decode ELF symbols due to loading the
incorrect binary/debug files.
This gives us the ability to locate symbols by directory in a much more
maintainable manner. Library consumers can adjust their location based
on where they know symbols are likely to be located.
This allows us to have a sysroot different than /, so that we can resolve
symbols that are not necessarily installed on the system. For example, if
we are running an application in an alternate mount namespace, we will want
to resolve the symbols starting from the location of the checkout for that
namespace.
Generally alternate mount namespaces will have paths like "/newroot/usr/.."
so by setting the source to "/newroot/usr/" to "~/.local/" you can do
some fancy remapping.
This uses an alternate idea for setting the structure alignments. Lets
see if this silents the ARM builder cast alignment issues.
GSlice (which is what is used for GObjects) guarantees a 2-pointer size
allocation, which means we can be ensured that the alignment is at least
8 bytes.
We could have multiple StackNodes that point at the same data. However
we might not have pointer equality. This uses the data pointer that nodes
point at to determine equality.
Using the .ui file to create the name cell does not allow us to set the
expand property (it defaults to FALSE and cannot be changed). So instead,
we just add the cell manually like we do for the tag cell.