From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by mx.groups.io with SMTP id smtpd.web10.6120.1684963430597953922 for ; Wed, 24 May 2023 14:23:51 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="unable to parse pub key" header.i=@intel.com header.s=intel header.b=kIDaUmvb; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: michael.d.kinney@intel.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1684963430; x=1716499430; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version; bh=F5doniBij2/6XLXJvfmet2V08UD9F0kkCNzeILny9E4=; b=kIDaUmvbB35dcm3cAJv97ZiFY22xnwHsrSmNVBUOGU+2Hphi0LFbz+2g FQKRrUgOtm+N43QhoxYng3eSsO2FVBkob/+M3X4wsZElivbbjDsQ+sUcN T4JJdoeAW5xqWEQUN9CQkUW1sOUm8P+uqrPHneT2v3KvCiiQ+/YVqOT1i 47z2cXVRg1fSbghUecZn0yw+c/UCaCBSHV4uyQa3S8ifvUGyc4yXJd4/3 kwZEiIUoEq5xrwfA3VtJbjWpGxuGNlVx47NafIk2TfUUS3yD2XRic5QeA AxGTZ4vkdSe0yerkF/l9KWk2ORW1BfQEG5UXP8rgnJAHPdOxYHZpGmnm9 Q==; X-IronPort-AV: E=McAfee;i="6600,9927,10720"; a="343157699" X-IronPort-AV: E=Sophos;i="6.00,190,1681196400"; d="scan'208,217";a="343157699" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 24 May 2023 14:23:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10720"; a="682060592" X-IronPort-AV: E=Sophos;i="6.00,190,1681196400"; d="scan'208,217";a="682060592" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by orsmga006.jf.intel.com with ESMTP; 24 May 2023 14:23:49 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 24 May 2023 14:23:49 -0700 Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23; Wed, 24 May 2023 14:23:49 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.23 via Frontend Transport; Wed, 24 May 2023 14:23:49 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.168) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.23; Wed, 24 May 2023 14:23:48 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NzKBufDNnA+PK28vDj4LO//gfca9mmGje7Hg26LcK4otuEpNS8obYdBjpUaAStTX/atY4pXV+Aqn9fthJ1XOszmDnI9+floOotDPkB3Yy8g5hSGxEcYIMgzYOGKLfNt7kyuvEgeQGJH2ULPqvVVMcDeGCMKBCm6TRYAQPR/j5kpIUrNqPPOgi5xyCfp8/i3/rDe1qcxthpSe6tH7yO0bv1D3mnlayGAm4YHfbS8cD6dYrv/GL/VrbS4fZuyOobzQnfvB5kWEZnginDbKIDiKYTXEHb+xqeMgkRP09hs91vAfWwxFVWc4LowiEv+uiM9EmKLL2Ac24Mgn4SrAxSoDwQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HrXWrSo92MkcD7vQYlHBbkVHL33+I36+rjbn+htJyRg=; b=EAdDHecc3HXNGuD6jWwPuyrpdvN6wQWNdSCkJ/GEyI3am0ichv/JwZFxArD9rC1pMoK6UBJD4D9l8qoiBFOnM1uDD0ht6xCS34rEmXOgRxbvbpVYuwpDD+Wc3c5DeWoc/9G6FHCkQNAJrUL/w/8T5ezh35FTaxRnu1OojYvUdEOgCGTkd8P1tclJj0fY85Zdc1Z+7Tf18UoqceHeGaPSFXnVsAYtpsGu578e4fSNqS9uFKdD1JUNEHNTDmgS6RrNmX0IWpawIyNF8qPvvs1B4ka7TXQhnl6RapVMrNrL4v1GUe5Lq1PXcTm7J+AnX47uGf6I10BiFegrGgk3PR20rw== 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 Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by IA1PR11MB7344.namprd11.prod.outlook.com (2603:10b6:208:423::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6411.27; Wed, 24 May 2023 21:23:46 +0000 Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::4752:67f2:9956:b277]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::4752:67f2:9956:b277%4]) with mapi id 15.20.6411.029; Wed, 24 May 2023 21:23:46 +0000 From: "Michael D Kinney" To: "Pop, Aaron" , "devel@edk2.groups.io" CC: "Kinney, Michael D" Subject: Re: GoogleTest Compatibility with MdePkg's IndustyStandard header files Thread-Topic: GoogleTest Compatibility with MdePkg's IndustyStandard header files Thread-Index: AdmNCFzONb90exfORZ2x+UzGvNjL+wBauAkQAAHr8iAAArd2kA== Date: Wed, 24 May 2023 21:23:46 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: msip_labels: MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ActionId=6ca6b3d0-a1a7-4645-a98a-43f873bd8465;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_ContentBits=0;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Enabled=true;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Method=Standard;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_Name=Internal;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SetDate=2023-05-22T23:40:24Z;MSIP_Label_f42aa342-8706-4288-bd11-ebb85995028c_SiteId=72f988bf-86f1-41af-91ab-2d7cd011db47; authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|IA1PR11MB7344:EE_ x-ms-office365-filtering-correlation-id: 0ffa1498-12e4-444f-32b9-08db5c9d2880 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: /xoLwWQpApFmdcWQ0P0G+uJuy3pxU64rJwWjeWZCvXclxA1F4TCMJiOi0R9qEDLE10b7B4lqxZgBovtGidvg2uH43UEC6WZ+7gd/MtLPQ6Zik3PvOuiQdAs6pVWch+OjV5k3So603hWHA9/70NN7bcKpmLDMfjqh2f1W6XMjBXZ3Ga7f+LL7bFDuOMQCKUtY8uonBh98oZYoNY2gETt15XTlMb/IO5QSZY/TXHrNLBjUfBvqdt/J71sDk+sAPYc8Zxqclj/mJD7OObO/vW6qv0Dfc0CRINbh5Ea40Txjmy8T0xpvXMD31GnfWQhVCVNLns14VSnsOujdGWBdMFB04uf8qRIChp8G4KQDUrherXLfSqbAREjND9Q7+WciW1GTIlA7B2+veOq4gicZEf+QwnrwtmTB8WJC+v/xshXVvHz3CCRzWoQGkmqHPt4Yi+OgMxHCcQnh+t6NarqCdFFUiLnbjtWRu/5eQmgCceeOSIwTAp8nS0appo3NyJebkAX8P01O0MxfOMXAq9zp0ZFA6GWrc8snOGik9edRLEWERafM8+MVYjVwLm5GmtRWNYEkzKeZS+G0c87xcSiSaRPyTaNi7s6yGZekKHaQk7RhLXdWMKSKV31BLtGSD08WKtS6 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4929.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(376002)(39860400002)(346002)(136003)(366004)(451199021)(55016003)(26005)(122000001)(53546011)(38100700002)(186003)(9686003)(6506007)(33656002)(107886003)(82960400001)(2906002)(83380400001)(41300700001)(7696005)(316002)(110136005)(71200400001)(478600001)(66556008)(66446008)(66476007)(66946007)(76116006)(64756008)(38070700005)(45080400002)(4326008)(86362001)(8936002)(8676002)(5660300002)(52536014);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?c4qVeFQTW2VKZu1TJYxWZXI/VXsYzOiwNKSX9cpdpC1HJbl6R8BZcY6/MXII?= =?us-ascii?Q?2qfnQMFBBx5Rj/4SIQYYnsIZHLQgBSs1EsUk2GHpkQxI1hn27DyTl0xpe4Mw?= =?us-ascii?Q?y2vQM/Z/WPpAiujdf2Quq4Q67u+SkYUdqv37vc9hF1uhJ/aMZKC8q0RwrEaB?= =?us-ascii?Q?yvcWxBveSUjC14kE1quS6ViZB0P6NymM7GKcP++JW34/+zmH2MocLzWhMImz?= =?us-ascii?Q?YDYwJdnD+9HPsGo1bg2yNEcOAfTp8nEDt0SjHzUNBkJzMPZCQjGOPDYGfTCT?= =?us-ascii?Q?NbL6pfwXcRXvXruf/wsSl03TqW5+n2R7RcxzoWBoEyvzzo1g0ZRCNU4ktb6g?= =?us-ascii?Q?C55Yq7/2g6GqxNGorgz+Vajs77mpeTTqksnDg7mYUmjebV9nV///ebUTEJ7k?= =?us-ascii?Q?3mkDJVPW3djf/TzzljWrLkEUgvckcdct86XfmIBoS0NzwKHShkXKI2XRdK1Q?= =?us-ascii?Q?67CVyYuu2WQnOAN7XqFf40vnSW5hpsX2eKRrcW8fReNnbdclOzMwLqmKUegw?= =?us-ascii?Q?1rGpIMSjd2nTGElp8BXdeUh/ZQfLuO7rUnVplebDBZLqPjc3UqYQ0ubcSeXy?= =?us-ascii?Q?LrL7NTGoMydY2Nr06EHtEDFE1EoA8hz6DsCrlwAAMKDkl4BRqhhbGJ3D1wrq?= =?us-ascii?Q?4gekGPo8PDThP5XkGi/IPyNeaCGaTYv3JTZ+v+eX94/CllUgYhvX0kIL+L5P?= =?us-ascii?Q?xBfg+Si4w6Z86qXbV7uzZdRaBdZ+/cv0m3bn5aDl8r9TUC096YZuS0CVS2BM?= =?us-ascii?Q?8QmmKjo8InbS/BxbAT1u92kuRUaZ05ipzkBGta7gddUv1n9+0AeV7dpcNwwq?= =?us-ascii?Q?DS/gaVuDcmadZ62aogols3uv65k3tSQX7KRj8MqJhp+H6iws/ld4KjDw1k4q?= =?us-ascii?Q?1jpi0uFdQWhe5mUz1G8bMfv8IY1Lu51uUWsSe/Hcoz1riZMBNciZxphg28TN?= =?us-ascii?Q?VY5qK2C8gJTq3sFi/rkab6ieCBUfCXgpL6NYzHXpZgwvwD6R52qzo04YQ6oj?= =?us-ascii?Q?O9KxzdyhJ39/3ESgHHg32S+ysaTPNj043f8c+8WI+k44T6W7rHFYU7o85JCp?= =?us-ascii?Q?ld3z+Jkiqzk2oeVME1acVAuDp4WcHoOrkKY5H3xQeMYJzU2jR7cY9vnEMmdS?= =?us-ascii?Q?YD0jTuZCtPcFtnm6EIkg6adYp3eWj+lurkrTzgJB1kG+ORsCdmrv67dVwFD1?= =?us-ascii?Q?krnNWFud/rc+XgE2iY8MaVykyN4JuHbjfpoKKZUonf7RAZgp4rsRDrs2h2Ft?= =?us-ascii?Q?YFiqmFlPlL5LTNhCFcNQ5TegOC3j89sqTMW/MbJrN+RI7HFDPQjWo+PfpBgZ?= =?us-ascii?Q?myU1ncShMrOLeK/nBkbJy39+ECJucWHhS0Lv1PCk9zczN6T3cwzGaxMC3rDQ?= =?us-ascii?Q?cU5PLAE3eiKPYjXe3X5IC/k3ioX6Mlf/JEv0Opl7NM8V6LqiQsxcFZGRpNmm?= =?us-ascii?Q?FC/Xk7UgUhEwqMC6PPWDEHHBJ/Gmx1QJbnxGiztXz/LhIFLgOul3y2XWEAVg?= =?us-ascii?Q?a2U0nv1QdX30aPtXKQ7WcPfIQWYz3LI49W+MePbF16Qr/8e+TmS0ujyZHA+k?= =?us-ascii?Q?KXayDBFgXD3Z4v36PF59H3hs8Ahws5o43ygzQ7B2/PAY71klpkXgO8Ss18uS?= =?us-ascii?Q?+A=3D=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ffa1498-12e4-444f-32b9-08db5c9d2880 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2023 21:23:46.1761 (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: 8n0e9LuRSVkw2sl9lp1opp05BiIcuClvfmlr/ibM6GCH3j6mFnyarDoC5W/N60JIzDpSO986266Yf4dKaI88Z38l1/DrwvA503sMzcAPX5k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR11MB7344 Return-Path: michael.d.kinney@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: multipart/alternative; boundary="_000_CO1PR11MB49290A91C55F0D98A89BE1D4D2419CO1PR11MB4929namp_" --_000_CO1PR11MB49290A91C55F0D98A89BE1D4D2419CO1PR11MB4929namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable After trying a few GCC experiments, there does not appear to be any way to = work around "xor" keyword. I recommend we update EDK II sources to not use c++ keywords to avoid this = issue all together. This may require changes that do not match names from industry standard spe= cs. Mike From: Aaron Pop Sent: Wednesday, May 24, 2023 1:08 PM To: Kinney, Michael D ; devel@edk2.groups.io Subject: RE: GoogleTest Compatibility with MdePkg's IndustyStandard header = files Hi Mike, What you suggested does work for MSVC, but it is failing with GCC. It sems = that GCC is very strict about operator names. Relevant errors below: error: "xor" cannot be used as a macro name as it is an operator in C++ #define xor XOR ^~~ error: "xor" cannot be used as a macro name as it is an operator in C++ #undef xor MdePkg/Include/IndustryStandard/Tpm20.h:1250:21: error: expected unqualifie= d-id before 'xor' token TPMI_ALG_HASH xor; ^~~ MdePkg/Include/IndustryStandard/Tpm20.h:1323:20: error: expected unqualifie= d-id before 'xor' token TPMS_SCHEME_XOR xor; ^~~ Aaron From: Kinney, Michael D > Sent: Wednesday, May 24, 2023 12:49 PM To: Aaron Pop >; deve= l@edk2.groups.io Cc: Kinney, Michael D > Subject: [EXTERNAL] RE: GoogleTest Compatibility with MdePkg's IndustyStand= ard header files Hi Aaron, Don't know if this will completely resolve your issues, but if you add some= preprocessor statements around the problematic includes in your unit test = CPP file, you may be able to get it to build. For example, I added the highlighted lines to MdePkg\Test\GoogleTest\Librar= y\BaseSafeIntLib\TestBaseSafeIntLib.cpp and I can get that unit test to bui= ld. Without the #define/#undef lines it fails in the way you describe. #include extern "C" { #include #include #define operator operator_ #define xor xor_ #include #include #undef operator #undef xor } Mike From: Aaron Pop > Sent: Monday, May 22, 2023 5:41 PM To: devel@edk2.groups.io Cc: Kinney, Michael D > Subject: GoogleTest Compatibility with MdePkg's IndustyStandard header file= s Google Test, and CPP, has more keywords C uses. Tpm12.h and Tpm20.h have references to struct names that are `operator` and `xor`, both of whic= h trigger build errors because they conflict with CPP's keywords. Operator triggered a build error in MSVC. Xor only triggered a build error = under GCC, MSVC did not have a problem with it. The work arounds suggested in the call, (using defines to get around the co= nflict) worked for operator, but did not work for xor with gcc. Tpm12.h: TPM_PERMANENT_FLAGS BOOLEAN operator; Tpm20.h: TPMU_SCHEME_KEYEDHASH TPMS_SCHEME_XOR xor; TPMU_SYM_KEY_BITS TPMI_ALG_HASH xor; What is the suggested method of trying to make existing header files compat= ible with google test? Thanks, Aaron --_000_CO1PR11MB49290A91C55F0D98A89BE1D4D2419CO1PR11MB4929namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

After trying a few GCC experiments, there does not a= ppear to be any way to work around “xor” keyword.

 

I recommend we update EDK II sources to not use c++ = keywords to avoid this issue all together.

 

This may require changes that do not match names fro= m industry standard specs.

 

Mike

 

From: Aaron Pop <aaronpop@microsoft.com&= gt;
Sent: Wednesday, May 24, 2023 1:08 PM
To: Kinney, Michael D <michael.d.kinney@intel.com>; devel@edk2= .groups.io
Subject: RE: GoogleTest Compatibility with MdePkg's IndustyStandard = header files

 

Hi Mike,

 

What you suggested does work for MSVC, but it is fai= ling with GCC. It sems that GCC is very strict about operator names.

 

Relevant errors below:

 

error: "xor" cannot be used as a macro nam= e as it is an operator in C++

#define xor       XOR<= o:p>

         &nb= sp;     ^~~

error: "xor" cannot be used as a macro nam= e as it is an operator in C++

#undef xor

MdePkg/Include/IndustryStandard/Tpm20.h:1250:21: err= or: expected unqualified-id before ‘xor’ token

TPMI_ALG_HASH     xor;

        &nbs= p;             =             &nb= sp; ^~~

MdePkg/Include/IndustryStandard/Tpm20.h:1323:20: err= or: expected unqualified-id before ‘xor’ token

TPMS_SCHEME_XOR  xor;

        &nbs= p;             =             &nb= sp;    ^~~

 

 

Aaron

 

From: Kinney, Michael D <michael.d.kinney@intel.com>
Sent: Wednesday, May 24, 2023 12:49 PM
To: Aaron Pop <aaronpop= @microsoft.com>; devel@edk2.groups.io
Cc: Kinney, Michael D <michael.d.kinney@intel.com>
Subject: [EXTERNAL] RE: GoogleTest Compatibility with MdePkg's Indus= tyStandard header files

 

Hi Aaron,

 

Don’t know if this will completely resolve you= r issues, but if you add some preprocessor statements around the problemati= c includes in your unit test CPP file, you may be able to get it to build.<= o:p>

 

For example, I added the highlighted lines to MdePkg= \Test\GoogleTest\Library\BaseSafeIntLib\TestBaseSafeIntLib.cpp and I can ge= t that unit test to build.  Without the #define/#undef lines it fails = in the way you describe.

 

#include <gtest/gtest.h>

extern "C" {

  #include <Base.h>

  #include <Library/SafeIntLib.h>

 

#define operator operator_

#define xor xor_

 

  #include <IndustryStandard/Tpm20.h><= /p>

  #include <IndustryStandard/Tpm12.h>

 

#undef operator

#undef xor

}

 

Mike

 

 

From: Aaron Pop <aaronpop@microsoft.com>
Sent: Monday, May 22, 2023 5:41 PM
To: devel@edk2.groups.io=
Cc: Kinney, Michael D <michael.d.kinney@intel.com>
Subject: GoogleTest Compatibility with MdePkg's IndustyStandard head= er files

 

Google Test, and CPP, has more keywords  C uses= .

 

Tpm12.h and Tpm20.h

have references to struct names that are `operator` = and `xor`, both of which trigger build errors because they conflict with CP= P’s keywords.

 

Operator triggered a build error in MSVC. Xor only t= riggered a build error under GCC, MSVC did not have a problem with it.

 

The work arounds suggested in the call, (using defin= es to get around the conflict) worked for operator, but did not work for xo= r with gcc. 

 

 

Tpm12.h:

TPM_PERMANENT_FLAGS

  BOOLEAN      &n= bsp;            = ;        operator;

 

 

Tpm20.h:

TPMU_SCHEME_KEYEDHASH

  TPMS_SCHEME_XO= R  xor;

TPMU_SYM_KEY_BITS

  TPMI_ALG_HASH     xor;

 

 

What is the suggested method of trying to make exist= ing header files compatible with google test?

 

Thanks,

Aaron

--_000_CO1PR11MB49290A91C55F0D98A89BE1D4D2419CO1PR11MB4929namp_--