[llvm] r200038 - Support/COFF: Fix PEHeader struct, and define PE32Header as its alias.

Saleem Abdulrasool compnerd at compnerd.org
Fri Jan 24 18:13:38 PST 2014


On Fri, Jan 24, 2014 at 12:54 PM, Rui Ueyama <ruiu at google.com> wrote:

> Author: ruiu
> Date: Fri Jan 24 14:54:10 2014
> New Revision: 200038
>
> URL: http://llvm.org/viewvc/llvm-project?rev=200038&view=rev
> Log:
> Support/COFF: Fix PEHeader struct, and define PE32Header as its alias.
>
> This change does not affect anything because everybody seems to be using
> Object/COFF.h instead. But the definition is not for PE32 but for PE32+,
> so fix it anyway.
>
> Modified:
>     llvm/trunk/include/llvm/Support/COFF.h
>

While it is unclear if we will have support for PEP, it doesn't feel like a
great idea to simply alias PE32Header as PEHeader.  The PE Header for PE32
and PE32+ are ever so slightly different (they account for the difference
by canabalising some of the PE32 header fields and changing the size of
other fields).  I think for the sake of clarity, it might be nicer to just
define both structs and name them appropriately.


>
> Modified: llvm/trunk/include/llvm/Support/COFF.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Support/COFF.h?rev=200038&r1=200037&r2=200038&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/Support/COFF.h (original)
> +++ llvm/trunk/include/llvm/Support/COFF.h Fri Jan 24 14:54:10 2014
> @@ -450,7 +450,7 @@ namespace COFF {
>      uint32_t AddressOfNewExeHeader;
>    };
>
> -  struct PEHeader {
> +  struct PE32Header {
>      enum {
>        PE32 = 0x10b,
>        PE32_PLUS = 0x20b
> @@ -465,7 +465,7 @@ namespace COFF {
>      uint32_t AddressOfEntryPoint; // RVA
>      uint32_t BaseOfCode; // RVA
>      uint32_t BaseOfData; // RVA
> -    uint64_t ImageBase;
> +    uint32_t ImageBase;
>      uint32_t SectionAlignment;
>      uint32_t FileAlignment;
>      uint16_t MajorOperatingSystemVersion;
> @@ -480,14 +480,16 @@ namespace COFF {
>      uint32_t CheckSum;
>      uint16_t Subsystem;
>      uint16_t DLLCharacteristics;
> -    uint64_t SizeOfStackReserve;
> -    uint64_t SizeOfStackCommit;
> -    uint64_t SizeOfHeapReserve;
> -    uint64_t SizeOfHeapCommit;
> +    uint32_t SizeOfStackReserve;
> +    uint32_t SizeOfStackCommit;
> +    uint32_t SizeOfHeapReserve;
> +    uint32_t SizeOfHeapCommit;
>      uint32_t LoaderFlags;
>      uint32_t NumberOfRvaAndSize;
>    };
>
> +  typedef PE32Header PEHeader;
> +
>    struct DataDirectory {
>      uint32_t RelativeVirtualAddress;
>      uint32_t Size;
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>



-- 
Saleem Abdulrasool
compnerd (at) compnerd (dot) org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140124/a626cce7/attachment.html>


More information about the llvm-commits mailing list