On 26/06/2025 1:45 pm, Jan Beulich wrote: > At least GNU ld 2.35 takes this option to (also) mean what newer > versions have controllable by --enable-reloc-section. From there being > no relocations in check.efi (as we don't pass the option there) we infer > that we need to involve mkreloc, we'd end up with two sets of > relocations, which clearly isn't going to work. Furthermore the > relocations ld emits in this case also aren't usable: For bsp_idt[] we > end up with PE_BASE_RELOC_LOW ones, which efi_arch_relocate_image() > (deliberately) doesn't know how to deal with. (Related to that is also > why we check the number of relocations produced: The linker simply > didn't get this right there, yet.) > > We also can't add the option to what we use when linking check.efi: That > ld version then would produce relocations, but 4 of them (instead of the > expected two). That would make us pass --disable-reloc-section, which > however only ld 2.36 and newer understand. > > For such older binutils versions we therefore need to accept the slight > inconsistency in DLL characteristics that the earlier commit meant to > eliminate. > > Fixes: f2148773b8ac ("x86/EFI: sanitize DLL characteristics in binary") > Signed-off-by: Jan Beulich <jbeul...@suse.com>
Acked-by: Andrew Cooper <andrew.coop...@citrix.com>