From ee97c0ca03cf35ddc2ebb7c7590d57cd7d407e14 Mon Sep 17 00:00:00 2001 From: Pierre Muller Date: Tue, 25 Jul 2023 11:11:54 +0000 Subject: [PATCH] Add missing TPECoffExpDir variantr of MaybeSwap procedure --- compiler/ogcoff.pas | 62 ++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 15 deletions(-) diff --git a/compiler/ogcoff.pas b/compiler/ogcoff.pas index 7163129c10..425bfaf1b9 100644 --- a/compiler/ogcoff.pas +++ b/compiler/ogcoff.pas @@ -571,6 +571,20 @@ implementation zero_fill_size : dword; flags : dword; end; + + TPECoffExpDir=packed record + flag, + stamp : cardinal; + Major, + Minor : word; + Name, + Base, + NumFuncs, + NumNames, + AddrFuncs, + AddrNames, + AddrOrds : cardinal; + end; { MaybeSwap procedures tcoffpedatadir = packed record vaddr : longword; @@ -882,7 +896,39 @@ implementation v.flags:=SwapEndian(v.flags); end; end; - +(* + TPECoffExpDir=packed record + flag, + stamp : cardinal; + Major, + Minor : word; + Name, + Base, + NumFuncs, + NumNames, + AddrFuncs, + AddrNames, + AddrOrds : cardinal; + end; + *) + procedure MaybeSwap(var v : TPECoffExpDir); + begin + if source_info.endian<>target_info.endian then + begin + v.flag:=SwapEndian(v.flag); + v.stamp:=SwapEndian(v.stamp); + v.Major:=SwapEndian(v.Major); + v.Minor:=SwapEndian(v.Minor); + v.Name:=SwapEndian(v.Name); + v.Base:=SwapEndian(v.Base); + v.NumFuncs:=SwapEndian(v.NumFuncs); + v.NumNames:=SwapEndian(v.NumNames); + v.AddrFuncs:=SwapEndian(v.AddrFuncs); + v.AddrNames:=SwapEndian(v.AddrNames); + v.AddrOrds:=SwapEndian(v.AddrOrds); + end; + end; + const SymbolMaxGrow = 200*sizeof(coffsymbol); StrsMaxGrow = 8192; @@ -3744,20 +3790,6 @@ const pemagic : array[0..3] of byte = ( {$endif win32} function ReadDLLImports(const dllname:string;readdllproc:Treaddllproc):boolean; - type - TPECoffExpDir=packed record - flag, - stamp : cardinal; - Major, - Minor : word; - Name, - Base, - NumFuncs, - NumNames, - AddrFuncs, - AddrNames, - AddrOrds : cardinal; - end; var DLLReader : TObjectReader; DosHeader : array[0..$7f] of byte;