public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
* Enum size checks in Base.h (UINT32 not ISO C compatible)
@ 2023-02-09  2:20 Rebecca Cran
  2023-02-09  2:28 ` Michael D Kinney
  0 siblings, 1 reply; 4+ messages in thread
From: Rebecca Cran @ 2023-02-09  2:20 UTC (permalink / raw)
  To: devel@edk2.groups.io, Michael D Kinney, Liming Gao

In commit 6440385b17def888544c2454ffba58384b929a22 
(https://github.com/tianocore/edk2/commit/6440385b17def888544c2454ffba58384b929a22) 
enum size checks were added.

However, according to gcc, ISO C restricts the size of enum values to 
int; building with -std=c11 -pedantic results in the error:

MdePkg/Include/Base.h:812:28: error: ISO C restricts enumerator values 
to range of ‘int’ [-Werror=pedantic]
   812 |   __VerifyInt32EnumValue = 0xffffffff

Replacing 0xffffffff with 0x7fffffff fixes the problem.

It looks like this might change in C23, but since the use of 
_Static_assert in Base.h we require at least C11 (and I suspect most 
compilers aren't C23 compliant) which states:

"The expression that defines the value of an enumeration constant shall 
be an integer constant expression that has a value representable as an int.
[Section 6.7.2.2]"

The UEFI Specification appears to say we require an INT32 (i.e. a signed 
int) so is the existing code wrong?

-- 
Rebecca Cran

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-02-09 15:57 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-09  2:20 Enum size checks in Base.h (UINT32 not ISO C compatible) Rebecca Cran
2023-02-09  2:28 ` Michael D Kinney
2023-02-09  2:52   ` Rebecca Cran
2023-02-09 15:57   ` Rebecca Cran

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox