On 01/04/2025 2:08 pm, Roger Pau Monne wrote: > The trampoline code is never executed in the position placed by the > loader. It's first copied to the low 1MB, and always executed from > there. > > Move the trampoline code from being in .init.text section into > .init.data, so it's not in an executable section. This allows applying > the relocations safely against a non-executable (and thus non-read only) > section, and then copy the relocated trampoline to the low 1MB. Note > that the trampoline code is placed on an .init section, so zapped after > boot has finished. > > No functional change intended. > > Signed-off-by: Roger Pau Monné <roger....@citrix.com> > --- > An alternative approach is to apply the relocations after having copied the > trampoline to the low 1MB, but that still generates relocations in mkreloc, > which is not helpful for the goal of having no relocations applied to > read-execute code sections. This approach however places code in a data > section, which might cause issues when debugging it.
I, probably most of all, spend a reasonable amount of time disassembling the trampoline. I really would prefer to keep it in an executable section. What are the options with relocations? Can't we simply drop any in the trampoline region? ~Andrew