From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by mx.groups.io with SMTP id smtpd.web12.6161.1622028940046936910 for ; Wed, 26 May 2021 04:35:40 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=PKIntJx9; spf=pass (domain: intel.com, ip: 192.55.52.43, mailfrom: steven.shi@intel.com) IronPort-SDR: TUev5+7O0Y+vx6TKGlF/H+UPyiE04TPDLTjxCGT6S2g/S3qYUpt2RdHYoGMzgg4EB+jRUAPZOE Nx5UylKd4QgA== X-IronPort-AV: E=McAfee;i="6200,9189,9995"; a="288019921" X-IronPort-AV: E=Sophos;i="5.82,331,1613462400"; d="png'150?scan'150,208,217,150";a="288019921" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2021 04:35:36 -0700 IronPort-SDR: xzhL54vYWDNESbpfOfhPOQWuhjT2tsHhbORkAUO422nN8Al+JdQnzeXqKRE6+ZfEKJ+hu94X4X 9eVazs/j0EIQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,331,1613462400"; d="png'150?scan'150,208,217,150";a="547161592" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga004.jf.intel.com with ESMTP; 26 May 2021 04:35:35 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 26 May 2021 04:35:34 -0700 Received: from fmsmsx605.amr.corp.intel.com (10.18.126.85) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 26 May 2021 04:35:33 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx605.amr.corp.intel.com (10.18.126.85) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Wed, 26 May 2021 04:35:33 -0700 Received: from NAM04-DM6-obe.outbound.protection.outlook.com (104.47.73.47) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Wed, 26 May 2021 04:35:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zs8JgU6UZ+VeGZ/eGQYt3q+ubALqQYOSH8DDRX4qbDCqZKKP1LnIbg5UOG9Z8g6uf0fls3Tk1rpmU3+Fu94NiV8UAPJ5PuXonvt4xp1MPMiEPxPii8gt0UzGTWcYCzMR6Moe4BWZdhFlMvVSWtyZQYJcLg7wenINsIPN7zLqLVoXqWr2+8Z6vRConu9QPAuItDSiiIHAmwqEdz8TP8EZ91fh2fAoKmfyGJDOnFGvzOLhb3YbWmDYLX0/+k61QlgCS8qJg8KJyHQ3tfjvA+PJsjaYh8MTHvNLLK8UdwkiJUCG1Ko9PNZ5Wc+GnlWweAhiHnq1mJiRP6/v40HTBS3hCQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R6N1KTh4nchO3jD7wULDKn5ar6LJV3hTim1+DNzhjyI=; b=cgh4LPzmL3X92waodHG4JkiLfUY4MOBOvJsP3cvG378/P3Fu6G30C8f4M2IqKL4aMsn4DxUv8M+jcI/2+RmATYJgO+QIKG9L2resUNw+e45HF8K9i2nWfur4B3PgmNzRWENffTF381g9wpIknd+y0TEHzWIVEFxNHYhmsBg3Bze/skstnnK/baD8+z9QVDyFVpqBl5jy8sKthuLicujUY+VlQGP5AK7Sm2nruvIFR74fNq/gostVuHI+1IJjKcaUkGCgBOhjylxNzhe4bIW3QGDoconJFszyVy318LcDXKBjPY1o94EdVLZYQWPe4wUDsmeU0HsrXNqMjnkpLzGoOQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=R6N1KTh4nchO3jD7wULDKn5ar6LJV3hTim1+DNzhjyI=; b=PKIntJx90/HatNimbUrBM6fh87mS0k6z1FF5P5hXfemqw+sSW6AfnPKDk8DvaQoNOimjwQlo6hihKfPtlJyOGHtww5zmnbH/yV6mY1tf6he48C/r5hhoZYDrv084rPeLRgg/YNewVAdxCj7+g5w+LK+PFN33eJcK550vkuQSw2A= Received: from MWHPR11MB1950.namprd11.prod.outlook.com (2603:10b6:300:112::16) by MW3PR11MB4601.namprd11.prod.outlook.com (2603:10b6:303:59::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Wed, 26 May 2021 11:35:05 +0000 Received: from MWHPR11MB1950.namprd11.prod.outlook.com ([fe80::25d6:4ac3:3d67:9111]) by MWHPR11MB1950.namprd11.prod.outlook.com ([fe80::25d6:4ac3:3d67:9111%11]) with mapi id 15.20.4150.027; Wed, 26 May 2021 11:35:05 +0000 From: "Steven Shi" To: "devel@edk2.groups.io" , "Ni, Ray" Subject: Re: [edk2-devel] [PATCH 1/4] BaseTools: Create CLANGDWARF toolchain Thread-Topic: [edk2-devel] [PATCH 1/4] BaseTools: Create CLANGDWARF toolchain Thread-Index: AQHXUgjhlPEahU1UI0G0oaJDezHKzar1nBNA Date: Wed, 26 May 2021 11:35:05 +0000 Message-ID: References: <20210526082310.1597-1-ray.ni@intel.com> <20210526082310.1597-2-ray.ni@intel.com> In-Reply-To: <20210526082310.1597-2-ray.ni@intel.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: yes X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.5.1.3 authentication-results: edk2.groups.io; dkim=none (message not signed) header.d=none;edk2.groups.io; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.202] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d7f1832a-24fc-4728-e572-08d9203a4f01 x-ms-traffictypediagnostic: MW3PR11MB4601: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:7691; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: Fbb8DpjmCoRKsaKhVwspKs6UxhwLxNz5NS/S6R7+p8LgqEmOOkktvcyJisyFvj1V5Gs5WK+duONvzYBZZTRwEDi0tnI//iP5yFYCLJ0x0BkyYlPYuo8oRfSTM3HyKB7QLecJapPxvuEJ0dk89O6x27U0iKJOOBn7UeCOVx1Ae/hRiMCYekhbCTEEYMyBge8F3+xsysRMVLTBcsuF92W6JFLbB6sz3JChqxLbVKVOTZldLhv8o40Z+5jCuKRIgMVYR/R6nLK1YGhBqenqA5edfZBBKC3FF5hgblsWNHGYe3pz3cUlnjJapwiaEAGpuJMN+Ovz68Ue41Ne+qJ5nF8kFZERRpGgBOGo2b+4jL1P3k59l2uq6z98UJonOscHXfg9bI2eejUR2el55Sg/x2lNPfbd+jnzPvzzsh24F+8ZPopNZvJGAZh0RLD0knFAkpbdgSRL50u0z8yC7rR+1EzAmIUaJCRirb7Dt8sQGw/wMnIGNRcnPovd0nJ+PAk1/gh4TfZCJ4rMVQfSVVuAPjNvfFgB4HWRKq6EP/mUnPios+BRWkDGFqNlP5WlNo0GoK5hkNxblCeFOXyL31seZ1gcjZp7wIjjsdrPPBjnjcntJa6gxzTygZeroRUL9HpU/SkQ6F26Pat7ORkofCMqIPYk3kwUHfUO+WFFqHdab2CKnrIvdYgiwotqxNodF44fSWWLay/Bg0f2xH+SvJBefqsaRQ== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR11MB1950.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(396003)(136003)(39860400002)(346002)(366004)(376002)(55016002)(66946007)(2906002)(99936003)(66616009)(66476007)(86362001)(52536014)(166002)(122000001)(110136005)(316002)(38100700002)(8936002)(83380400001)(76116006)(64756008)(186003)(71200400001)(66446008)(30864003)(26005)(6506007)(33656002)(53546011)(9686003)(6636002)(478600001)(66556008)(8676002)(45080400002)(5660300002)(7696005)(966005);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?npNiGorFMKOeV/X2aLWjrWwGUjBQuYcq8rGVKjVwLdHmgc5+8oyX7zH61z+O?= =?us-ascii?Q?kNN4JD91pyYRxrKLjW4AMn/uKMp9k5jqoSAWtzTEe5jjkCHegbkaEdhHXfme?= =?us-ascii?Q?zlvEkXXY2i75Z4BtSljbP7eNwTxN6OgMQixPWiK95XH7POWXzFCMhbqKYfvi?= =?us-ascii?Q?tk8WwXwYuu54kvZ43O2asz3G370K979swApvCRntnS7z0hGfM91OSBM3Gjd1?= =?us-ascii?Q?lNaIrQGvkvbZ3+fezktf58ddTLAExghzr5O4zBF5tJ1HHxxSMQXjKYfyW9wZ?= =?us-ascii?Q?uoWWjHxeD9YGvQTlQtnuQ6zBiAl02Mv8scMVVORpzHPLurnjKejG4aOxuqnU?= =?us-ascii?Q?PsJQBXudMGuRk8TCZgkfOj7yEN++X4tq1fmenDX0VHKX1E5bZF6zXNxKQt22?= =?us-ascii?Q?NqZeABTK/ANVTKw1e8Wj90p02zXTbqui8yrAdgRmXo9Y+DjjnmTcsj5pKp1z?= =?us-ascii?Q?/QW+kpEoe9Qe7xXhOPAKvTojiaclxFVcS9jPg/YQV9NzlXK3T5qqnVTAb4xD?= =?us-ascii?Q?IDG2wl0ykwRaWPBchcc1eszGLRNkEDihGQayxC9NtAQSXCS2FxevnnrRaR1E?= =?us-ascii?Q?MKb7uYKLfte8BesrnW2OH3eLJAKGMIrWCsG0JlhVbbYtfdQBsep/wFB9hJRE?= =?us-ascii?Q?SOHuJ7Tyg1Lah4SOF+FGuo9JboADcabfAJyySsdA4TkuZYaWow6zlK3ZF4Zv?= =?us-ascii?Q?ZjbTW5zWub4AZxKGotKNWJl76+Wvj/tRzoY84Ot9cOJPbnQDiQmZTqyPTA/j?= =?us-ascii?Q?9MS2ZtwKvrcfiINQLxXrH/JuNGeWcYuMxgDrUGDnex/6gVZnAy9C3S+Nvlkw?= =?us-ascii?Q?uOcYF/5uAx6SayLxruWdQWW9N5PCL7eR28/KdOrNKKPSfleRiVWgQUUf4YS8?= =?us-ascii?Q?G+WmDicYSGJ3Wrly4kVzO0dPta9Mvl+KYSXlF1JheH65IlrhO8KaPYzVacvk?= =?us-ascii?Q?mrbJbnyMmHU1cxt8VsPu55BqvLFH6mSYXKVc1X8iczl8XiUj81fsPi55DG42?= =?us-ascii?Q?GaEArNLuDocW000ym5Nt5DPYBkyXunZwn7z/lOoB0EkTEHmOk45OQJQDsn5W?= =?us-ascii?Q?pjfhMO2vBFvOavPzrXMgoZxlI+CjYWZrzxe2xzcas+qiliLC/7IrOsHUau83?= =?us-ascii?Q?y5Ca6H4tQTAkdpY9TrC2n5tUTYjTYR2rWSeEcjo65dyy4c1YfOJ0q9QzplgM?= =?us-ascii?Q?AaxKYgNbdL6IG0CpxTIj3+uBa9xVHttP8pyDX4LbJDXKMtEeSY4gVX3hps+L?= =?us-ascii?Q?F8bii+eeU9A4qll7fX8nh/YNrM0CwLOawHxDzieMTwlxjJcG/QMPFu8URhUj?= =?us-ascii?Q?Z5xM7JjUDXRZ25vKSRnJy2Wc?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR11MB1950.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: d7f1832a-24fc-4728-e572-08d9203a4f01 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2021 11:35:05.3902 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: wH9FnrGIIR7f/wMwKigG834p2W7mDyM48mDU5ZAaAfzJCFu2gD8PH6Q7gz2EKwj45PeSSD+SD+bsQiCa/V71dg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW3PR11MB4601 Return-Path: steven.shi@intel.com X-OriginatorOrg: intel.com X-Groupsio-MsgNum: 75646 Content-Language: en-US Content-Type: multipart/related; boundary="_004_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_"; type="multipart/alternative" --_004_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_ Content-Type: multipart/alternative; boundary="_000_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_" --_000_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Some suggestions: 1. There are many blanks appending the line "+ "$(DLINK)" -o ${ds= t} $(DLINK_FLAGS) @$(STATIC_LIBRARY_FILES_LIST) " [cid:image001.png@01D75263.998291F0] 1. We need a toolchain dependency descirption in the BaseTools\Conf\tool= s_def.template. Below is the example for CLANGPDB. Please add one for the C= LANGDWARF. # CLANGPDB -Linux, Windows, Mac- Requires: # Clang 9 or above from http://releases.llvm.or= g/ # Optional: # Required to compile nasm source: # nasm compiler from # NASM -- http://www.nasm.us/ # Required to build platforms or ACPI tables: # Intel(r) ACPI Compiler from # https://acpica.org/downloads 1. We could merge the CLANG38 and the CLANGDWARF toolchains together in = the future. Thanks Steven Shi > -----Original Message----- > From: devel@edk2.groups.io On Behalf Of Ni, Ray > Sent: Wednesday, May 26, 2021 4:23 PM > To: devel@edk2.groups.io > Subject: [edk2-devel] [PATCH 1/4] BaseTools: Create CLANGDWARF > toolchain > > Signed-off-by: Ray Ni > > --- > BaseTools/Conf/build_rule.template | 10 ++- > BaseTools/Conf/tools_def.template | 98 > ++++++++++++++++++++++++++++++ > 2 files changed, 107 insertions(+), 1 deletion(-) > > diff --git a/BaseTools/Conf/build_rule.template > b/BaseTools/Conf/build_rule.template > index 1395792cd6..e69f963cc8 100755 > --- a/BaseTools/Conf/build_rule.template > +++ b/BaseTools/Conf/build_rule.template > @@ -293,7 +293,10 @@ > > > $(MAKE_FILE) > > > > - > > + > > + $(DEBUG_DIR)(+)$(MODULE_NAME).elf > > + > > + > > $(DEBUG_DIR)(+)$(MODULE_NAME).dll > > > > > > @@ -303,6 +306,11 @@ > > > "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH) > @$(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS) > > > > + > > + "$(DLINK)" -o ${dst} $(DLINK_FLAGS) @$(STATIC_LIBRARY_FILES_LIST= ) > > + "$(CP)" ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).debug > > + "$(OBJCOPY)" --strip-unneeded -R .eh_frame ${dst} > > + > > > > "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start- > group,@$(STATIC_LIBRARY_FILES_LIST),--end-group $(CC_FLAGS) > $(DLINK2_FLAGS) > > "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst} > > diff --git a/BaseTools/Conf/tools_def.template > b/BaseTools/Conf/tools_def.template > index 498696e583..390e297cc1 100755 > --- a/BaseTools/Conf/tools_def.template > +++ b/BaseTools/Conf/tools_def.template > @@ -2828,6 +2828,104 @@ NOOPT_CLANGPDB_X64_DLINK_FLAGS =3D > /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE > NOOPT_CLANGPDB_X64_DLINK2_FLAGS =3D > > NOOPT_CLANGPDB_X64_GENFW_FLAGS =3D --keepexceptiontable > > > > +######################################################### > ########################### > > +# > > +# CLANGDWARF - This configuration is used to compile under > Windows/Linux/Mac to produce > > +# ELF binaries using LLVM/Clang/LLD with Link Time Optimization enabled > > +# > > +######################################################### > ########################### > > +*_CLANGDWARF_*_*_FAMILY =3D GCC > > +*_CLANGDWARF_*_*_BUILDRULEFAMILY =3D CLANGDWARF > > +*_CLANGDWARF_*_MAKE_PATH =3D ENV(CLANG_HOST_BIN)make > > +*_CLANGDWARF_*_*_DLL =3D ENV(CLANGPDB_DLL) > > +*_CLANGDWARF_*_ASL_PATH =3D DEF(UNIX_IASL_BIN) > > + > > +*_CLANGDWARF_*_APP_FLAGS =3D > > +*_CLANGDWARF_*_ASL_FLAGS =3D DEF(DEFAULT_WIN_ASL_FLAGS) > > +*_CLANGDWARF_*_ASL_OUTFLAGS =3D > DEF(DEFAULT_WIN_ASL_OUTFLAGS) > > +*_CLANGDWARF_*_ASLDLINK_FLAGS =3D DEF(MSFT_ASLDLINK_FLAGS) > > +*_CLANGDWARF_*_DEPS_FLAGS =3D DEF(GCC_DEPS_FLAGS) > > + > > +DEFINE CLANGDWARF_IA32_PREFIX =3D ENV(CLANG_BIN) > > +DEFINE CLANGDWARF_X64_PREFIX =3D ENV(CLANG_BIN) > > + > > +DEFINE CLANGDWARF_IA32_TARGET =3D -target i686-pc-linux-gnu > > +DEFINE CLANGDWARF_X64_TARGET =3D -target x86_64-pc-linux-gnu > > + > > +DEFINE CLANGDWARF_WARNING_OVERRIDES =3D -Wno-parentheses- > equality -Wno-tautological-compare -Wno-tautological-constant-out-of- > range-compare -Wno-empty-body -Wno-unused-const-variable -Wno- > varargs -Wno-unknown-warning-option -Wno-microsoft-enum-forward- > reference > > +DEFINE CLANGDWARF_ALL_CC_FLAGS =3D DEF(GCC48_ALL_CC_FLAGS) > DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack-protector - > funsigned-char -ftrap- > function=3Dundefined_behavior_has_been_optimized_away_by_clang -Wno- > address -Wno-shift-negative-value -Wno-unknown-pragmas -Wno- > incompatible-library-redeclaration -Wno-null-dereference -mno-implicit- > float -mms-bitfields -mno-stack-arg-probe -nostdlib -nostdlibinc -fseh- > exceptions > > + > > +########################### > > +# CLANGDWARF IA32 definitions > > +########################### > > +*_CLANGDWARF_IA32_CC_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_SLINK_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)llvm-ar > > +*_CLANGDWARF_IA32_DLINK_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)ld.lld > > +*_CLANGDWARF_IA32_ASLDLINK_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_ASM_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_PP_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_VFRPP_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_ASLCC_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_ASLPP_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)clang > > +*_CLANGDWARF_IA32_OBJCOPY_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)llvm-objcopy > > + > > +*_CLANGDWARF_IA32_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m32 > -fno-lto DEF(CLANGDWARF_IA32_TARGET) > > +*_CLANGDWARF_IA32_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m32 - > march=3Di386 DEF(CLANGDWARF_IA32_TARGET) > > +*_CLANGDWARF_IA32_OBJCOPY_FLAGS =3D > > +*_CLANGDWARF_IA32_NASM_FLAGS =3D -f elf32 > > +*_CLANGDWARF_IA32_PP_FLAGS =3D DEF(GCC_PP_FLAGS) > DEF(CLANGDWARF_IA32_TARGET) > > +*_CLANGDWARF_IA32_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) > DEF(CLANGDWARF_IA32_TARGET) > > +*_CLANGDWARF_IA32_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) > DEF(CLANGDWARF_IA32_TARGET) > > + > > +DEBUG_CLANGDWARF_IA32_CC_FLAGS =3D > DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=3Di586 > DEF(CLANGDWARF_IA32_TARGET) -g > > +DEBUG_CLANGDWARF_IA32_DLINK_FLAGS =3D --eh-frame-hdr -q --gc- > sections -z common-page-size=3D0x40 --entry $(IMAGE_ENTRY_POINT) -Map > $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-archive -O3 -melf_i386 -- > format=3Delf > > +DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS =3D > > + > > +RELEASE_CLANGDWARF_IA32_CC_FLAGS =3D > DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto -march=3Di586 > DEF(CLANGDWARF_IA32_TARGET) > > +RELEASE_CLANGDWARF_IA32_DLINK_FLAGS =3D --eh-frame-hdr -q --gc- > sections -z common-page-size=3D0x40 --entry $(IMAGE_ENTRY_POINT) -Map > $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-archive -O3 -melf_i386 -- > format=3Delf > > +RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS =3D > > + > > +NOOPT_CLANGDWARF_IA32_CC_FLAGS =3D > DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -march=3Di586 > DEF(CLANGDWARF_IA32_TARGET) -g > > +NOOPT_CLANGDWARF_IA32_DLINK_FLAGS =3D --eh-frame-hdr -q --gc- > sections -z common-page-size=3D0x40 --entry $(IMAGE_ENTRY_POINT) -Map > $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-archive -O0 -melf_i386 -- > format=3Delf > > +NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS =3D > > + > > +########################## > > +# CLANGDWARF X64 definitions > > +########################## > > +*_CLANGDWARF_X64_CC_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_SLINK_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)llvm-ar > > +*_CLANGDWARF_X64_DLINK_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)ld.lld > > +*_CLANGDWARF_X64_ASLDLINK_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_ASM_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_PP_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_VFRPP_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_ASLCC_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_ASLPP_PATH =3D > DEF(CLANGDWARF_X64_PREFIX)clang > > +*_CLANGDWARF_X64_OBJCOPY_PATH =3D > DEF(CLANGDWARF_IA32_PREFIX)llvm-objcopy > > + > > +*_CLANGDWARF_X64_ASLCC_FLAGS =3D DEF(GCC_ASLCC_FLAGS) -m64 > -fno-lto DEF(CLANGDWARF_X64_TARGET) > > +*_CLANGDWARF_X64_ASM_FLAGS =3D DEF(GCC_ASM_FLAGS) -m64 > DEF(CLANGDWARF_X64_TARGET) > > +*_CLANGDWARF_X64_OBJCOPY_FLAGS =3D > > +*_CLANGDWARF_X64_NASM_FLAGS =3D -f elf64 > > +*_CLANGDWARF_X64_PP_FLAGS =3D DEF(GCC_PP_FLAGS) > DEF(CLANGDWARF_X64_TARGET) > > +*_CLANGDWARF_X64_ASLPP_FLAGS =3D DEF(GCC_ASLPP_FLAGS) > DEF(CLANGDWARF_X64_TARGET) > > +*_CLANGDWARF_X64_VFRPP_FLAGS =3D DEF(GCC_VFRPP_FLAGS) > DEF(CLANGDWARF_X64_TARGET) > > + > > +DEBUG_CLANGDWARF_X64_CC_FLAGS =3D > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "- > DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -= Oz > -flto DEF(CLANGDWARF_X64_TARGET) -g > > +DEBUG_CLANGDWARF_X64_DLINK_FLAGS =3D --eh-frame-hdr -q --gc- > sections -z common-page-size=3D0x40 --entry $(IMAGE_ENTRY_POINT) -Map > $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-archive -O3 - > melf_x86_64 --format=3Delf -pie > > +DEBUG_CLANGDWARF_X64_DLINK2_FLAGS =3D > > +DEBUG_CLANGDWARF_X64_GENFW_FLAGS =3D --keepexceptiontable > > + > > +RELEASE_CLANGDWARF_X64_CC_FLAGS =3D > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "- > DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -= Oz > -flto DEF(CLANGDWARF_X64_TARGET) > > +RELEASE_CLANGDWARF_X64_DLINK_FLAGS =3D --eh-frame-hdr -q --gc- > sections -z common-page-size=3D0x40 --entry $(IMAGE_ENTRY_POINT) -Map > $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-archive -O3 - > melf_x86_64 --format=3Delf -pie > > +RELEASE_CLANGDWARF_X64_DLINK2_FLAGS =3D > > +RELEASE_CLANGDWARF_X64_GENFW_FLAGS =3D > > + > > +NOOPT_CLANGDWARF_X64_CC_FLAGS =3D > DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "- > DEFIAPI=3D__attribute__((ms_abi))" -mno-red-zone -mcmodel=3Dsmall -fpie -= O0 > DEF(CLANGDWARF_X64_TARGET) -g > > +NOOPT_CLANGDWARF_X64_DLINK_FLAGS =3D --eh-frame-hdr -q --gc- > sections -z common-page-size=3D0x40 --entry $(IMAGE_ENTRY_POINT) -Map > $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-archive -O0 - > melf_x86_64 --format=3Delf -pie > > +NOOPT_CLANGDWARF_X64_DLINK2_FLAGS =3D > > +NOOPT_CLANGDWARF_X64_GENFW_FLAGS =3D --keepexceptiontable > > + > > # > > # > > # XCODE5 support > > -- > 2.31.1.windows.1 > > > > -=3D-=3D-=3D-=3D-=3D-=3D > Groups.io Links: You receive all messages sent to this group. > View/Reply Online (#75599): https://edk2.groups.io/g/devel/message/75599 > Mute This Topic: https://groups.io/mt/83095853/1781003 > Group Owner: devel+owner@edk2.groups.io > Unsubscribe: https://edk2.groups.io/g/devel/unsub [steven.shi@intel.com] > -=3D-=3D-=3D-=3D-=3D-=3D > --_000_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Some suggestions:

 

  1. There are many= blanks appending the line “+      &nbs= p; "$(DLINK)" -o ${dst} $(DLINK_FLAGS) @$(STATIC_LIBRARY_FILES_LI= ST)       

 

 

  1. We need a tool= chain dependency descirption in the BaseTools\Conf\tools_def.template. Belo= w is the example for CLANGPDB. Please add one for the CLANGDWARF.

#   CLANGPDB -Linux, Windows, Mac- = ; Requires:

#        =             &nb= sp;        Clang 9 or above from http://= releases.llvm.org/

#        =             &nb= sp;   Optional:

#        =             &nb= sp;        Required to compile nasm sour= ce:

#        =             &nb= sp;          nasm compiler fro= m

#        =             &nb= sp;          NASM -- http://ww= w.nasm.us/

#        =             &nb= sp;        Required to build platforms o= r ACPI tables:

#        =             &nb= sp;          Intel(r) ACPI Com= piler from

#        =             &nb= sp;          https://acpica.org/downloads

 

  1. We could merge= the CLANG38 and the CLANGDWARF toolchains together in the future.

 

 

Thanks

Steven Shi

 

 

> -----Original Message-----

> From: devel@edk2.groups.io <devel@edk2.gr= oups.io> On Behalf Of Ni, Ray

> Sent: Wednesday, May 26, 2021 4:23 PM

> To: devel@edk2.groups.io

> Subject: [edk2-devel] [PATCH 1/4] BaseTools:= Create CLANGDWARF

> toolchain

>

> Signed-off-by: Ray Ni <ray= .ni@intel.com>

> ---

>  BaseTools/Conf/build_rule.template | 1= 0 ++-

>  BaseTools/Conf/tools_def.template = ; | 98

> ++++++++++++++++++++++++++++++

>  2 files changed, 107 insertions(+), 1 = deletion(-)

>

> diff --git a/BaseTools/Conf/build_rule.templ= ate

> b/BaseTools/Conf/build_rule.template

> index 1395792cd6..e69f963cc8 100755

> --- a/BaseTools/Conf/build_rule.template

> +++ b/BaseTools/Conf/build_rule.template

> @@ -293,7 +293,10 @@

>      <ExtraDepen= dency>

>

>        &n= bsp; $(MAKE_FILE)

>

>

>

> -    <OutputFile>

>

> +    <OutputFile.CLANGDWAR= F>

>

> +        = $(DEBUG_DIR)(+)$(MODULE_NAME).elf

>

> +

>

> +    <OutputFile.MSFT, Out= putFile.INTEL, OutputFile.GCC>

>

>        &n= bsp; $(DEBUG_DIR)(+)$(MODULE_NAME).dll

>

>

>

>      <Command.MS= FT, Command.INTEL>

>

> @@ -303,6 +306,11 @@

>      <Command.CL= ANGPDB>

>

>        &n= bsp; "$(DLINK)" /OUT:${dst} $(DLINK_FLAGS) $(DLINK_SPATH)

> @$(STATIC_LIBRARY_FILES_LIST) $(DLINK2_FLAGS= )

>

>

>

> +    <Command.CLANGDWARF&g= t;

>

> +        = "$(DLINK)" -o ${dst} $(DLINK_FLAGS) @$(STATIC_LIBRARY_FILES_LIST)=

>

> +        = "$(CP)" ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).debug

>

> +        = "$(OBJCOPY)" --strip-unneeded -R .eh_frame ${dst}

>

> +

>

>      <Command.GC= C>

>

>        &n= bsp; "$(DLINK)" -o ${dst} $(DLINK_FLAGS) -Wl,--start-

> group,@$(STATIC_LIBRARY_FILES_LIST),--end-gr= oup $(CC_FLAGS)

> $(DLINK2_FLAGS)

>

>        &n= bsp; "$(OBJCOPY)" $(OBJCOPY_FLAGS) ${dst}

>

> diff --git a/BaseTools/Conf/tools_def.templa= te

> b/BaseTools/Conf/tools_def.template

> index 498696e583..390e297cc1 100755

> --- a/BaseTools/Conf/tools_def.template

> +++ b/BaseTools/Conf/tools_def.template

> @@ -2828,6 +2828,104 @@ NOOPT_CLANGPDB_X64_D= LINK_FLAGS      =3D

> /NOLOGO /NODEFAULTLIB /IGNORE:4001 /OPT:RE

>  NOOPT_CLANGPDB_X64_DLINK2_FLAGS &= nbsp;   =3D

>

>  NOOPT_CLANGPDB_X64_GENFW_FLAGS &n= bsp;    =3D --keepexceptiontable

>

>

>

> +###########################################= ##############

> ###########################

>

> +#

>

> +# CLANGDWARF - This configuration is used t= o compile under

> Windows/Linux/Mac to produce

>

> +#  ELF binaries using LLVM/Clang/LLD w= ith Link Time Optimization enabled

>

> +#

>

> +###########################################= ##############

> ###########################

>

> +*_CLANGDWARF_*_*_FAMILY   &n= bsp;         =3D GCC

>

> +*_CLANGDWARF_*_*_BUILDRULEFAMILY  = ;  =3D CLANGDWARF

>

> +*_CLANGDWARF_*_MAKE_PATH   &= nbsp;        =3D ENV(CLANG_HOST_BIN)make=

>

> +*_CLANGDWARF_*_*_DLL    = ;            =3D ENV= (CLANGPDB_DLL)

>

> +*_CLANGDWARF_*_ASL_PATH   &n= bsp;         =3D DEF(UNIX_IASL_BIN)=

>

> +

>

> +*_CLANGDWARF_*_APP_FLAGS   &= nbsp;        =3D

>

> +*_CLANGDWARF_*_ASL_FLAGS   &= nbsp;        =3D DEF(DEFAULT_WIN_ASL_FLA= GS)

>

> +*_CLANGDWARF_*_ASL_OUTFLAGS  &nbs= p;      =3D

> DEF(DEFAULT_WIN_ASL_OUTFLAGS)

>

> +*_CLANGDWARF_*_ASLDLINK_FLAGS  &n= bsp;    =3D DEF(MSFT_ASLDLINK_FLAGS)

>

> +*_CLANGDWARF_*_DEPS_FLAGS   =         =3D DEF(GCC_DEPS_FLAGS)

>

> +

>

> +DEFINE CLANGDWARF_IA32_PREFIX  &n= bsp;    =3D ENV(CLANG_BIN)

>

> +DEFINE CLANGDWARF_X64_PREFIX  &nb= sp;     =3D ENV(CLANG_BIN)

>

> +

>

> +DEFINE CLANGDWARF_IA32_TARGET  &n= bsp;    =3D -target i686-pc-linux-gnu

>

> +DEFINE CLANGDWARF_X64_TARGET  &nb= sp;     =3D -target x86_64-pc-linux-gnu

>

> +

>

> +DEFINE CLANGDWARF_WARNING_OVERRIDES =3D -Wn= o-parentheses-

> equality -Wno-tautological-compare -Wno-taut= ological-constant-out-of-

> range-compare -Wno-empty-body -Wno-unused-co= nst-variable -Wno-

> varargs -Wno-unknown-warning-option -Wno-mic= rosoft-enum-forward-

> reference

>

> +DEFINE CLANGDWARF_ALL_CC_FLAGS  &= nbsp;   =3D DEF(GCC48_ALL_CC_FLAGS)

> DEF(CLANGDWARF_WARNING_OVERRIDES) -fno-stack= -protector -

> funsigned-char -ftrap-

> function=3Dundefined_behavior_has_been_optim= ized_away_by_clang -Wno-

> address -Wno-shift-negative-value -Wno-unkno= wn-pragmas -Wno-

> incompatible-library-redeclaration -Wno-null= -dereference -mno-implicit-

> float -mms-bitfields -mno-stack-arg-probe -n= ostdlib -nostdlibinc -fseh-

> exceptions

>

> +

>

> +###########################

>

> +# CLANGDWARF IA32 definitions

>

> +###########################

>

> +*_CLANGDWARF_IA32_CC_PATH   =            =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_SLINK_PATH  &nb= sp;        =3D

> DEF(CLANGDWARF_IA32_PREFIX)llvm-ar

>

> +*_CLANGDWARF_IA32_DLINK_PATH  &nb= sp;        =3D

> DEF(CLANGDWARF_IA32_PREFIX)ld.lld

>

> +*_CLANGDWARF_IA32_ASLDLINK_PATH  =       =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_ASM_PATH   = ;          =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_PP_PATH   =            =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_VFRPP_PATH  &nb= sp;        =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_ASLCC_PATH  &nb= sp;        =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_ASLPP_PATH  &nb= sp;        =3D

> DEF(CLANGDWARF_IA32_PREFIX)clang

>

> +*_CLANGDWARF_IA32_OBJCOPY_PATH  &= nbsp;      =3D

> DEF(CLANGDWARF_IA32_PREFIX)llvm-objcopy

>

> +

>

> +*_CLANGDWARF_IA32_ASLCC_FLAGS  &n= bsp;       =3D DEF(GCC_ASLCC_FLAGS) -m32

> -fno-lto DEF(CLANGDWARF_IA32_TARGET)

>

> +*_CLANGDWARF_IA32_ASM_FLAGS  &nbs= p;         =3D DEF(GCC_ASM_FLAGS) -= m32 -

> march=3Di386 DEF(CLANGDWARF_IA32_TARGET)

>

> +*_CLANGDWARF_IA32_OBJCOPY_FLAGS  =       =3D

>

> +*_CLANGDWARF_IA32_NASM_FLAGS  &nb= sp;        =3D -f elf32

>

> +*_CLANGDWARF_IA32_PP_FLAGS   = ;          =3D DEF(GCC_PP_FLAG= S)

> DEF(CLANGDWARF_IA32_TARGET)

>

> +*_CLANGDWARF_IA32_ASLPP_FLAGS  &n= bsp;       =3D DEF(GCC_ASLPP_FLAGS)

> DEF(CLANGDWARF_IA32_TARGET)

>

> +*_CLANGDWARF_IA32_VFRPP_FLAGS  &n= bsp;       =3D DEF(GCC_VFRPP_FLAGS)

> DEF(CLANGDWARF_IA32_TARGET)

>

> +

>

> +DEBUG_CLANGDWARF_IA32_CC_FLAGS   =       =3D

> DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto = -march=3Di586

> DEF(CLANGDWARF_IA32_TARGET) -g

>

> +DEBUG_CLANGDWARF_IA32_DLINK_FLAGS &nbs= p;    =3D --eh-frame-hdr -q --gc-

> sections -z common-page-size=3D0x40 --entry = $(IMAGE_ENTRY_POINT) -Map

> $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-a= rchive -O3 -melf_i386 --

> format=3Delf

>

> +DEBUG_CLANGDWARF_IA32_DLINK2_FLAGS &nb= sp;   =3D

>

> +

>

> +RELEASE_CLANGDWARF_IA32_CC_FLAGS  = ;     =3D

> DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -Oz -flto = -march=3Di586

> DEF(CLANGDWARF_IA32_TARGET)

>

> +RELEASE_CLANGDWARF_IA32_DLINK_FLAGS &n= bsp;  =3D --eh-frame-hdr -q --gc-

> sections -z common-page-size=3D0x40 --entry = $(IMAGE_ENTRY_POINT) -Map

> $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-a= rchive -O3 -melf_i386 --

> format=3Delf

>

> +RELEASE_CLANGDWARF_IA32_DLINK2_FLAGS &= nbsp; =3D

>

> +

>

> +NOOPT_CLANGDWARF_IA32_CC_FLAGS  &= nbsp;      =3D

> DEF(CLANGDWARF_ALL_CC_FLAGS) -m32 -O0 -march= =3Di586

> DEF(CLANGDWARF_IA32_TARGET) -g

>

> +NOOPT_CLANGDWARF_IA32_DLINK_FLAGS &nbs= p;    =3D --eh-frame-hdr -q --gc-

> sections -z common-page-size=3D0x40 --entry = $(IMAGE_ENTRY_POINT) -Map

> $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-a= rchive -O0 -melf_i386 --

> format=3Delf

>

> +NOOPT_CLANGDWARF_IA32_DLINK2_FLAGS &nb= sp;   =3D

>

> +

>

> +##########################

>

> +# CLANGDWARF X64 definitions

>

> +##########################

>

> +*_CLANGDWARF_X64_CC_PATH   &= nbsp;          =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_SLINK_PATH  &nbs= p;        =3D

> DEF(CLANGDWARF_X64_PREFIX)llvm-ar

>

> +*_CLANGDWARF_X64_DLINK_PATH  &nbs= p;        =3D

> DEF(CLANGDWARF_X64_PREFIX)ld.lld

>

> +*_CLANGDWARF_X64_ASLDLINK_PATH  &= nbsp;     =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_ASM_PATH   =           =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_PP_PATH   &= nbsp;          =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_VFRPP_PATH  &nbs= p;        =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_ASLCC_PATH  &nbs= p;        =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_ASLPP_PATH  &nbs= p;        =3D

> DEF(CLANGDWARF_X64_PREFIX)clang

>

> +*_CLANGDWARF_X64_OBJCOPY_PATH  &n= bsp;      =3D

> DEF(CLANGDWARF_IA32_PREFIX)llvm-objcopy

>

> +

>

> +*_CLANGDWARF_X64_ASLCC_FLAGS  &nb= sp;       =3D DEF(GCC_ASLCC_FLAGS) -m64

> -fno-lto DEF(CLANGDWARF_X64_TARGET)

>

> +*_CLANGDWARF_X64_ASM_FLAGS   = ;         =3D DEF(GCC_ASM_FLAGS) -m= 64

> DEF(CLANGDWARF_X64_TARGET)

>

> +*_CLANGDWARF_X64_OBJCOPY_FLAGS  &= nbsp;     =3D

>

> +*_CLANGDWARF_X64_NASM_FLAGS  &nbs= p;        =3D -f elf64

>

> +*_CLANGDWARF_X64_PP_FLAGS   =           =3D DEF(GCC_PP_FLAGS= )

> DEF(CLANGDWARF_X64_TARGET)

>

> +*_CLANGDWARF_X64_ASLPP_FLAGS  &nb= sp;       =3D DEF(GCC_ASLPP_FLAGS)

> DEF(CLANGDWARF_X64_TARGET)

>

> +*_CLANGDWARF_X64_VFRPP_FLAGS  &nb= sp;       =3D DEF(GCC_VFRPP_FLAGS)

> DEF(CLANGDWARF_X64_TARGET)

>

> +

>

> +DEBUG_CLANGDWARF_X64_CC_FLAGS  &n= bsp;      =3D

> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-

> DEFIAPI=3D__attribute__((ms_abi))" -mno= -red-zone -mcmodel=3Dsmall -fpie -Oz

> -flto DEF(CLANGDWARF_X64_TARGET) -g

>

> +DEBUG_CLANGDWARF_X64_DLINK_FLAGS  = ;    =3D --eh-frame-hdr -q --gc-

> sections -z common-page-size=3D0x40 --entry = $(IMAGE_ENTRY_POINT) -Map

> $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-a= rchive -O3 -

> melf_x86_64 --format=3Delf -pie

>

> +DEBUG_CLANGDWARF_X64_DLINK2_FLAGS &nbs= p;   =3D

>

> +DEBUG_CLANGDWARF_X64_GENFW_FLAGS  = ;    =3D --keepexceptiontable

>

> +

>

> +RELEASE_CLANGDWARF_X64_CC_FLAGS  =      =3D

> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-

> DEFIAPI=3D__attribute__((ms_abi))" -mno= -red-zone -mcmodel=3Dsmall -fpie -Oz

> -flto DEF(CLANGDWARF_X64_TARGET)

>

> +RELEASE_CLANGDWARF_X64_DLINK_FLAGS &nb= sp;  =3D --eh-frame-hdr -q --gc-

> sections -z common-page-size=3D0x40 --entry = $(IMAGE_ENTRY_POINT) -Map

> $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-a= rchive -O3 -

> melf_x86_64 --format=3Delf -pie

>

> +RELEASE_CLANGDWARF_X64_DLINK2_FLAGS &n= bsp; =3D

>

> +RELEASE_CLANGDWARF_X64_GENFW_FLAGS &nb= sp;  =3D

>

> +

>

> +NOOPT_CLANGDWARF_X64_CC_FLAGS  &n= bsp;      =3D

> DEF(CLANGDWARF_ALL_CC_FLAGS) -m64 "-

> DEFIAPI=3D__attribute__((ms_abi))" -mno= -red-zone -mcmodel=3Dsmall -fpie -O0

> DEF(CLANGDWARF_X64_TARGET) -g

>

> +NOOPT_CLANGDWARF_X64_DLINK_FLAGS  = ;    =3D --eh-frame-hdr -q --gc-

> sections -z common-page-size=3D0x40 --entry = $(IMAGE_ENTRY_POINT) -Map

> $(DEST_DIR_DEBUG)/$(BASE_NAME).map --whole-a= rchive -O0 -

> melf_x86_64 --format=3Delf -pie

>

> +NOOPT_CLANGDWARF_X64_DLINK2_FLAGS &nbs= p;   =3D

>

> +NOOPT_CLANGDWARF_X64_GENFW_FLAGS  = ;    =3D --keepexceptiontable

>

> +

>

>  #

>

>  #

>

>  # XCODE5 support

>

> --

> 2.31.1.windows.1

>

>

>

> -=3D-=3D-=3D-=3D-=3D-=3D

> Groups.io Links: You receive all messages se= nt to this group.

> View/Reply Online (#75599): https://edk2.groups.i= o/g/devel/message/75599

> Mute This Topic: https://groups.io/mt/= 83095853/1781003

> Group Owner: devel+owner@edk2.grou= ps.io

> Unsubscribe: https://edk2.groups.i= o/g/devel/unsub [steven.shi@intel.com]

> -=3D-=3D-=3D-=3D-=3D-=3D

>

 

--_000_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_-- --_004_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_ Content-Type: image/png; name="image001.png" Content-Description: image001.png Content-Disposition: inline; filename="image001.png"; size=8405; creation-date="Wed, 26 May 2021 11:35:03 GMT"; modification-date="Wed, 26 May 2021 11:35:03 GMT" Content-ID: Content-Transfer-Encoding: base64 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 kAnSNP8PVTe0FkhNigMAAAAASUVORK5CYII= --_004_MWHPR11MB1950EB171867B8330973E7DF8C249MWHPR11MB1950namp_--