From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=209.132.183.28; helo=mx1.redhat.com; envelope-from=lersek@redhat.com; receiver=edk2-devel@lists.01.org Received: from mx1.redhat.com (mx1.redhat.com [209.132.183.28]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 84F3E21199279 for ; Tue, 11 Dec 2018 07:46:00 -0800 (PST) Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E448B308FB8B; Tue, 11 Dec 2018 15:45:59 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-120-134.rdu2.redhat.com [10.10.120.134]) by smtp.corp.redhat.com (Postfix) with ESMTP id B2182608F6; Tue, 11 Dec 2018 15:45:58 +0000 (UTC) To: "David F." Cc: ard.biesheuvel@linaro.org, edk2 developers list , "Carsey, Jaben" , "Gao, Liming" References: <20181130224537.18936-1-ard.biesheuvel@linaro.org> <20181130224537.18936-7-ard.biesheuvel@linaro.org> <4a244c8f-8f59-2936-f543-2bd43f78af9c@redhat.com> From: Laszlo Ersek Message-ID: <11e96d9d-7f7c-7b2d-c05d-e5d009a2f4b1@redhat.com> Date: Tue, 11 Dec 2018 16:45:57 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.9.1 MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.43]); Tue, 11 Dec 2018 15:46:00 +0000 (UTC) Subject: Re: [PATCH v2 6/6] BaseTools/CommonLib: drop definition of MAX_UINTN X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 11 Dec 2018 15:46:01 -0000 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit 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 ) and UINT32_MAX (from ). 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 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 >>> Reviewed-by: Jaben Carsey >>> --- >>> 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 >> _______________________________________________ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel >> >