This commit is the final step in ensuring all the pipes commit what they
should. It also asserts this actually happens, enabling us to easily
catch future problems.
Replace the stub implementation of invalidation with the proper
implementation. A ReadPathCache is added to each global so that it can
keep tracks of what target are associated to which read paths.
In LinkForTranslation we create an object file for each segment in the
input binary. In order to do this, we use `objcopy`. However, an object
file without a `.note.GNU-stack` section will trigger the linked program
to have the stack executable, which we don't want.
This led the linker to complain as follows:
ld.bfd: warning: object.o: missing .note.GNU-stack section implies
executable stack
ld.bfd: NOTE: This behaviour is deprecated and will be removed in a
future version of the linker
This commit adds to the `objcopy` invocation a flag to create the
`.note.GNU-stack` section.