From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by sourceware.org (Postfix) with ESMTPS id 01E8F3857352 for ; Tue, 4 Jul 2023 12:40:36 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 01E8F3857352 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1688474437; x=1720010437; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=JAiofxpUWWwhR77SpIcnjdpeWU26tNS7O41djSJUDwc=; b=U6xg2VqgG6mB7MtTqIwTk91G1lE0U9585M395ruFlBkGdHW/YGn/UKav ajim6x21tjPuF7p8n1eiIAZq1XvPidt84X2DgFI/YDBMDhgX61BGPgLCM R0h1rlo0miGULKFd373MZd/gtAyPj0Bwk76ctSVzKis0HG6SLKfFILPRe UTI8+jLgwO9vq5sKHV43OfdDGO4NJ9HfJ02XUfuO0jjXWYatVmAs/0A+3 zAuO4if/xlizppX9miKuzegQ/BkivYccbjwoLGTqfIMjyk6UU2yujaIIY QjO6I+DT1OU2sdKJ1RtlzyTBFY2eQpPrxwMUg3ZxD8At1yWv91HnkqalO g==; X-IronPort-AV: E=McAfee;i="6600,9927,10760"; a="449481445" X-IronPort-AV: E=Sophos;i="6.01,180,1684825200"; d="scan'208";a="449481445" Received: from orsmga007.jf.intel.com ([10.7.209.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 04 Jul 2023 05:40:35 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10760"; a="712878717" X-IronPort-AV: E=Sophos;i="6.01,180,1684825200"; d="scan'208";a="712878717" Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by orsmga007.jf.intel.com with ESMTP; 04 Jul 2023 05:40:35 -0700 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Tue, 4 Jul 2023 05:40:34 -0700 Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Tue, 4 Jul 2023 05:40:34 -0700 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.177) 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.27; Tue, 4 Jul 2023 05:40:34 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=M+edkDuDYxpdwp7CoVlwdPgctowg0SuUqoPijL6FiXeg6ilKU6BAalE+jJm6psLI8eyj7Qqwel9j3FVMx5ygcZFoTBb/XSUNLT+odw1h+TZN1/ncL2iP6t8fwCWEZ8/SLwtqeTxpbyHkn4TRzZ1jcaCOqo3Bu/IHxqia7D8eJTRHxGxRIKgs79zfJzRaRbu6NkWH5cg1WlriuG4Okhp7QNUpb22NEEtZ7wPQJ8WC37qhOqTbRrB0tSmq5n7V777VvMhXHx23+vMsO/GAnO6y9bme3WHZNnZpSE+1P3U1MtFsE0xjYcPc+Ut8xKupRjE81kYAIM9VNw6e+waMSIx/Uw== 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=N8ANVfvkS4jKZVvR7OeiqYQHeYU6I1dPgfGeOWU2c6g=; b=kbw4NJNgxkv7myC3D+6wOml1ZVuMju4tLCuekMgniba0q5iW8J16kNjwn1TyJk2CDg3ZlSsjm5NJZpBL9yOMqgXmigmLbgR0R1NcMqqqwIOEqDhwMBgYfSKSB54FQl4V9ZpvJz2CDQz5f6RzjrLeAWC7X29ljCkB8LVMNK+PW/GmmK0BFrE2l5rwp7HlUpvQAu5tzxEnGD7RoCTokPbp+Snwcm0AFGu5sdRZUsDq4iHuYeFLArtY1kt0bEbvnAhs2Ds9Ax6q3DYEV3WEFBlPEXPQ65MEpYEUfGwgqaLclvag2WG7kl0v/60uUUMj5HlHKaSbBs0YcCDcLJWZdpCX/Q== 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 MW5PR11MB5908.namprd11.prod.outlook.com (2603:10b6:303:194::10) by MW4PR11MB5776.namprd11.prod.outlook.com (2603:10b6:303:183::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6544.24; Tue, 4 Jul 2023 12:40:27 +0000 Received: from MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::127c:f4cc:e699:8f73]) by MW5PR11MB5908.namprd11.prod.outlook.com ([fe80::127c:f4cc:e699:8f73%6]) with mapi id 15.20.6544.024; Tue, 4 Jul 2023 12:40:27 +0000 From: "Li, Pan2" To: Richard Biener , Thomas Schwinge CC: "juzhe.zhong@rivai.ai" , "gcc-patches@gcc.gnu.org" , Jakub Jelinek , Robin Dapp , "jeffreyalaw@gmail.com" , "Wang, Yanzhang" , "kito.cheng@gmail.com" , Tobias Burnus Subject: RE: [v4] Streamer: Fix out of range memory access of machine mode Thread-Topic: [v4] Streamer: Fix out of range memory access of machine mode Thread-Index: AQHZqy//PR6aFYxJgUuSNFdI6vHsMq+pfl8AgAASiaA= Date: Tue, 4 Jul 2023 12:40:27 +0000 Message-ID: References: <20230619080710.1536456-1-pan2.li@intel.com> <20230621075824.1990571-1-pan2.li@intel.com> <874jmqwr8q.fsf@euler.schwinge.homeip.net> <87sfaauit8.fsf@dem-tschwing-1.ger.mentorg.com> <24F5CA0EC7859D5E+2023063009263644698181@rivai.ai> <87mt0hcp12.fsf@euler.schwinge.homeip.net> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: 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: MW5PR11MB5908:EE_|MW4PR11MB5776:EE_ x-ms-office365-filtering-correlation-id: 3030331c-4e6a-4970-038d-08db7c8bd85a x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: kjq61glYxLWq5nia1wNAH7C40VyQ/8c1tbVtlP4y2XbZKAjHxoeMaPtchP3Xr/XSeFzSKljaYNfxXV7wL5vjqCymOSRBf+UMQ0loyD8RuFDBJox/OJpKXMped0XDUAwsTBAKy+KFgiz+g85B88T8o+dKIOpbE75xY1Z4fq8tX3cG10eUI/N3EVkl6JeyG9194pf1vPWw2WWwMvJXaeTuqLFnyqmZZwY5kpnQgNOvppXBMRdGgu5lwriWghkAHgDGKVXeRWNTS7LljWQegnVU4VT1eSe8FfvX2MhaaFXRQ8wwnlvH2zyjxvb5r79lK7UCTe67b//8cYW6sgyYH5NSMyw/Cq0kG9wDtfOEi0QI/gJjeproOF07HYRS9Acj9Di2xDknhSp0nRk7sh3Wg0Wu1XDRN5goBOLZ1HrpZq1Dzk74Xk61NcgnotLSA1Ovxj8Nm5kktWexjDIKlqyMIjge33stMijiuLdkGJP5OIKtBuZ+BKvF8iWqL0F1iODGczylw9IqEY66sB2FRfV8vd1O0bgqFVnwOvljtcPpwaz18oI2EMbeo19NQFVAWMVa2+koTVLWwh5eesZqucdSmHDnuKUTyIUNCnRyO68FPj/sSUc= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MW5PR11MB5908.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(396003)(376002)(39860400002)(346002)(366004)(136003)(451199021)(38100700002)(71200400001)(33656002)(2906002)(7696005)(8936002)(38070700005)(110136005)(54906003)(8676002)(55016003)(41300700001)(52536014)(478600001)(5660300002)(53546011)(66946007)(66446008)(76116006)(66476007)(64756008)(9686003)(186003)(26005)(86362001)(6506007)(66556008)(316002)(4326008)(122000001)(83380400001)(82960400001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?mX3mnp23qFHvP/ENa74eZTAikwXW5pfB98ANcfUXNsFtY/SvKDgifTjjyQLL?= =?us-ascii?Q?PogggWQqmX1jS8+vv56aAOmsmBznXZ08oO6HS6AGyZwdbJSSqcoVnnW312SI?= =?us-ascii?Q?Xkac19sfC3i2hJIo/tfg0xJzhkRZEaP9xaRQJ2z2CSHrXYRjYZ6PduX0hQOz?= =?us-ascii?Q?6CgCqG0SH4tN5po40cVo3he1jis4pIuqYqR7dxTeRQ8R6uuRDy6CYdiEY3KB?= =?us-ascii?Q?JHxMI3OAsE5yVDYi2tOhM9jFwTZogtiLQoWn26JMEzUEeR1j5WP8klfGHiKw?= =?us-ascii?Q?Vu3GLJ76/KgJFNyskGp6BGq/jTshkU0kGGRtH09WTY8smNsxWP6w1fj7jqQL?= =?us-ascii?Q?qAnPUI85Cl6CnlvHi5tM151ZPgfqn7yzMiuhRP3/TWvmDNAtrtAgazFHZ7GW?= =?us-ascii?Q?UKesLJ9AWsDE4I2S3/H0Ug9Vx2FNdTedt+K/7O6ycwzRI0HRv46T98uXJ44t?= =?us-ascii?Q?gd3kuBMDuc05fQ+1aNwhhj7sgiLxquBDo5cJd1jprZsEj4f0FjYQXE4kB8Fg?= =?us-ascii?Q?dYDPlkw1dAP9br1elE5GEv8oFXNMXKDxPAJCjUxZhxmBTL9XhJ7VUuepM8g3?= =?us-ascii?Q?a6QqIakrgiXoRC8mxznaQlC6twEPwwIrtPR0fUBgq6w67Y2Zdu2NHbK2i5GM?= =?us-ascii?Q?PuATpevY7MxLi8mzbnmHd5RTjBAueQwn+TaKAjPnEO3jo3aB+txS3rJpl7bA?= =?us-ascii?Q?Q7ilc1UneITzyOunaZO1vchCV8jkaD6zx5+5Jqewql+rWP9+3nQ6y0zXJuaN?= =?us-ascii?Q?BLZqu+ippSwTuWPhLBgjPXZ+AhqZWR4I7cKHH7dkiR412oa4Mfv4EoKPc8D5?= =?us-ascii?Q?Z+BpgyqKJhSCd6ugeZinEIjZzW9TK8ylCusKtc1w0v/9gPHlZHq/LNMBI1op?= =?us-ascii?Q?5abKJtFORi20mc8qi3Wc40AUI9+ieBnWRnOppMt5mn6BzWP8kAiKpkcy7nKu?= =?us-ascii?Q?fIFLMxaSYqgfqxc5fP+lemILXTOcfyl7PwMsMWtxrKXBIEYv2Y/ix41neT75?= =?us-ascii?Q?z0HswydMAMP2Dka/YuSkGo9IEe7DthxrL7A5F+KLtNjumPmNKumvrIZ678oB?= =?us-ascii?Q?Om8RAkW+zbK1HHSfu4r5J4EXY7MHxd43tyUqJpAd31ETgROX5MfJcAiAPoyt?= =?us-ascii?Q?jCwvgFDy8fS2FnTFhPbys15FaV1b2wNz362hUk8m61DWSve8yUK/Rx4syAmV?= =?us-ascii?Q?9J8upzhgetCL22PATD3EQQlWAiM4zs/iq7jsnS4lx1/SAWLhAPpU/6/wiaQx?= =?us-ascii?Q?QXthp3sPVJAz6JSyKWepSORuD4HNo67IreGOHge5+KdhMxyIF8zqhDY5l5m9?= =?us-ascii?Q?l3jvo46RZfJSyFXE377zom3aFoAo3FXSt+NR0LjqUFLN/qNWVtTYH0FGQ8E0?= =?us-ascii?Q?Ehnq0LUfV1TxQJJ6oDWPvJMB3PzbsSDEt53RxBVFBoG9PL99TkfKisLg/Sx6?= =?us-ascii?Q?VRV7K3O0hPMEScr/PSZ9vJ4bejS/myETKtEZ6BS3RPb+GdIjAvzIr8gMnL+0?= =?us-ascii?Q?s7iSJlvVC/VrcXifbXkluos4vTIBDD36rJ+TgzzeJrm1hry74f5JUs2+tb/W?= =?us-ascii?Q?XDBgxoIvABFpIbUy0YxNaFPIbyc7Mniy5GPuVUZI?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MW5PR11MB5908.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3030331c-4e6a-4970-038d-08db7c8bd85a X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Jul 2023 12:40:27.4845 (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: 2Ui7Vydua4lVZ279fNzaM6dvTsBpda3WRHuqO+DGsi2MGonBRpJ7HSleYX2ghIqldXUbXFe2JyuPCkxDDBZi1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MW4PR11MB5776 X-OriginatorOrg: intel.com X-Spam-Status: No, score=-5.9 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Thanks Richard for reviewing. Hi Thomas, Looks Richard approved the V4 version of Streamer, could you please help to= install it? Or I can help if you are in the middle of something. Thanks again for testing and fixing this issue entirely. Pan -----Original Message----- From: Richard Biener =20 Sent: Tuesday, July 4, 2023 7:26 PM To: Thomas Schwinge Cc: Li, Pan2 ; juzhe.zhong@rivai.ai; gcc-patches@gcc.gnu= .org; Jakub Jelinek ; Robin Dapp ; j= effreyalaw@gmail.com; Wang, Yanzhang ; kito.cheng@= gmail.com; Tobias Burnus Subject: Re: [v4] Streamer: Fix out of range memory access of machine mode On Fri, 30 Jun 2023, Thomas Schwinge wrote: > Hi! >=20 > On 2023-06-30T01:39:39+0000, "Li, Pan2" wrote: > > That?s very cool, thanks Thomas for help! >=20 > :-) >=20 > > Let?s wait the AMD test running result for the final version of the pat= ch. >=20 > That's all looking good, too. >=20 > > From: juzhe.zhong@rivai.ai > > Sent: Friday, June 30, 2023 9:27 AM >=20 > > Could you merge your patch after you tested? >=20 > I've done that, and with (already approved) > > "LTO: Capture 'lto_file_decl_data *file_data' in 'class lto_input_block'" > split out, OK to push the attached > v4 "Streamer: Fix out of range memory access of machine mode"? OK. Thanks, Richard. >=20 > Gr??e > Thomas >=20 >=20 > > From: Thomas Schwinge > > Date: 2023-06-30 04:14 >=20 > > Subject: Re: [PATCH v3] Streamer: Fix out of range memory access of mac= hine mode > > Hi! > > > > On 2023-06-29T11:29:57+0200, I wrote: > >> On 2023-06-21T15:58:24+0800, Pan Li via Gcc-patches > wrote: > >>> We extend the machine mode from 8 to 16 bits already. But there still > >>> one placing missing from the streamer. It has one hard coded array > >>> for the machine code like size 256. > >>> > >>> In the lto pass, we memset the array by MAX_MACHINE_MODE count but th= e > >>> value of the MAX_MACHINE_MODE will grow as more and more modes are > >>> added. While the machine mode array in tree-streamer still leave 256 = as is. > >>> > >>> Then, when the MAX_MACHINE_MODE is greater than 256, the memset of > >>> lto_output_init_mode_table will touch the memory out of range unexpec= ted. > >> > >> Uh. :-O > >> > >>> This patch would like to take the MAX_MACHINE_MODE as the size of the > >>> array in streamer, to make sure there is no potential unexpected > >>> memory access in future. Meanwhile, this patch also adjust some place > >>> which has MAX_MACHINE_MODE <=3D 256 assumption. > >> > >> Thanks to Jakub and Richard for guidance re the offloading compilation > >> case, where we've got different 'MAX_MACHINE_MODE's between stream-out > >> and stream-in, and a modes mapping table. > >> > >> However, with this patch, there are ICEs all over the place... I'm > >> having a look. > > > > Your patch has all the right ideas, there are just a few additional > > changes necessary. Please merge in the attached > > "f into Streamer: Fix out of range memory access of machine mode", with > > 'Co-authored-by: Thomas Schwinge >'. This has > > already survived compiler-side 'lto.exp' testing and > > 'check-target-libgomp' with Nvidia GPU offloading; AMD GPU testing is n= ow > > running (not expecting any bad surprises). Will let you know by (my) > > tomorrow morning in case there are any more problems. > > > > Explanation: > > > >>> --- a/gcc/lto-streamer-in.cc > >>> +++ b/gcc/lto-streamer-in.cc > >>> @@ -1985,8 +1985,6 @@ lto_input_mode_table (struct lto_file_decl_data= *file_data) > >>> internal_error ("cannot read LTO mode table from %s", > >>> file_data->file_name); > >>> > >>> - unsigned char *table =3D ggc_cleared_vec_alloc (1 <= < 8); > >>> - file_data->mode_table =3D table; > >>> const struct lto_simple_header_with_strings *header > >>> =3D (const struct lto_simple_header_with_strings *) data; > >>> int string_offset; > >>> @@ -1998,16 +1996,22 @@ lto_input_mode_table (struct lto_file_decl_da= ta *file_data) > >>> header->string_size, vNULL); > >>> bitpack_d bp =3D streamer_read_bitpack (&ib); > >>> > >>> + unsigned mode_bits =3D bp_unpack_value (&bp, 5); > >>> + unsigned char *table =3D ggc_cleared_vec_alloc (1 <= < mode_bits); > >>> + > >>> + file_data->mode_table =3D table; > >>> + file_data->mode_bits =3D mode_bits; > > > > Here, we set 'file_data->mode_bits' for the offloading case (where > > 'lto_input_mode_table' is called) -- but it's not set for the > > non-offloading case (where 'lto_input_mode_table' isn't called). (See = my > > 'gcc/lto/lto-common.cc:lto_read_decls' change.) That's "not currently = a > > problem", as 'file_data->mode_bits' isn't used anywhere... > > > >>> --- a/gcc/lto-streamer.h > >>> +++ b/gcc/lto-streamer.h > >>> @@ -604,6 +604,8 @@ struct GTY(()) lto_file_decl_data > >>> int order_base; > >>> > >>> int unit_base; > >>> + > >>> + unsigned mode_bits; > >>> }; > > > >>> inline machine_mode > >>> bp_unpack_machine_mode (struct bitpack_d *bp) > >>> { > >>> - return (machine_mode) > >>> - ((class lto_input_block *) > >>> - bp->stream)->mode_table[bp_unpack_enum (bp, machine_mode, 1= << 8)]; > >>> + int last =3D 1 << ceil_log2 (MAX_MACHINE_MODE); > >>> + lto_input_block *input_block =3D (class lto_input_block *) bp->str= eam; > >>> + int index =3D bp_unpack_enum (bp, machine_mode, last); > >>> + > >>> + return (machine_mode) input_block->mode_table[index]; > >>> } > > > > ..., but 'file_data->mode_bits' needs to be considered here, in the > > stream-in for offloading, where 'file_data->mode_bits' -- that is, the > > host 'MAX_MACHINE_MODE' -- very likely is different from the offload > > device 'MAX_MACHINE_MODE'. > > > > Easiest is in 'gcc/lto-streamer.h:class lto_input_block' to capture > > 'lto_file_decl_data *file_data' instead of just > > 'unsigned char *mode_table', and adjust all users. > > > > That's it. :-) > > > >>> --- a/gcc/tree-streamer.h > >>> +++ b/gcc/tree-streamer.h > > > >>> @@ -108,15 +108,19 @@ inline void > >>> bp_pack_machine_mode (struct bitpack_d *bp, machine_mode mode) > >>> { > >>> streamer_mode_table[mode] =3D 1; > >>> - bp_pack_enum (bp, machine_mode, 1 << 8, mode); > >>> + int last =3D 1 << ceil_log2 (MAX_MACHINE_MODE); > >>> + > >>> + bp_pack_enum (bp, machine_mode, last, mode); > >>> } > > > > That use of 'MAX_MACHINE_MODE' is safe, as that only concerns the > > stream-out phase. > > > >>> --- a/gcc/tree-streamer.cc > >>> +++ b/gcc/tree-streamer.cc > >>> @@ -35,7 +35,7 @@ along with GCC; see the file COPYING3. If not see > >>> During streaming in, we translate the on the disk mode using this > >>> table. For normal LTO it is set to identity, for ACCEL_COMPILER > >>> depending on the mode_table content. */ > >>> -unsigned char streamer_mode_table[1 << 8]; > >>> +unsigned char streamer_mode_table[MAX_MACHINE_MODE]; > > > > Likewise. > > > > > > Gr??e > > Thomas >=20 >=20 > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra?e 201, 8= 0634 M?nchen; Gesellschaft mit beschr?nkter Haftung; Gesch?ftsf?hrer: Thoma= s Heurung, Frank Th?rauf; Sitz der Gesellschaft: M?nchen; Registergericht M= ?nchen, HRB 106955 >=20 --=20 Richard Biener SUSE Software Solutions Germany GmbH, Frankenstrasse 146, 90461 Nuernberg, Germany; GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman; HRB 36809 (AG Nuernberg)