From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from ma1-aaemail-dr-lapp01.apple.com (ma1-aaemail-dr-lapp01.apple.com [17.171.2.60]) by mx.groups.io with SMTP id smtpd.web11.6225.1596685593603439662 for ; Wed, 05 Aug 2020 20:46:34 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@apple.com header.s=20180706 header.b=Ud/UTBU1; spf=pass (domain: apple.com, ip: 17.171.2.60, mailfrom: afish@apple.com) Received: from pps.filterd (ma1-aaemail-dr-lapp01.apple.com [127.0.0.1]) by ma1-aaemail-dr-lapp01.apple.com (8.16.0.42/8.16.0.42) with SMTP id 0763gPIU057148; Wed, 5 Aug 2020 20:46:32 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=apple.com; h=from : message-id : content-type : mime-version : subject : date : in-reply-to : cc : to : references; s=20180706; bh=a6F2ySx8eYYSQ0ISkYZTHef8MdCDkIN01eg5tb4j1RU=; b=Ud/UTBU1T0fimwzGpASycMAVKWrGBRs9xjWp/Xsz4EAKke5mtGYPs0cCsXCXCe9CVcTc EtnmB+ANgHDTcmtJc13Untl3933VSjvJsUeU/vPbtR3YtlowZTZ5EEpRV6wY5FP7Xb5e WucLsdK8gSfkwuIAYRuN9wnyJf37SbkYUgROT8+QEhjMzVdulsuuwc9cHSTymmv9dAsV JS+M8//WQCD/mdFrOlcxc7rnmCsRW9/FEgUfOVbL6R3F8ffzth7qitpO9HSUBM+aOKiR gl9CyYfIGWdlfaRMgzi/HcqqERfVF0ZwgXrZ/fuYnuT5Gwviyj0v+JlRcEAdoZolbmz0 sA== Received: from rn-mailsvcp-mta-lapp04.rno.apple.com (rn-mailsvcp-mta-lapp04.rno.apple.com [10.225.203.152]) by ma1-aaemail-dr-lapp01.apple.com with ESMTP id 32n723avu6-3 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128 verify=NO); Wed, 05 Aug 2020 20:46:32 -0700 Received: from rn-mailsvcp-mmp-lapp01.rno.apple.com (rn-mailsvcp-mmp-lapp01.rno.apple.com [17.179.253.14]) by rn-mailsvcp-mta-lapp04.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPS id <0QEM00RX7IHJKB50@rn-mailsvcp-mta-lapp04.rno.apple.com>; Wed, 05 Aug 2020 20:46:31 -0700 (PDT) Received: from process_milters-daemon.rn-mailsvcp-mmp-lapp01.rno.apple.com by rn-mailsvcp-mmp-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) id <0QEM00H00I29UV00@rn-mailsvcp-mmp-lapp01.rno.apple.com>; Wed, 05 Aug 2020 20:46:31 -0700 (PDT) X-Va-A: X-Va-T-CD: eaa4ddfcb373350261403ba6d88dcd77 X-Va-E-CD: 500d7cb7eab5bd201acb0e39dd27ccce X-Va-R-CD: 361b225c932786e0a588efa8f17ff522 X-Va-CD: 0 X-Va-ID: 801bf124-1e77-4322-ab69-041df0ca0972 X-V-A: X-V-T-CD: eaa4ddfcb373350261403ba6d88dcd77 X-V-E-CD: 500d7cb7eab5bd201acb0e39dd27ccce X-V-R-CD: 361b225c932786e0a588efa8f17ff522 X-V-CD: 0 X-V-ID: 558195e4-2adc-420f-b0a6-5e47cfb2e05a X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-08-05_18:2020-08-03,2020-08-05 signatures=0 Received: from [17.235.42.96] (unknown [17.235.42.96]) by rn-mailsvcp-mmp-lapp01.rno.apple.com (Oracle Communications Messaging Server 8.1.0.6.20200729 64bit (built Jul 29 2020)) with ESMTPSA id <0QEM009JYIHHA500@rn-mailsvcp-mmp-lapp01.rno.apple.com>; Wed, 05 Aug 2020 20:46:30 -0700 (PDT) From: "Andrew Fish" Message-id: <1CFCC7E5-6BB3-467D-885E-E74CF0FCA5A0@apple.com> MIME-version: 1.0 (Mac OS X Mail 13.4 \(3608.80.23.2.2\)) Subject: Re: [edk2-devel] question about MSFT compiler/link option Date: Wed, 05 Aug 2020 20:46:29 -0700 In-reply-to: Cc: Mike Kinney , "Gao, Liming" To: edk2-devel-groups-io , tigerliu@zhaoxin.com References: X-Mailer: Apple Mail (2.3608.80.23.2.2) X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:6.0.235,18.0.687 definitions=2020-08-05_18:2020-08-03,2020-08-05 signatures=0 Content-type: multipart/alternative; boundary="Apple-Mail=_AB299631-7162-4DAD-BA39-839D24F22A23" --Apple-Mail=_AB299631-7162-4DAD-BA39-839D24F22A23 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On Aug 5, 2020, at 8:31 PM, Tiger Liu(BJ-RD) wrot= e: >=20 > Hi, Michael: > I wrote this sentence in C file: > pTmp =3D (VOID*)& PdataStructTable; >=20 Tiger, Working around optimization is complicated. You likely added a statement t= hat got optimized away as the value of pTmp could be ignored and your progr= am could still get the same result.=20 You would need to do some meaningful work with pTmp or make pTmp a volatil= e variable to force the compiler to NOT optimize it away. The better the op= timizer, the more layers of abstraction it can see and optimize away.=20 Thanks, Andrew Fish > tried to reference the table being generated to prevent the optimizer fr= om removing the data structure from the executable. >=20 > But it is still being optimized away. >=20 > I used MSTF VS2015. >=20 > Thanks > -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- > =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io > =E4=BB=A3=E8= =A1=A8 Michael D Kinney > =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2020=E5=B9=B48=E6=9C=885=E6=97=A5 = 23:18 > =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io ; Tiger Liu(BJ-RD) >; Gao, Liming >; Kinn= ey, Michael D > > =E4=B8=BB=E9=A2=98: Re: [edk2-devel] question about MSFT compiler/link o= ption >=20 > Hi, >=20 > I think you are seeing the impact of compiler optimizations. >=20 > If a global variable is never referenced after optimizing the code, then= the global variable will be optimized away. This type of optimization is = important for size constrained environment like firmware. >=20 > By using the /Gw- flag, you are disabling the ability of the compiler to= optimize away unreferenced global variables. >=20 > If you update the code in your example to guarantee the global variable = is always accessed for all types of builds, then I suspect you will always = see the global in the map. >=20 > Thanks, >=20 > Mike >=20 >> -----Original Message----- >> From: devel@edk2.groups.io On Behalf Of Tiger >> Liu(BJ-RD) >> Sent: Tuesday, August 4, 2020 11:34 PM >> To: devel@edk2.groups.io; Gao, Liming >> >> Subject: Re: [edk2-devel] question about MSFT compiler/link option >>=20 >> Hi, Liming: >> Thanks for your reply! >>=20 >> I checked map file, not find this global data array. >>=20 >> I found if added this build option in this PEIM's inf, then it seems >> ok. >> [BuildOptions] >> MSFT:*_*_IA32_CC_FLAGS =3D /Gw- >>=20 >> Thanks >>=20 >> -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6----- >> =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io =E4=BB=A3=E8=A1=A8 >> Liming Gao >> =E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2020=E5=B9=B48=E6=9C=884=E6=97=A5= 23:21 >> =E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io; Tiger Liu(BJ-RD) >> =E4=B8=BB=E9=A2=98: Re: [edk2-devel] question about MSFT compiler/link = option >>=20 >> If this global variable is used by code, it will be linked into the >> final EFI image. You can check whether the generate map file includes >> it. >>=20 >>> -----Original Message----- >>> From: devel@edk2.groups.io On >> Behalf Of Tiger >>> Liu(BJ-RD) >>> Sent: Tuesday, August 4, 2020 5:34 PM >>> To: devel@edk2.groups.io >>> Subject: [edk2-devel] question about MSFT >> compiler/link option >>>=20 >>> Hi, Experts: >>> I have a question about MSFT compiler/link option. >>>=20 >>> I wrote a PEIM, which had a large global data array >> definition in a C file. >>> Such as: >>> PRI_DATA_STRUCT PdataStructTable[] =3D { >>> {01, 0x75, 0xF0, 0x0, 0x0, >> 0x0 }, >>> {02, 0x77, 0xF0, 0x0, 0x0, >> 0x0 }, >>> {03, 0x79, 0xF0, 0x0, 0x0, >> 0x0 }, >>> {04, 0x7B, 0xF0, 0x0, 0x0, >> 0x0 }, >>> {05, 0x7D, 0xF0, 0x0, 0x0, >> 0x0 }, >>> {06, 0x7F, 0xF0, 0x0, 0x0, >> 0x0 }, >>> ...... >>> }; >>>=20 >>> This global data array is very large, about 20KB. >>>=20 >>> But I found the PEIM's compiled size is about 5KB, it >> seems not include this global data array in the efi binary statically. >>> Even the release version PEIM's size is larger than >> debug version. >>>=20 >>> I found when compiling release version, the link >> option has : >>> /MERGE:.rdata=3D.data It seems release binary included >> the global data array in the final efi image. >>>=20 >>> So, my question is: >>> Will the global data array be in linked into the final >> efi binary image when compiling debug version? >>>=20 >>> Thanks >>>=20 >>>=20 >>> =E4=BF=9D=E5=AF=86=E5=A3=B0=E6=98=8E=EF=BC=9A >>> =E6=9C=AC=E9=82=AE=E4=BB=B6=E5=90=AB=E6=9C=89=E4=BF=9D=E5=AF=86=E6=88= =96=E4=B8=93=E6=9C=89=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85=E4=BE=9B=E6=8C= =87=E5=AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=E4=BD=BF=E7=94=A8=E3=80=82=E4=B8= =A5=E7=A6=81=E5=AF=B9=E6=9C=AC=E9=82=AE=E4=BB=B6=E6=88=96=E5=85=B6=E5=86= =85 >> =E5=AE=B9=E5=81=9A=E4=BB=BB=E4=BD=95=E6=9C=AA=E7=BB=8F=E6=8E=88=E6=9D= =83=E7=9A=84=E6=9F=A5=E9=98=85=E3=80=81=E4=BD=BF=E7=94=A8=E3=80=81=E5=A4= =8D=E5=88=B6=E6=88=96=E8=BD=AC=E5=8F=91=E3=80=82 >>> CONFIDENTIAL NOTE: >>> This email contains confidential or legally privileged >> information and >>> is for the sole use of its intended recipient. Any >> unauthorized review, use, copying or forwarding of this email or the >> content of this email is strictly prohibited. >>>=20 >>>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >>=20 >> =E4=BF=9D=E5=AF=86=E5=A3=B0=E6=98=8E=EF=BC=9A >> =E6=9C=AC=E9=82=AE=E4=BB=B6=E5=90=AB=E6=9C=89=E4=BF=9D=E5=AF=86=E6=88= =96=E4=B8=93=E6=9C=89=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85=E4=BE=9B=E6=8C= =87=E5=AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=E4=BD=BF=E7=94=A8=E3=80=82=E4=B8= =A5=E7=A6=81=E5=AF=B9=E6=9C=AC=E9=82=AE=E4=BB=B6=E6=88=96=E5=85=B6=E5=86= =85=E5=AE=B9 >> =E5=81=9A=E4=BB=BB=E4=BD=95=E6=9C=AA=E7=BB=8F=E6=8E=88=E6=9D=83=E7=9A= =84=E6=9F=A5=E9=98=85=E3=80=81=E4=BD=BF=E7=94=A8=E3=80=81=E5=A4=8D=E5=88= =B6=E6=88=96=E8=BD=AC=E5=8F=91=E3=80=82 >> CONFIDENTIAL NOTE: >> This email contains confidential or legally privileged information and >> is for the sole use of its intended recipient. Any unauthorized >> review, use, copying or forwarding of this email or the content of >> this email is strictly prohibited. >>=20 >>=20 >=20 >=20 >=20 >=20 >=20 >=20 > =E4=BF=9D=E5=AF=86=E5=A3=B0=E6=98=8E=EF=BC=9A > =E6=9C=AC=E9=82=AE=E4=BB=B6=E5=90=AB=E6=9C=89=E4=BF=9D=E5=AF=86=E6=88=96= = =E4=B8=93=E6=9C=89=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85=E4=BE=9B=E6=8C=87= =E5=AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=E4=BD=BF=E7=94=A8=E3=80=82=E4=B8=A5= =E7=A6=81=E5=AF=B9=E6=9C=AC=E9=82=AE=E4=BB=B6=E6=88=96=E5=85=B6=E5=86=85= =E5=AE=B9=E5=81=9A=E4=BB=BB=E4=BD=95=E6=9C=AA=E7=BB=8F=E6=8E=88=E6=9D=83= =E7=9A=84=E6=9F=A5=E9=98=85=E3=80=81=E4=BD=BF=E7=94=A8=E3=80=81=E5=A4=8D= =E5=88=B6=E6=88=96=E8=BD=AC=E5=8F=91=E3=80=82 > CONFIDENTIAL NOTE: > This email contains confidential or legally privileged information and i= s for the sole use of its intended recipient. Any unauthorized review, use,= copying or forwarding of this email or the content of this email is strict= ly prohibited. >=20 >=20 --Apple-Mail=_AB299631-7162-4DAD-BA39-839D24F22A23 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

On Aug 5, 20= 20, at 8:31 PM, Tiger Liu(BJ-RD) <tigerliu@zhaoxin.com> wrote:

Hi, Michael:
I wrote this sentence in C file:
pTmp =3D (VOID*)& PdataStruct= Table;


Tiger,

Working around optimization is complicate= d. You likely added a statement that got optimized away as the value of pTm= p could be ignored and your program could still get the same result. <= /div>

You would need to do some meaningful wo= rk with pTmp or make pTmp a volatile variable to force the compiler to NOT = optimize it away. The better the optimizer, the more layers of abstraction = it can see and optimize away. 

Tha= nks,

Andrew Fish

tried to referenc= e the table being generated to prevent the optimizer from removing the data= structure from the executable.

But it is still being optim= ized away.

I used MSTF VS2015.

Thanks
-----=E9=82=AE=E4=BB=B6=E5= =8E=9F=E4=BB=B6-----
= =E5=8F=91=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io <devel@edk2.groups.io> =E4=BB=A3=E8=A1=A8 Michael D Kinney
=E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2020=E5=B9= =B48=E6=9C=885=E6=97=A5 23:18
=E6=94=B6=E4=BB=B6=E4=BA=BA:&= nbsp;
devel@edk2.groups.io; Tiger Liu(BJ= -RD) <TigerLiu@zhaoxin.com>; Gao, Liming= <liming.gao@intel.com>; Kinney, Michael= D <michael.d.kinney@intel.com>
=E4=B8=BB=E9=A2=98: Re: [= edk2-devel] question about MSFT compiler/link option

Hi,=

I think you are seeing the impact of compiler optimization= s.

If a global variable is never referenced after optimizin= g the code, then the global variable will be optimized away.  This typ= e of optimization is important for size constrained environment like firmwa= re.

By using the /Gw- flag, you are disabling the ability o= f the compiler to optimize away unreferenced global variables.

If you update the code in your example to guarantee the global varia= ble is always accessed for all types of builds, then I suspect you will alw= ays see the global in the map.


Thanks,

Mik= e

-----Original Message-----
Fro= m: devel@edk2.groups.io<= /a> <devel@edk2.group= s.io> On Behalf Of Tiger
Liu(BJ-RD)
Sent= : Tuesday, August 4, 2020 11:34 PM
To: devel@edk2.groups.io; Gao, Liming
<liming.gao@in= tel.com>
Subject: Re: [edk2-devel] question about MSFT= compiler/link option

Hi, Liming:
Thanks for your reply!

I checked map file, n= ot find this global data array.

I found if add= ed this build option in this PEIM's inf, then it seems
ok.[BuildOptions]
MSFT:*_*_IA32_CC_FLAGS   = ;=3D /Gw-

Thanks

= -----=E9=82=AE=E4=BB=B6=E5=8E=9F=E4=BB=B6-----
=E5=8F=91=E4= =BB=B6=E4=BA=BA: devel@= edk2.groups.io <d= evel@edk2.groups.io> =E4=BB=A3=E8=A1=A8
Liming Gao
=E5=8F=91=E9=80=81=E6=97=B6=E9=97=B4: 2020=E5=B9=B48=E6=9C=884= =E6=97=A5 23:21
=E6=94=B6=E4=BB=B6=E4=BA=BA: devel@edk2.groups.io; Tiger Liu(BJ-= RD) <TigerLiu@zhaoxin= .com>
=E4=B8=BB=E9=A2=98: Re: [edk2-devel] question ab= out MSFT compiler/link option

If this global v= ariable is used by code, it will be linked into the
final EFI= image. You can check whether the generate map file includes
= it.

-----= Original Message-----
From: devel@edk2.groups.io <devel@edk2.groups.io> On
Behalf Of Tiger
L= iu(BJ-RD)
Sent: Tuesday, August 4, 2020 5:34 PM
To: devel@edk2.groups.i= o
Subject: [edk2-devel] question about MSFT
compiler/link option

Hi, Experts:
I have a question abou= t MSFT compiler/link option.

I wrote a PEIM, w= hich had a large global data array
definition in= a C file.
Such as:
PRI_DATA_STRUCT  PdataStructTable[] =3D {
{01,=           0x75,  &n= bsp; 0xF0,     0x0,     0x0,
0x0 },
{02,           0= x77,    0xF0,     0x0,    = ; 0x0,
0x0 },
{03,         =   0x79,    0xF0,     0x0, &nbs= p;   0x0,
0x0 },
{04,       = ;    0x7B,    0xF0,    &n= bsp;0x0,     0x0,
0x0 },
{05,    &nbs= p;      0x7D,    0xF0,  &= nbsp;  0x0,     0x0,
0x0 },
{06,  &nb= sp;        0x7F,    = 0xF0,     0x0,     0x0,
0x0 },
.= .....
};

This global data array = is very large, about 20KB.

But I found the PEI= M's compiled size is about 5KB, it
seems not inc= lude this global data array in the efi binary statically.
Even the release version PEIM's size is l= arger than
debug version.

I found when compiling release = version, the link
option has :
/MERGE:.rdata=3D.data It seems release bi= nary included
the global data array in the final= efi image.

So, my question is:
Will the global data array be in linke= d into the final
efi binary image when compiling= debug version?

Thanks


=E4=BF=9D=E5=AF= =86=E5=A3=B0=E6=98=8E=EF=BC=9A
=E6=9C=AC=E9=82=AE=E4=BB=B6= =E5=90=AB=E6=9C=89=E4=BF=9D=E5=AF=86=E6=88=96=E4=B8=93=E6=9C=89=E4=BF=A1= =E6=81=AF=EF=BC=8C=E4=BB=85=E4=BE=9B=E6=8C=87=E5=AE=9A=E6=94=B6=E4=BB=B6= =E4=BA=BA=E4=BD=BF=E7=94=A8=E3=80=82=E4=B8=A5=E7=A6=81=E5=AF=B9=E6=9C=AC= =E9=82=AE=E4=BB=B6=E6=88=96=E5=85=B6=E5=86=85
= =E5=AE=B9=E5=81=9A=E4=BB=BB=E4=BD=95=E6=9C=AA=E7=BB=8F=E6=8E=88=E6=9D=83= =E7=9A=84=E6=9F=A5=E9=98=85=E3=80=81=E4=BD=BF=E7=94=A8=E3=80=81=E5=A4=8D= =E5=88=B6=E6=88=96=E8=BD=AC=E5=8F=91=E3=80=82
CONFIDENTIAL NOTE:
This email contains= confidential or legally privileged
information = and
is for the sole use = of its intended recipient. Any
unauthorized revi= ew, use, copying or forwarding of this email or the
content o= f this email is strictly prohibited.








=E4= =BF=9D=E5=AF=86=E5=A3=B0=E6=98=8E=EF=BC=9A
=E6=9C=AC=E9=82= =AE=E4=BB=B6=E5=90=AB=E6=9C=89=E4=BF=9D=E5=AF=86=E6=88=96=E4=B8=93=E6=9C= =89=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85=E4=BE=9B=E6=8C=87=E5=AE=9A=E6=94= =B6=E4=BB=B6=E4=BA=BA=E4=BD=BF=E7=94=A8=E3=80=82=E4=B8=A5=E7=A6=81=E5=AF= =B9=E6=9C=AC=E9=82=AE=E4=BB=B6=E6=88=96=E5=85=B6=E5=86=85=E5=AE=B9
=E5=81=9A=E4=BB=BB=E4=BD=95=E6=9C=AA=E7=BB=8F=E6=8E=88=E6=9D=83=E7= =9A=84=E6=9F=A5=E9=98=85=E3=80=81=E4=BD=BF=E7=94=A8=E3=80=81=E5=A4=8D=E5= =88=B6=E6=88=96=E8=BD=AC=E5=8F=91=E3=80=82
CONFIDENTIAL NOTE= :
This email contains confidential or legally privileged info= rmation and
is for the sole use of its intended recipient. An= y unauthorized
review, use, copying or forwarding of this ema= il or the content of
this email is strictly prohibited.








=E4=BF= =9D=E5=AF=86=E5=A3=B0=E6=98=8E=EF=BC=9A
=E6=9C=AC=E9=82=AE=E4=BB=B6=E5=90=AB=E6=9C=89=E4=BF=9D=E5= = =AF=86=E6=88=96=E4=B8=93=E6=9C=89=E4=BF=A1=E6=81=AF=EF=BC=8C=E4=BB=85=E4= =BE=9B=E6=8C=87=E5=AE=9A=E6=94=B6=E4=BB=B6=E4=BA=BA=E4=BD=BF=E7=94=A8=E3= =80=82=E4=B8=A5=E7=A6=81=E5=AF=B9=E6=9C=AC=E9=82=AE=E4=BB=B6=E6=88=96=E5= =85=B6=E5=86=85=E5=AE=B9=E5=81=9A=E4=BB=BB=E4=BD=95=E6=9C=AA=E7=BB=8F=E6= =8E=88=E6=9D=83=E7=9A=84=E6=9F=A5=E9=98=85=E3=80=81=E4=BD=BF=E7=94=A8=E3= =80=81=E5=A4=8D=E5=88=B6=E6=88=96=E8=BD=AC=E5=8F=91=E3=80=82
CONFIDENTIAL NOTE:
This email contains confidential or l= egally privileged information and is for the sole use of its intended recip= ient. Any unauthorized review, use, copying or forwarding of this email or = the content of this email is strictly prohibited.


--Apple-Mail=_AB299631-7162-4DAD-BA39-839D24F22A23--