mirror of
https://github.com/ApfelTeeSaft/reactos.git
synced 2026-09-02 12:23:31 +00:00
[BOOTMGR]: ThFabba making me jealous. Fix a logic bug that Coverity *didn't* find. Ha. I'm better.
[BOOTLIB]: Apply the "Fuck You Binutils" hack only for ld-generated files, to unbreak MSVC UEFI boot. svn path=/trunk/; revision=73684
This commit is contained in:
@@ -2276,7 +2276,7 @@ BmpTransferExecution (
|
||||
BcdLibraryDevice_ApplicationDevice,
|
||||
&AppDevice,
|
||||
NULL);
|
||||
if (NT_SUCCESS(Status))
|
||||
if (!NT_SUCCESS(Status))
|
||||
{
|
||||
/* Force re-enumeration */
|
||||
Status = BlFwEnumerateDevice(AppDevice);
|
||||
|
||||
@@ -883,7 +883,6 @@ ImgpLoadPEImage (
|
||||
|
||||
/* Record our current position (right after the headers) */
|
||||
EndOfHeaders = (ULONG_PTR)VirtualAddress + HeaderSize;
|
||||
EfiPrintf(L"here\r\n");
|
||||
|
||||
/* Get the first section and iterate through each one */
|
||||
Section = IMAGE_FIRST_SECTION(NtHeaders);
|
||||
@@ -981,17 +980,20 @@ ImgpLoadPEImage (
|
||||
if (!First)
|
||||
{
|
||||
/* FUCK YOU BINUTILS */
|
||||
if ((*(PULONG)&Section->Name == 'ler.') && (RawSize < AlignSize))
|
||||
if (NtHeaders->OptionalHeader.MajorLinkerVersion < 7)
|
||||
{
|
||||
/* Piece of shit won't build relocations when you tell it to,
|
||||
* either by using --emit-relocs or --dynamicbase. People online
|
||||
* have found out that by using -pie-executable you can get this
|
||||
* to happen, but then it turns out that the .reloc section is
|
||||
* incorrectly sized, and results in a corrupt PE. However, they
|
||||
* still compute the checksum using the correct value. What idiots.
|
||||
*/
|
||||
WorkaroundForBinutils = AlignSize - RawSize;
|
||||
AlignSize -= WorkaroundForBinutils;
|
||||
if ((*(PULONG)&Section->Name == 'ler.') && (RawSize < AlignSize))
|
||||
{
|
||||
/* Piece of shit won't build relocations when you tell it to,
|
||||
* either by using --emit-relocs or --dynamicbase. People online
|
||||
* have found out that by using -pie-executable you can get this
|
||||
* to happen, but then it turns out that the .reloc section is
|
||||
* incorrectly sized, and results in a corrupt PE. However, they
|
||||
* still compute the checksum using the correct value. What idiots.
|
||||
*/
|
||||
WorkaroundForBinutils = AlignSize - RawSize;
|
||||
AlignSize -= WorkaroundForBinutils;
|
||||
}
|
||||
}
|
||||
|
||||
/* Yes, read the section data */
|
||||
|
||||
Reference in New Issue
Block a user