[edk2-devel] [Patch 3/3] BaseTools/Source: Remove CPU architecture assumptions

Michael D Kinney posted 3 patches 3 years, 7 months ago
There is a newer version of this series
[edk2-devel] [Patch 3/3] BaseTools/Source: Remove CPU architecture assumptions
Posted by Michael D Kinney 3 years, 7 months ago
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3308

The EDK II Build Specifications do not restrict the set of
CPU architectures that can be supported.  Remove places in
the EDK II that assume a fixed set of CPU architectures.

Remove build breaks in the following tools when a check against
a fixed set of CPU architectures is made.

* Build
* GenFds
* TargetTool
* GenFw

Cc: Bob Feng <bob.c.feng@intel.com>
Cc: Liming Gao <gaoliming@byosoft.com.cn>
Cc: Yuwei Chen <yuwei.chen@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Abner Chang <abner.chang@hpe.com>
Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
---
 BaseTools/Source/C/GenFw/Elf32Convert.c          | 5 ++---
 BaseTools/Source/C/GenFw/Elf64Convert.c          | 5 ++---
 BaseTools/Source/Python/GenFds/FdfParser.py      | 4 +---
 BaseTools/Source/Python/TargetTool/TargetTool.py | 4 ++--
 BaseTools/Source/Python/build/buildoptions.py    | 4 ++--
 5 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c b/BaseTools/Source/C/GenFw/Elf32Convert.c
index 7f351287a93c..2485b2cb7ad9 100644
--- a/BaseTools/Source/C/GenFw/Elf32Convert.c
+++ b/BaseTools/Source/C/GenFw/Elf32Convert.c
@@ -1,7 +1,7 @@
 /** @file
 Elf32 Convert solution
 
-Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2010 - 2021, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
 Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
 
@@ -143,8 +143,7 @@ InitializeElf32 (
     return FALSE;
   }
   if (!((mEhdr->e_machine == EM_386) || (mEhdr->e_machine == EM_ARM) || (mEhdr->e_machine == EM_RISCV))) {
-    Error (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf32 machine.");
-    return FALSE;
+    Warning (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf32 machine.");
   }
   if (mEhdr->e_version != EV_CURRENT) {
     Error (NULL, 0, 3000, "Unsupported", "ELF e_version (%u) not EV_CURRENT (%d)", (unsigned) mEhdr->e_version, EV_CURRENT);
diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c b/BaseTools/Source/C/GenFw/Elf64Convert.c
index 4ed6b4477ea9..d097db863243 100644
--- a/BaseTools/Source/C/GenFw/Elf64Convert.c
+++ b/BaseTools/Source/C/GenFw/Elf64Convert.c
@@ -1,7 +1,7 @@
 /** @file
 Elf64 convert solution
 
-Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
+Copyright (c) 2010 - 2021, Intel Corporation. All rights reserved.<BR>
 Portions copyright (c) 2013-2014, ARM Ltd. All rights reserved.<BR>
 Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All rights reserved.<BR>
 
@@ -162,8 +162,7 @@ InitializeElf64 (
     return FALSE;
   }
   if (!((mEhdr->e_machine == EM_X86_64) || (mEhdr->e_machine == EM_AARCH64) || (mEhdr->e_machine == EM_RISCV64))) {
-    Error (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf64 machine.");
-    return FALSE;
+    Warning (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf64 machine.");
   }
   if (mEhdr->e_version != EV_CURRENT) {
     Error (NULL, 0, 3000, "Unsupported", "ELF e_version (%u) not EV_CURRENT (%d)", (unsigned) mEhdr->e_version, EV_CURRENT);
diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py
index ea2401b0e4fc..5c8263f9bcc9 100644
--- a/BaseTools/Source/Python/GenFds/FdfParser.py
+++ b/BaseTools/Source/Python/GenFds/FdfParser.py
@@ -1,7 +1,7 @@
 ## @file
 # parse FDF file
 #
-#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
 #  Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -3504,8 +3504,6 @@ class FdfParser:
             raise Warning.Expected("'.'", self.FileName, self.CurrentLineNumber)
 
         Arch = self._SkippedChars.rstrip(TAB_SPLIT)
-        if Arch.upper() not in ARCH_SET_FULL:
-            raise Warning("Unknown Arch '%s'" % Arch, self.FileName, self.CurrentLineNumber)
 
         ModuleType = self._GetModuleType()
 
diff --git a/BaseTools/Source/Python/TargetTool/TargetTool.py b/BaseTools/Source/Python/TargetTool/TargetTool.py
index 8e0ca387c356..71222e3cc899 100644
--- a/BaseTools/Source/Python/TargetTool/TargetTool.py
+++ b/BaseTools/Source/Python/TargetTool/TargetTool.py
@@ -1,7 +1,7 @@
 ## @file
 # Target Tool Parser
 #
-#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
 #
@@ -197,7 +197,7 @@ def RangeCheckCallback(option, opt_str, value, parser):
 
 def MyOptionParser():
     parser = OptionParser(version=__version__, prog="TargetTool.exe", usage=__usage__, description=__copyright__)
-    parser.add_option("-a", "--arch", action="append", type="choice", choices=['IA32', 'X64', 'EBC', 'ARM', 'AARCH64', '0'], dest="TARGET_ARCH",
+    parser.add_option("-a", "--arch", action="append", dest="TARGET_ARCH",
         help="ARCHS is one of list: IA32, X64, ARM, AARCH64 or EBC, which replaces target.txt's TARGET_ARCH definition. To specify more archs, please repeat this option. 0 will clear this setting in target.txt and can't combine with other value.")
     parser.add_option("-p", "--platform", action="callback", type="string", dest="DSCFILE", callback=SingleCheckCallback,
         help="Specify a DSC file, which replace target.txt's ACTIVE_PLATFORM definition. 0 will clear this setting in target.txt and can't combine with other value.")
diff --git a/BaseTools/Source/Python/build/buildoptions.py b/BaseTools/Source/Python/build/buildoptions.py
index 094af4e2a8dd..39d92cff209d 100644
--- a/BaseTools/Source/Python/build/buildoptions.py
+++ b/BaseTools/Source/Python/build/buildoptions.py
@@ -2,7 +2,7 @@
 # build a platform or a module
 #
 #  Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
-#  Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
+#  Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
 #  Copyright (c) 2018 - 2020, Hewlett Packard Enterprise Development, L.P.<BR>
 #
 #  SPDX-License-Identifier: BSD-2-Clause-Patent
@@ -40,7 +40,7 @@ class MyOptionParser():
 
     def GetOption(self):
         Parser = OptionParser(description=__copyright__, version=__version__, prog="build.exe", usage="%prog [options] [all|fds|genc|genmake|clean|cleanall|cleanlib|modules|libraries|run]")
-        Parser.add_option("-a", "--arch", action="append", type="choice", choices=['IA32', 'X64', 'EBC', 'ARM', 'AARCH64', 'RISCV64'], dest="TargetArch",
+        Parser.add_option("-a", "--arch", action="append", dest="TargetArch",
             help="ARCHS is one of list: IA32, X64, ARM, AARCH64, RISCV64 or EBC, which overrides target.txt's TARGET_ARCH definition. To specify more archs, please repeat this option.")
         Parser.add_option("-p", "--platform", action="callback", type="string", dest="PlatformFile", callback=SingleCheckCallback,
             help="Build the platform specified by the DSC file name argument, overriding target.txt's ACTIVE_PLATFORM definition.")
-- 
2.31.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#73820): https://edk2.groups.io/g/devel/message/73820
Mute This Topic: https://groups.io/mt/81936017/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-


Re: [edk2-devel] [Patch 3/3] BaseTools/Source: Remove CPU architecture assumptions
Posted by Abner Chang 3 years, 7 months ago

> -----Original Message-----
> From: Michael D Kinney [mailto:michael.d.kinney@intel.com]
> Sent: Thursday, April 8, 2021 2:33 PM
> To: devel@edk2.groups.io
> Cc: Bob Feng <bob.c.feng@intel.com>; Liming Gao
> <gaoliming@byosoft.com.cn>; Yuwei Chen <yuwei.chen@intel.com>;
> Andrew Fish <afish@apple.com>; Chang, Abner (HPS SW/FW Technologist)
> <abner.chang@hpe.com>
> Subject: [Patch 3/3] BaseTools/Source: Remove CPU architecture
> assumptions
> 
> REF:
> INVALID URI REMOVED
> d=3308__;!!NpxR!y1a0Mm0__hLCGUN_tBqH8jshZ_739mOBXcCvlT6o_WQKy
> YICmQVJg5Wjl1Gr4vc$
> 
> The EDK II Build Specifications do not restrict the set of
> CPU architectures that can be supported.  Remove places in
> the EDK II that assume a fixed set of CPU architectures.
> 
> Remove build breaks in the following tools when a check against
> a fixed set of CPU architectures is made.
> 
> * Build
> * GenFds
> * TargetTool
> * GenFw
> 
> Cc: Bob Feng <bob.c.feng@intel.com>
> Cc: Liming Gao <gaoliming@byosoft.com.cn>
> Cc: Yuwei Chen <yuwei.chen@intel.com>
> Cc: Andrew Fish <afish@apple.com>
> Cc: Abner Chang <abner.chang@hpe.com>
> Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com>
> ---
>  BaseTools/Source/C/GenFw/Elf32Convert.c          | 5 ++---
>  BaseTools/Source/C/GenFw/Elf64Convert.c          | 5 ++---
>  BaseTools/Source/Python/GenFds/FdfParser.py      | 4 +---
>  BaseTools/Source/Python/TargetTool/TargetTool.py | 4 ++--
>  BaseTools/Source/Python/build/buildoptions.py    | 4 ++--
>  5 files changed, 9 insertions(+), 13 deletions(-)
> 
> diff --git a/BaseTools/Source/C/GenFw/Elf32Convert.c
> b/BaseTools/Source/C/GenFw/Elf32Convert.c
> index 7f351287a93c..2485b2cb7ad9 100644
> --- a/BaseTools/Source/C/GenFw/Elf32Convert.c
> +++ b/BaseTools/Source/C/GenFw/Elf32Convert.c
> @@ -1,7 +1,7 @@
>  /** @file
>  Elf32 Convert solution
> 
> -Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2010 - 2021, Intel Corporation. All rights reserved.<BR>
>  Portions copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
>  Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All
> rights reserved.<BR>
> 
> @@ -143,8 +143,7 @@ InitializeElf32 (
>      return FALSE;
>    }
>    if (!((mEhdr->e_machine == EM_386) || (mEhdr->e_machine == EM_ARM)
> || (mEhdr->e_machine == EM_RISCV))) {
> -    Error (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf32
> machine.");
> -    return FALSE;
> +    Warning (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf32
> machine.");
>    }
>    if (mEhdr->e_version != EV_CURRENT) {
>      Error (NULL, 0, 3000, "Unsupported", "ELF e_version (%u) not
> EV_CURRENT (%d)", (unsigned) mEhdr->e_version, EV_CURRENT);
> diff --git a/BaseTools/Source/C/GenFw/Elf64Convert.c
> b/BaseTools/Source/C/GenFw/Elf64Convert.c
> index 4ed6b4477ea9..d097db863243 100644
> --- a/BaseTools/Source/C/GenFw/Elf64Convert.c
> +++ b/BaseTools/Source/C/GenFw/Elf64Convert.c
> @@ -1,7 +1,7 @@
>  /** @file
>  Elf64 convert solution
> 
> -Copyright (c) 2010 - 2018, Intel Corporation. All rights reserved.<BR>
> +Copyright (c) 2010 - 2021, Intel Corporation. All rights reserved.<BR>
>  Portions copyright (c) 2013-2014, ARM Ltd. All rights reserved.<BR>
>  Portions Copyright (c) 2020, Hewlett Packard Enterprise Development LP. All
> rights reserved.<BR>
> 
> @@ -162,8 +162,7 @@ InitializeElf64 (
>      return FALSE;
>    }
>    if (!((mEhdr->e_machine == EM_X86_64) || (mEhdr->e_machine ==
> EM_AARCH64) || (mEhdr->e_machine == EM_RISCV64))) {
> -    Error (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf64
> machine.");
> -    return FALSE;
> +    Warning (NULL, 0, 3000, "Unsupported", "ELF e_machine is not Elf64
> machine.");
>    }
>    if (mEhdr->e_version != EV_CURRENT) {
>      Error (NULL, 0, 3000, "Unsupported", "ELF e_version (%u) not
> EV_CURRENT (%d)", (unsigned) mEhdr->e_version, EV_CURRENT);
> diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py
> b/BaseTools/Source/Python/GenFds/FdfParser.py
> index ea2401b0e4fc..5c8263f9bcc9 100644
> --- a/BaseTools/Source/Python/GenFds/FdfParser.py
> +++ b/BaseTools/Source/Python/GenFds/FdfParser.py
> @@ -1,7 +1,7 @@
>  ## @file
>  # parse FDF file
>  #
> -#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
> +#  Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
>  #  Copyright (c) 2015, Hewlett Packard Enterprise Development, L.P.<BR>
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -3504,8 +3504,6 @@ class FdfParser:
>              raise Warning.Expected("'.'", self.FileName, self.CurrentLineNumber)
> 
>          Arch = self._SkippedChars.rstrip(TAB_SPLIT)
> -        if Arch.upper() not in ARCH_SET_FULL:
> -            raise Warning("Unknown Arch '%s'" % Arch, self.FileName,
> self.CurrentLineNumber)
> 
>          ModuleType = self._GetModuleType()
> 
> diff --git a/BaseTools/Source/Python/TargetTool/TargetTool.py
> b/BaseTools/Source/Python/TargetTool/TargetTool.py
> index 8e0ca387c356..71222e3cc899 100644
> --- a/BaseTools/Source/Python/TargetTool/TargetTool.py
> +++ b/BaseTools/Source/Python/TargetTool/TargetTool.py
> @@ -1,7 +1,7 @@
>  ## @file
>  # Target Tool Parser
>  #
> -#  Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.<BR>
> +#  Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
>  #
> @@ -197,7 +197,7 @@ def RangeCheckCallback(option, opt_str, value,
> parser):
> 
>  def MyOptionParser():
>      parser = OptionParser(version=__version__, prog="TargetTool.exe",
> usage=__usage__, description=__copyright__)
> -    parser.add_option("-a", "--arch", action="append", type="choice",
> choices=['IA32', 'X64', 'EBC', 'ARM', 'AARCH64', '0'], dest="TARGET_ARCH",
Not quite sure what's the impact on Basetool if this is removed, leave this to owner to review.
Acked-by: Abner Chang <abner.chang@hpe.com>

> +    parser.add_option("-a", "--arch", action="append",
> dest="TARGET_ARCH",
>          help="ARCHS is one of list: IA32, X64, ARM, AARCH64 or EBC, which
> replaces target.txt's TARGET_ARCH definition. To specify more archs, please
> repeat this option. 0 will clear this setting in target.txt and can't combine with
> other value.")
>      parser.add_option("-p", "--platform", action="callback", type="string",
> dest="DSCFILE", callback=SingleCheckCallback,
>          help="Specify a DSC file, which replace target.txt's ACTIVE_PLATFORM
> definition. 0 will clear this setting in target.txt and can't combine with other
> value.")
> diff --git a/BaseTools/Source/Python/build/buildoptions.py
> b/BaseTools/Source/Python/build/buildoptions.py
> index 094af4e2a8dd..39d92cff209d 100644
> --- a/BaseTools/Source/Python/build/buildoptions.py
> +++ b/BaseTools/Source/Python/build/buildoptions.py
> @@ -2,7 +2,7 @@
>  # build a platform or a module
>  #
>  #  Copyright (c) 2014, Hewlett-Packard Development Company, L.P.<BR>
> -#  Copyright (c) 2007 - 2019, Intel Corporation. All rights reserved.<BR>
> +#  Copyright (c) 2007 - 2021, Intel Corporation. All rights reserved.<BR>
>  #  Copyright (c) 2018 - 2020, Hewlett Packard Enterprise Development,
> L.P.<BR>
>  #
>  #  SPDX-License-Identifier: BSD-2-Clause-Patent
> @@ -40,7 +40,7 @@ class MyOptionParser():
> 
>      def GetOption(self):
>          Parser = OptionParser(description=__copyright__, version=__version__,
> prog="build.exe", usage="%prog [options]
> [all|fds|genc|genmake|clean|cleanall|cleanlib|modules|libraries|run]")
> -        Parser.add_option("-a", "--arch", action="append", type="choice",
> choices=['IA32', 'X64', 'EBC', 'ARM', 'AARCH64', 'RISCV64'], dest="TargetArch",
> +        Parser.add_option("-a", "--arch", action="append", dest="TargetArch",
>              help="ARCHS is one of list: IA32, X64, ARM, AARCH64, RISCV64 or EBC,
> which overrides target.txt's TARGET_ARCH definition. To specify more archs,
> please repeat this option.")
>          Parser.add_option("-p", "--platform", action="callback", type="string",
> dest="PlatformFile", callback=SingleCheckCallback,
>              help="Build the platform specified by the DSC file name argument,
> overriding target.txt's ACTIVE_PLATFORM definition.")
> --
> 2.31.1.windows.1



-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#74005): https://edk2.groups.io/g/devel/message/74005
Mute This Topic: https://groups.io/mt/81936017/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-