mirror of
https://github.com/genodelabs/genode.git
synced 2024-12-19 13:47:56 +00:00
a0abb093ed
The linker scripts use to fill alignment gaps within the text section with the magic value 0x90909090, which correponds to the opcodes of four nop instructions on x86. This patch removes this value because it apparently solves no problem. If, for some reason (e.g., due to a dangling pointer) a thread executes instructions within alignment paddings, NOP instructions are not any better than any other instruction. The program will eventually execute the instructions after the padding, which is most likely fatal. It would be more reasonable to fill the padding with the opcode of an illegal instruction so that such an error can be immediately detected. That said, I cannot remember a single instance, where the fill value has helped us during debugging. Even if the mechanism served a purpose on x86, it is still better to remove it because it does not equally work on the other architectures where the linker scripts are used. I.e., on ARM, the opcode 0x90909090 is not a NOP instruction. |
||
---|---|---|
.. | ||
etc | ||
include | ||
lib | ||
mk | ||
run | ||
src | ||
README |
This is generic part of the Genode implementation. It consists of two parts: :_Core_: is the ultimate root of the Genode application tree and provides abstractions for the lowest-level hardware resources such as RAM, ROM, CPU, and generic device access. All generic parts of Core can be found here - for system-specific implementations refer to the appropriate 'base-<system>' directory. :_Base libraries and protocols_: that are used by each Genode component to interact with other components. This is the glue that holds everything together.