It is still a hack unless all relative offsets are preserved. That is actually simpler, even: no sorting necessary. On September 26, 2015 11:15:57 AM PDT, Ard Biesheuvel <ard.biesheuvel@xxxxxxxxxx> wrote: >On 26 September 2015 at 10:20, H. Peter Anvin <hpa@xxxxxxxxx> wrote: >> I think it "works" because the affected BIOSes don't put spaces >between the chunks. I have discussed this with Matt. >> > >Forgive the ASCII art but perhaps an illustration might help: > >before the 2.5 feature, PE/COFF runtime images were remapped as >illustrated here: > > PA VA >+---------------+ +---------------+ >| | | | >| PE/COFF .text | | EFI | >| | | Runtime | >+- - - - - - - -+ => | Services |----+ >| | | Code | | : : >| PE/COFF .data | | | | : : >| | | | | +---------------+ >+---------------+ +---------------+ | | | >| | | | | | EFI | >: : : : | | Runtime | >: : : : +--->| Services | >| | | | | Code | >+---------------+ +---------------+ | | >| | | | | | >| PE/COFF .text | | EFI | +---------------+ >| | | Runtime | : gap : >+- - - - - - - -+ => | Services |---+ +---------------+ >| | | Code | | | | >| PE/COFF .data | | | | | EFI | >| | | | | | Runtime | >+---------------+ +---------------+ +---->| Services | >| | | | | Code | >: : : : | | >: : : : | | >: : : : +---------------+ >: : : : : : > >Since the affected symbol references only exist between PE/COFF .text >and PE/COFF .data, there is never a problem since each is PE/COFF >image is mapped as a single region. >However, with the new feature enabled, this no longer holds: > PA VA >+---------------+ +---------------+ >| | | | >| PE/COFF .text | | RtServices |----+ >| | | Code | | >+- - - - - - - -+ => +---------------+ | +---------------+ >| | | RtServices | +--->| RtServices | >| PE/COFF .data | | Data | | Code | >| | | |----+ +---------------+ >+---------------+ +---------------+ | : gap : >| | | | | +---------------+ >: : : : +--->| RtServices | >: : : : | Data | >| | | | +---------------+ >+---------------+ +---------------+ : gap : >| | | | +---------------+ >| PE/COFF .text | | RtServices |-------->| RtServices | >| | | Code | | Code | >+- - - - - - - -+ => +---------------+ +---------------+ >| | | RtServices | : gap : >| PE/COFF .data | | Data |---+ +---------------+ >| | | | | | RtServices | >+---------------+ +---------------+ +---->| Data | >| | | | | | >: : : : +---------------+ >: : : : : : >: : : : : : > >The illustration uses gaps, but obviously, this applies equally to >inverting the mapping order, since the PE/COFF .text and .data >sections will end up out of order. -- Sent from my Android device with K-9 Mail. Please excuse my brevity. -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html