On 3 September 2014 23:47, H. Peter Anvin <hpa@xxxxxxxxx> wrote: >> >> Any reason we can't reuse the existing GOT fixup code in the early x86 >> boot code? We're not executing it before the EFI boot stub atm, which is >> the reason Maarten is hitting these difficulties. >> >> Maarten, does the following help? >> >> If not, Ard please go ahead with option #2 above. Overkill yes, but I've >> done the single __attribute__() hacks in other projects and someone >> (usually me) always eventually forgets to tag some instance. >> > > I think we really have two options: either fix up the GOT (which may be > a null operation, if the GOT is empty) or we add a compile-time check > that the GOT is empty, lest we will keep having these problems. > > Since the GOT fixup loop is only a few instructions, it doesn't seem to > be all that problematic to just do it -- but make sure we don't end up > running it twice on any code path! > So how about we: - add ASSERT(_got == _egot, "GOT entries not supported in boot/compressed") to the linker script - #define __nogotentry __attribute__((visibility(hidden))) somewhere in compiler.h or wherever else it belongs - add the __nogotentry qualifiers to each extern that requires it, which is currently: early_serial_base efi_early free_mem_end_ptr free_mem_ptr real_mode - get rid of the fixup code in assembly Any idea what the oldest GCC is we should support? -- Ard. -- To unsubscribe from this list: send the line "unsubscribe linux-efi" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html