ClangSharp icon indicating copy to clipboard operation
ClangSharp copied to clipboard

Anonymous bitmask fields generating with the same field name

Open nathan-alden-sr opened this issue 5 years ago • 0 comments

From winnt.h:

typedef struct _ImageArchitectureHeader {
    unsigned int AmaskValue: 1;                 // 1 -> code section depends on mask bit
                                                // 0 -> new instruction depends on mask bit
    int :7;                                     // MBZ
    unsigned int AmaskShift: 8;                 // Amask bit in question for this fixup
    int :16;                                    // MBZ
    DWORD FirstEntryRVA;                        // RVA into .arch section to array of ARCHITECTURE_ENTRY's
} IMAGE_ARCHITECTURE_HEADER, *PIMAGE_ARCHITECTURE_HEADER;

turns into this:

public partial struct ImageArchitectureHeader
{
    internal uint _bitfield;

    [NativeTypeName("unsigned int : 1")]
    public uint AmaskValue
    {
        get
        {
            return _bitfield & 0x1u;
        }

        set
        {
            _bitfield = (_bitfield & ~0x1u) | (value & 0x1u);
        }
    }

    [NativeTypeName("int : 7")]
    public int field
    {
        get
        {
            return (_bitfield >> 1) & 0x7F;
        }

        set
        {
            _bitfield = (_bitfield & ~(0x7F << 1)) | ((value & 0x7F) << 1);
        }
    }

    [NativeTypeName("unsigned int : 8")]
    public uint AmaskShift
    {
        get
        {
            return (_bitfield >> 8) & 0xFFu;
        }

        set
        {
            _bitfield = (_bitfield & ~(0xFFu << 8)) | ((value & 0xFFu) << 8);
        }
    }

    [NativeTypeName("int : 16")]
    public int field
    {
        get
        {
            return (_bitfield >> 16) & 0xFFFF;
        }

        set
        {
            _bitfield = (_bitfield & ~(0xFFFF << 16)) | ((value & 0xFFFF) << 16);
        }
    }

    [NativeTypeName("DWORD")]
    public uint FirstEntryRVA;
}

thus causing a duplicate field compiler error.

nathan-alden-sr avatar May 09 '20 21:05 nathan-alden-sr