On Tue, 11 Dec 2018 at 23:53, David F. <[email protected]> wrote:
>
> I don't know, to me it's very clear that UINTN is talking about the target, 
> just like size_t would be.
>

But which target? This change is against the source of the BaseTools,
which are host tools that can be used to build a single target image
consisting of 32-bit and 64-bit modules. So which size is the native
size in this case?

> There are/were a bunch of API's using UINTN so using UINTN was desirable, and 
> where needed UINTN_MAX.
>
> I just don't see an advantage to removing it.   Do see disadvantage to 
> removing it for breaking existing code and for those that want the "native" 
> (best/fasted/most efficient) int size for the processor (similar again to 
> size_t)
>
> On Tue, Dec 11, 2018 at 7:46 AM Laszlo Ersek <[email protected]> wrote:
>>
>> On 12/11/18 08:11, David F. wrote:
>> > Not sure why you'd take that out when someone using UINTN for variables may
>> > want to use MAX_UINTN ?    Future may be different.
>>
>> The UINTN type comes from the UEFI spec:
>>
>>     Unsigned value of native width. (4 bytes on supported 32-bit
>>     processor instructions, 8 bytes on supported 64-bit processor
>>     instructions, 16 bytes on supported 128-bit processor instructions)
>>
>> In this sense, "native" refers to the firmware execution environment.
>> The firmware execution environment need not have anything in common with
>> the build environment. (You can build 32-bit ARM firmware on X64 hosts.)
>> In such a scenario, using UINTN *at all* is fraught with
>> misunderstandings. It *would* be possible to use UINTN as it applies to
>> the build (= hosted) environment, and in that sense MAX_UINTN would also
>> be possible to define. However, the code being removed (= defining
>> MAX_UINTN as MAX_ADDRESS) proves that that approach would be very easy
>> to misunderstand and misuse. People could easily mistake it for applying
>> to the firmware execution environment.
>>
>> UINT32 and UINT64 are not affected by this ambiguity.
>>
>> Optimally, given that the build utilities target a hosted C runtime,
>> they should use standard C types, such as "unsigned int", or e.g.
>> "uint32_t". Together with standard C macros expressing limits, such as
>> UINT_MAX (from <limits.h>) and UINT32_MAX (from <stdint.h>).
>>
>> Clearly no-one has capacity to clean up BaseTools like this. For
>> starters, we should at least remove whatever actively causes confusion.
>>
>> Thanks,
>> Laszlo
>>
>> > On Mon, Dec 3, 2018 at 5:08 AM Laszlo Ersek <[email protected]> wrote:
>> >
>> >> On 11/30/18 23:45, Ard Biesheuvel wrote:
>> >>> The maximum value that can be represented by the native word size
>> >>> of the *target* should be irrelevant when compiling tools that
>> >>> run on the build *host*. So drop the definition of MAX_UINTN, now
>> >>> that we no longer use it.
>> >>>
>> >>> Contributed-under: TianoCore Contribution Agreement 1.1
>> >>> Signed-off-by: Ard Biesheuvel <[email protected]>
>> >>> Reviewed-by: Jaben Carsey <[email protected]>
>> >>> ---
>> >>>  BaseTools/Source/C/Common/CommonLib.h | 1 -
>> >>>  1 file changed, 1 deletion(-)
>> >>>
>> >>> diff --git a/BaseTools/Source/C/Common/CommonLib.h
>> >> b/BaseTools/Source/C/Common/CommonLib.h
>> >>> index 6930d9227b87..b1c6c00a3478 100644
>> >>> --- a/BaseTools/Source/C/Common/CommonLib.h
>> >>> +++ b/BaseTools/Source/C/Common/CommonLib.h
>> >>> @@ -22,7 +22,6 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND,
>> >> EITHER EXPRESS OR IMPLIED.
>> >>>
>> >>>  #define MAX_LONG_FILE_PATH 500
>> >>>
>> >>> -#define MAX_UINTN MAX_ADDRESS
>> >>>  #define MAX_UINT64 ((UINT64)0xFFFFFFFFFFFFFFFFULL)
>> >>>  #define MAX_UINT16  ((UINT16)0xFFFF)
>> >>>  #define MAX_UINT8   ((UINT8)0xFF)
>> >>>
>> >>
>> >> Reviewed-by: Laszlo Ersek <[email protected]>
>> >> _______________________________________________
>> >> edk2-devel mailing list
>> >> [email protected]
>> >> https://lists.01.org/mailman/listinfo/edk2-devel
>> >>
>> >
>>
_______________________________________________
edk2-devel mailing list
[email protected]
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to