Hi Marvin,

Thanks for the context.


On Thu, 30 Mar 2023 at 23:54, Marvin Häuser <mhaeu...@posteo.de> wrote:
>
> Hi Ard,
>
> Sorry, I cannot preserve the CC list as the groups.io interface doesn't seem 
> to allow it. Can you please CC me on future revisions?
>
> This patch will badly corrupt binaries. I cannot cite a source right now (if 
> you want me to, please remind me in your response, so I can look it up 
> tomorrow), but for X64 (but not IA32, which is why this is enabled there), 
> relocs are relative to the first *writable* segment. In other words, any 
> relocation to __TEXT will badly corrupt binaries this way.
>

OMG.

I can't believe how buggy all this stuff is. But I can confirm that
the resulting binaries don't look right, even though they appear to
boot fine. In particular, when I dump the PE relocations using
llvm-readobj --coff-basereloc, I don't see any relocations referring
to the .text section.

> In AUDK, we support this with two essential changes. The first is that we 
> always generate a writable dummy segment at the beginning of the address 
> space [1], making the relocs relative to the image base. The second is that 
> in ocmtoc, our fork of the abandoned (and pretty badly-bugged) Apple mtoc, we 
> explicitly require this segment to be present and verify its virtual address 
> is the minimum virtual address [2]. It is then omitted from the conversion 
> process [3]. I suggest you replicate these changes and fully switch to ocmtoc 
> for XCODE5 builds.
>

I'm not going to do any of that. Instead, I am going to drop this
change, and do the following:

- modify the SecPei version of CpuExceptionHandlerLib to put the
vector templates in .data, as I proposed before. This works around the
issue, and given that SEC/PEI is assumed to be read-only anyway (as it
may execute in place from flash) and does not use page alignment for
the sections due to size constraints, it is reasonable to assume that
.text and .data will be mapped executable anyway.

- update the version that performs the runtime fixups to only do so
when using the XCODE toolchain - we can phase that out once we drop
XCODE support.


-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#102244): https://edk2.groups.io/g/devel/message/102244
Mute This Topic: https://groups.io/mt/97960758/21656
Group Owner: devel+ow...@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-


Reply via email to