From e56468c072e0d53834787f4ad0e292b33cc6be08 Mon Sep 17 00:00:00 2001 From: qhuang8 Date: Mon, 6 Sep 2010 01:58:00 +0000 Subject: [PATCH] Sync EDKII BaseTools to BaseTools project r2042. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10850 6f19259b-4bc3-4df7-8a09-765794883524 --- BaseTools/Bin/Win32/BPDG.exe | Bin 0 -> 577452 bytes BaseTools/Bin/Win32/BootSectImage.exe | Bin 393216 -> 393216 bytes BaseTools/Bin/Win32/EfiLdrImage.exe | Bin 421888 -> 421888 bytes BaseTools/Bin/Win32/EfiRom.exe | Bin 446464 -> 446464 bytes BaseTools/Bin/Win32/Fpd2Dsc.exe | Bin 1434119 -> 1434295 bytes BaseTools/Bin/Win32/GenBootSector.exe | Bin 425984 -> 425984 bytes BaseTools/Bin/Win32/GenCrc32.exe | Bin 425984 -> 425984 bytes BaseTools/Bin/Win32/GenDepex.exe | Bin 615750 -> 615750 bytes BaseTools/Bin/Win32/GenFds.exe | Bin 1474967 -> 1556029 bytes BaseTools/Bin/Win32/GenFfs.exe | Bin 430080 -> 430080 bytes BaseTools/Bin/Win32/GenFv.exe | Bin 479232 -> 479232 bytes BaseTools/Bin/Win32/GenFw.exe | Bin 495616 -> 495616 bytes BaseTools/Bin/Win32/GenPage.exe | Bin 421888 -> 421888 bytes BaseTools/Bin/Win32/GenPatchPcdTable.exe | Bin 609747 -> 609747 bytes BaseTools/Bin/Win32/GenSec.exe | Bin 446464 -> 446464 bytes BaseTools/Bin/Win32/GenVtf.exe | Bin 446464 -> 446464 bytes BaseTools/Bin/Win32/LzmaCompress.exe | Bin 397312 -> 397312 bytes BaseTools/Bin/Win32/MigrationMsa2Inf.exe | Bin 1379556 -> 1379732 bytes BaseTools/Bin/Win32/Spd2Dec.exe | Bin 1389784 -> 1389784 bytes BaseTools/Bin/Win32/Split.exe | Bin 425984 -> 425984 bytes BaseTools/Bin/Win32/TargetTool.exe | Bin 582580 -> 582756 bytes BaseTools/Bin/Win32/TianoCompress.exe | Bin 434176 -> 434176 bytes BaseTools/Bin/Win32/Trim.exe | Bin 678782 -> 678782 bytes BaseTools/Bin/Win32/VfrCompile.exe | Bin 1187840 -> 1187840 bytes BaseTools/Bin/Win32/VolInfo.exe | Bin 471040 -> 471040 bytes BaseTools/Bin/Win32/build.exe | Bin 2617426 -> 2635681 bytes BaseTools/BinWrappers/PosixLike/BPDG | 1 + BaseTools/Conf/build_rule.template | 24 +- BaseTools/Conf/target.template | 4 - BaseTools/Conf/tools_def.template | 19 +- BaseTools/Source/C/Makefiles/header.makefile | 111 ++++--- BaseTools/Source/Python/AutoGen/AutoGen.py | 159 +++++++++- BaseTools/Source/Python/AutoGen/GenC.py | 20 +- BaseTools/Source/Python/Common/DataType.py | 3 + BaseTools/Source/Python/Common/Misc.py | 2 +- BaseTools/Source/Python/Common/String.py | 44 +++ BaseTools/Source/Python/Common/VpdInfoFile.py | 259 ++++++++++++++++ .../Python/CommonDataClass/DataClass.py | 30 +- BaseTools/Source/Python/Ecc/Check.py | 292 +++++++++++------- BaseTools/Source/Python/Ecc/Configuration.py | 63 ++-- BaseTools/Source/Python/Ecc/Database.py | 109 +++---- BaseTools/Source/Python/Ecc/Ecc.py | 4 +- BaseTools/Source/Python/Ecc/EccGlobalData.py | 2 + BaseTools/Source/Python/Ecc/EccToolError.py | 2 + BaseTools/Source/Python/Ecc/MetaDataParser.py | 21 +- BaseTools/Source/Python/Ecc/c.py | 48 ++- BaseTools/Source/Python/Ecc/config.ini | 15 +- BaseTools/Source/Python/GNUmakefile | 2 +- BaseTools/Source/Python/GenFds/FdfParser.py | 2 +- .../Source/Python/GenFds/FfsInfStatement.py | 4 +- BaseTools/Source/Python/GenFds/GenFds.py | 1 + BaseTools/Source/Python/Makefile | 8 +- .../Python/Workspace/BuildClassObject.py | 10 +- .../Source/Python/Workspace/MetaFileParser.py | 78 ++++- .../Python/Workspace/WorkspaceDatabase.py | 73 ++++- BaseTools/Source/Python/build/BuildReport.py | 98 +++++- BaseTools/Source/Python/build/build.py | 7 +- 57 files changed, 1148 insertions(+), 367 deletions(-) create mode 100644 BaseTools/Bin/Win32/BPDG.exe create mode 120000 BaseTools/BinWrappers/PosixLike/BPDG create mode 100644 BaseTools/Source/Python/Common/VpdInfoFile.py diff --git a/BaseTools/Bin/Win32/BPDG.exe b/BaseTools/Bin/Win32/BPDG.exe new file mode 100644 index 0000000000000000000000000000000000000000..d0b2c95c304c97e5fcdba30f66921b74823525c8 GIT binary patch literal 577452 zcmeFa3w)eao&Wz#lD0{&Y3UUTotBoS(1u>2U<*yt^a5=fCaHzeI!rQ?blPMlnP);< zq$^sg#)_h{F5d0pDqhwrD&DK$BD=VYuI_qUMMbv=x~w9Lire4&^F7a*nWRw9hl2=iD#f@ArJq_nhZE+jiX^R0ly&!*%LZ5ZueJ{?^(3kKb;=d*Yl=PYmv< z`|8|#V_UyEw_|TMjQ1DvJ%vd8d~cM4|6kr4iHTi`F~IU+gf19&`*v$F>`3oGsjwLmwk6=@Y!R*vZs#)YhOp-9%x>B8$X5X zKQ9h@pk{t8Kg+&8)G@#2WX*&iIPy%ac+=4n#fg#EsfRyvioc<69V3}N&kQ}W=Swxg z+B-<1_@x6^t$l;QJ;Qx(UkmS@C|OhTgDWls+k$>W{lT^{?$<9(6WsfQnb z^V&BO`0=krx!$Y74Q(KNKjDu)J?YjPDa6TY3j0_uh+yNC<_Qb4HA-{o(G!zyO_aS) zJ^a{}?nwpsl%=_qG-nh3u?6LD<=m>|GY+5IK0%D&w$Coq5AE50M zo~SuFIEDsndBy^^JVQz9j|cH}YSWr^>s0#jx3xUQPwl;dd#*Y8bxM7_o+oO5-CgyB zJ~r*zYk2(nq@%}3=*Vv$DbBF~s@QRP9b30_sAm4jR}#~OJ@VTV#dAl7X;YXqVQwp4 z5S+Z)0xS8U`jc;m%a1(zP0qT|b z7)w(ndhCVe2KqwOK1ZIYrQT}cQ`6cAbMh`iz3~7TKRV?{10f@sQf=-+)&ZTg0j2}-{bdN zq~}qCS1Zk9R51Vad$@Gy=n4Fed`|bEc{~h{8!82 zAEy6Zi`3E$k_tRNst*2e)WP>t;6K_tM?R+@!69|;vr0Z!PJY0WH+nq1cN&%vxTzd? z!~bkqI+Xm6o-H-aPiSb0co65~ce~29Jay#oQ?4OzRp@)lp+8AzaS}pH^m!NFYM{U2 z_ZUKq2D&Fo<4K+?$p0xLe}ypeKXUjI3soFa|AtGsl*3OghbJp@c;Z;g zlNC8UX*noFl*1D)hbNW8fBvpi;iu@#kMaiGAk}HIj zoH!MpC(TotM%6+HO*px}l-uJA|0o$gU<^Qkf@6jvp*IsrZ|eS$6O;J=#gjE(e57Wm z3}0aLM$KU{|2DnaPxFm*qE(&}}rWjx~s)qK<*kAK5{hFYFI z{yp#S+QJC`MCA4?F;2eXx2I0gm~{-3>j(O=2+~=7i(iLlREp--^jP{vps}#e~9<*{!ZW9ei;kWcy03WF(9_X)e`@O6-_ObmFj#Aw|k%DrY<}A`YL9JvuWPXJgQ*u=g{u?wU7U6)KF#pXXgvsU;4yDggG`r zWk330vG%siQ`f&Jx#zwITJCJ(@AxewdfVWg545~hj}NrGQ$Is3_a46$j|W=brN^|{ybN#S$J#qZi=6a8Ny#M&^JPx&d<@g=;`_S<_?f2p1Z?)fVO#0-gcY?Zy zTD~>3l6G25J6Rjn(4$8;Fmg^h`T_}_n)z!e`^h&@UG?>(Td%|Q*`WuHS)fm8zV@s4 zKhRur;@owvjUQ;PedjDVU>%ixpjwfSP1_*c+yD-Snx`IL8mDaSGmlMMDbPIocpLsh z?ePbimy+?Rq2|TMrmey2_-YHd+B$HkdF9a4L*JVF74+;`C+5dv57soj^41GC6XB{u z|88wKbaXFI)@nmXrR-W$4IS+lRQn7aEecxO96cy#&2#i-LDxdJL@jh{xrJVN+fn6W z^fcev=^1$7=&8Z=%f1eGoF~1ni&iN$B)+ue$)rZC`-aX{x8K%WbJq>_TYJ|n`i)3n z=$VtN33l1HhJHKvk;gxBQf=;;mEUWIeh4?O)pWQ}|I)|wd!#N{qTk0KTl7Wn&?7?+ z9jiUIuIAJu;t!j@9BY{hLDnB@sTW-$g!n=3n(ASi@sShjBx8O-e^fsIBhM#4#jR9= zQw!Rt@a?zbW`Cy^bc}f3JmUH05zkvkJl`!y}&W8S#AYh-Yb%mFa1as(ikG#Pe51JU=wz`5PmiH4s*& z_vnb{llBbzooYL8oufgpqsIUFyYd;9>bhZ1!QC3cM*R6W{&$4;|9kvj)B@?=-o2?@ zx;GO<=GvZ2F^*$AaxKF+rd`={Q?lh2Gd-C?Wt3d1FB8vq$J-7S_vSJ6ZrvJGdPmM- zv5?L6#Jlqag@`LsKo0g>3Li!#up}`XV=^A>&BVh)VbGr{?)Ay0x&{Wb1#@pSckj_v z$fSxHUy_O}(**A-<_m{h#y)&D7iJ1ndYG^5)#MnZTq@fiOuIWv5r@|!O1I=QEXkX) z{n@_$d_gwgsO8;ryyO#AJP3o56K!4&ub!&#A^EVF%5~9`2a_8MnaoX@WHOt}7L&<< zpvf*Q??Et_OLbDxVm{uR?@}`2dixLL5(G=OZdt#nxq0V`~3E!otuIk9Bhmex%; zQ{MwCmM6o#sX`{*Uo0%SBFx^DiLYH7*KfYNfiTII&B^x7O^KEbi-HB=e$VHsE%m!tEj4 zZpZBp{XL1_vs~j7K`@i6fomO?|GNR)&vgse?OgBT`Y_kMT=#Q5%=Im`^)h8A-rPHG7rXYAr&~h+aY%AouGPWr6pO1Yb3@K_Whklq9}AM%d}k26D3;9UBF9@}isDk3 zR+Z|MRGnRgaEszBt?KUX9Srv>{$*9&{ft4yZt#^=-H1sh8dZI%Uc{mNZ?6ioJ-Jk` z@LQ@FJi7W13BNA}m=iBvsW2!f)TeBMB!Qc+>Mw73PbW)Fo-JlvfNGv8 zWR#}pG>CaO(@i$#ak6z^t^JO?u5L-RwrpLoyb-ko-(V_X{%^0o@W!q}(WTfxdVj8~ z-|Dw~l`p%>|EK=iuCA_`YJuLJIkGa@F=y3}&k6!v<8kfE_a90YGChs`hq^xY%L!wz zy?f~fV-v-|bRVqa3ctk-;@-tQ7No0!{js38D%e#W#M0G4x+X}E3euy4^q8P$RIsZi zfDd=!GBrro2Diq7U1NfDU2rRowZWm|Yq?wlZYZF;N) z8y958C|Cwi7aUPGNX+T+9^J;}hNAYE^u-twMo_bGNiD@ac^FG@4T zz_cKJmVxOiVta$u(8CXK+nnj`&lIFNvBBZSY&sKX1wWGuvz^)AZ1Iq(IsMtL{k@rs zyV~rxaqL*z5P{;H&-EUP4~CiU!Cs}1N~hy4Y&;z7ml|l%qXf}bB>KX5I@6uap~Yl# zW1AP7@-5BT>v^QwtuzZue7LS&={sTL*sP{z4Omu!BFim7v)nsKvdH>g;4&_#8<8H=; z6AOy5U|(&JuMc9yD$xl}FN+1a7|+$g&Gy_Mc~(_;;!~_q5^HWIS`h533-S|*Gdkdz zG-65t_x1*5-5M_8?y1(#STtS9rD;dC9t{>hkS*?wM~xNECkDcqMv$7=J(x2P#`^|C z+q}|+$du09z@nnc!c8rSE*T`t4Xb8W3!CICiZy(^;zS(Cibg|b!wlCG=3aB>edhTVj&WSoKN_inEger0nGsaLxrE+fML4*xC!xCpf&XmR9UZtsK&@BnapJlB$GykehS#20>Ek1t2eaT zcBW98M&ZD$v6wM0`s8_5n!%x>`x}*-7(?B2R@D?pj5<&^^?#RILsTw0u55IcBVoMnt1@B4lap6!aMvr==H1o7;hNyk1all4 z93Bwq^Jg|b{nLM%Xz(e9yJ6T5-qbkH%l)!}G@aSOYzy&d%zywQxc(~&n zyEZqD0qOm?GYF*Ofo z@YI#cEiC#`X90tUF<=;l414oMg={5c%E`ufac>HbyE96uMtq-TCG@{u{mG<>6? zWHL@R(XKzo5a|Y^O9`GPKN)vI(iPFfFvKd#NGAIV`3Ub#g{fk(keH3TE92&trnZjj z+FFdz6B@ouq(o#c+Y3>pwN#eJShIZ(S= zNn@+(aTy<*607EEqKR*Z>Z|HvV`7u5Oo*%B#o(K`LXF*`U%SI(ua1?3g*Y;yVZ1>x z5~7X7g?i+AZsUm?{3K-{qGa-V;(1x8#3fYJ#>V7x#N<{G7|#tOhY@w)F*cajny72n zFx~^LBNdJD9IN-&1hL%xNQ4uXMoq9`&&S2!_=;_jpD@NdoH(HMtAbguEq#V)L;xT* z^Dq_<-A=4ZwiM*KVNbW%8D>HURT>DNf!7E8kKvX@BQ>VYU+kVe6OYfIhXZn{P719` zFji^6f77LkSakEnF>=^Ba5WxR2Rp_2CgPLh5FMt~Qs--NYi|%Igm0mt5}D#)As0`@ zdzrpTy%W!wSur%_B^B?<-k8Zb{zScu^Jgk%E|W=z(kxLJ(-y0&J$4>~lQR)dW9yA) zi(y>SU$(4#{6NN%apEDw2#KazaOF_6GT)0|jEfrM@tql`A00^b?vJPQ2XdB%!n@gJ zJdp|Wy@RGwZ7-zJo0Ty`MHgdDPIkxPX;akBCWb{k*k~Z zW0$f-4YD#JI2Rg#g!7?~A!nzA6Cas)DLm zKRnNDgQ4Az=|qc(OC=m&S_DkBQX&36L;#PI z1+yaNkLEHYL0T0-O-$f~#~FfJ5^I#cg;=8;Z2&TjK9T7`3>feDxh69d+3_2lTE!&q zCE;WmMs9J9$?#DjmFvm0hKq3CpE(p~q-Xw_>P5>vsWO^-VXAj98dpU<6|+K@SK&}XV_I>FJhQnQF~?`pvMErt!Xc-Y ziaz0DR(TQ{1ZfOcCCiA6pF8~}#5-^03eV#fRE>|F2StsKP3K=NXmo65bRS#R%axtc z7~_=2nKH3B1+YXc)j|JsC;$>N;t>f!ENFUXJ#xFeW@nMATz6ier9VlJVFq`9g`1M z!%-%UHIExDQ=v2`G)EZ?u^yVyFtQ$E5aj<@nFV`Hknb9AE)#;x#2_;%=rK0lRd0@y zgUl2k>@0Jc8f2z<7fgT7)Hp*rrL2pXDQ5-g@s{J+L3)CLbG)T-wzo8%>n)AvnJIIQ zOqugAWyWomi0t4mGgmf8WCu#=u6aQ&&P1=|2FT2b{1t@On&&N(=X=ZKd^4U-vr;Wk z2_q}z92%c>fJ_04d&#coD8fWI9cYHZ*0Pb~!caoHJ<$>^{7OmclcCCHk%VT2teOy~ zUUKRs)j^kN-CrVEv&A4WJ%8d9nRpcHV3~wX9FMe64JW9g2C^h})m#yCs<(S-)>S#T zP+`O(miq$0UYj%=oGHP*VNbnR4NO3<8JH04Gz}XbXJ)KIxiTpk8(qT803$ki*r1c? z&GbFLLMtKcC}Q!*@-bQ}4QysAj9Rxe6V=i?zHz5|R zVB8QJxTrP?tAJ6so5#9|N+YrAq{qr=^0IRJ^Uj#QF)%!FcwCU1=0o^YnS$fa42TXP zm%|uE7#dv}Ffx-PWzr}+E;z#Ut`zX*@xe?vj}O)iM8%nC#nB{;>Q17%Q+#HORaS*^ zrI_eD7Z(>JiJIy=F^fByxJM8!QzES}YO}MVb~s~M2}4;actu+wn(V1K)oOtEs9=_w zxVluZX(Q6CtQI{`oUT-9m;AelLX)3mv*0(mhZ$DkaxG`N#B!5L$*{IKTz^A!2d z(pbL9E1E~GF|q;9cGa!u=5r#Kh(uPLESCLK0av@eyb+>3Op z@5LyYGGqP0WJqp?l2YL!ioF?|22@w-K+hB2+Zh`^>5J&SOFS^VH(gPnz&UOvR7irkaI^IAc|rDklP53~^&jgExW)NVfCZ-okUS%W z3!(rEPYV!<&jzJiDNl-vtUM2lERSqflY*Nk$ryFGKH#0+s9!eh*=thU6Z){O{R7Q% zVMMX@W$`HjEBAYeP%7AF;Af+DmO~u;N{qs6*mJfO%V&<0$<|58)}GNjy?njM>XaB+ zC$*58a3XEI*cw7@%N)lyojjJ5JfbFRJgvztw&a^!JdIX#n(NKV(W)%mN`34&7H&26 zis){srS@%~#E8I%X|cC8m#_8V$(2J-Nn{Uab_95SuTQk-d!UrWl!_$Etv?w-0{3gU znjEYt^=9R0;8VDHifj5QG`&XPlKb#9)Fs7bGKx|$)IKy|oOY(ATcI`tt+sq3HAWgo zJC~Vw-7HDvV1Z7GpmZ5GPcnrjiH_yX)V=uwnSvRjY$n5^b*8||m*xt#PVoE`AB&bf zIM{!g%A$e=F?awhi;-=Q? zY#kWg+-0(1dq>mOt(F0PNnvTsCI60=ZEahdI$EqlGunWIhR9sfYG*XyXK$89R6)Z@ zGyA$V?QKohCZjku$F=Cm?X4}=er(E&e9cKURD>O^9b2~A)K>xAlVZ2;Sl`yvL5sH< zHEwH4TvzZ2QdLA(%~(%bvsG5STP73 zJ!w*2N^wW)7Ilpot_b2ErJ*-txq(yHgC4VUA1Fdn-#g4rroqXah)aKyxAwO zTJltxQuAh)lGt`rV*8G^M9W4isDDVdT)U;cqkV+=tU)AYdCCxH{SuM885_(e)0Zt8 zNQ$6EmBZ;-)AW(#tWd+L*;=!bnAQ0Ce(QtOjb_!bOv3$H=ZHC1LH1_NxyaU9E4zR* zD_dz5{18SdwV-egU5r1wJ%{<9nbR*&-18*FSlKeegx$vk<1rMCV+HK&s)@|49ImgP zi0}AdEGuF%>*3FuvwrIcBX@C zij~)uL?xd|t~0Akd9e;epF^$$D-qARFx4?i;2hrw`#yN*HSL!%RaC_;_IfY9mHknaD1d>P?-q< z0*jQ~lz8BJCV~XeBvM+43xJ+AEP%Pn$rla@>y{B{gPpF45K-oBBeS{z3nG6ul7;hx z&N%cT)=Q(Fae6{rX#7;#2;?jvFk-fk4U>K}aEmfxs@9fGlJDyGi0w_*Bdj(#*Jk#> zx3_c{2b#?|ZG5_Z%cjUDv68sX3VEr}D&4dil(!V`Fg~&X5%s&!#1!4|GsAcfOBFUum)sb1 z!}n@Gh|A4!o)*TD+;ZgFxf4TSjd+mlCKQA}daA7WvGTFt&^} zp)f8um{HL;?Ac=`nejn>0U5B6P35a>3604s5hW<(OgTvd>!qHwz=6HyW-~HHZ9_x_ zP;jfr400Zr7u%`e5)vbV+k~6=X8b^T*1Fw`X|HxUZP;_Q^@x?*<*q_0877Q$XlJ6$+x22r&JvFg z=CT^?6Cz>@ne5x2?98%XzCUpdZVjUF1n*n8#Rk(1S?4n)gx`wMR~)KXVg=(yGizq; z-f#DuNgK}M3N0srD89zqF7wr)PtT8yw-NW7T;VQm0gDY{>=ijqXq{EXe-2oQ+USSThDoh>pJ^SwM%FO8p6rK~-&f=K z0CKe5A)>=las%sO)Af0J<}<- z>~ex0omRKrXwk^O&pwI3%COUC_e%*W>F>0xTTUWIXq|4~; z@li)kqywE=WRh8Gw@BT(>Xk_5L-pzyM$P@!RXcMt5NF69#2E{r{E6M16st0!U5(H- zgO^12$Ag0(bp7>iYjdZwlq9p3hv?OsU|^H=qIxS5*iIEG3+yNW0;nvo>2@cuooW(2 zI9spg`4s}&B`1M>0)ZVR<}@QOuyMo#fvp;%6P;c|$SM!LAe^+52yu_OE{ZL}JGf9n z1gVAq+puSv1`0?GDLZSt`&~1znuR4o?xii+oa7p8Gz~^_W(gBxAo6drglwqVu&39S z7m#w67Q8W4f}83I&LuCIs3;PG8{lkeNJjo6D5IO$zPA%z)a zI`Gn1jB6($7<(~EqKakNi%(0qafXFEOlHQFENoyrGqsf!H}avSvy*}&l%71z9n+O_ zmkX;J^-+2xW?M!l+m=ymp7NZcs54{+<^MRf1^+L?#?Ax71LbKqx!r2(U`}xpS2|wQ zYFE~zJoGB9fKC5)-(vU92Ce3rcuy4ysYABw$GwQ-7JEmG15()zmIs2wPQ|X~#(Sm4 zrhTb{k^Hwri-T-QHV>3VHXo%1dy5J2oiiQ4IvUQn<=HvG%D+8e#Oc!ui8ebQvB6RW zDCV`5EFptYgLtw$mLzg|+^sMQn9KBFnJEt+i9Pa>_>grXG_{cNrC%A#wUZa7_B)Yd zf%XpO_FL`P6=(_WWy49PU<=*PPt;sX>MJB_B&B$H2l+qIMwQW}aYdp=V@u_@qMeZS zRc!KLT$zD@(q<3tJk4S3al&aP>6qB6n#oM@Y;d%VT-~CpnJXONhBQK4&4NUZ1SWAH zWdy$|lcM9u8tRlMnc5+>>XNA)X<~bmB7(QoZQGk>U>i{-gBbmlZy_V=^RS-IKBQerReWDQ@iB^RKV55K( zQ|7g-GJ*zfFp(wwnYe7pR9q7frj)ylU@HmZ+|>0N+DGK649ZC|X0<6@-F8xt@%b0q zB$J(F`2mkkOUaesbET~EA1%St!n&GD3#MsI(s~{D)+$M0jV@HD*KM6OA*^6DW=MV^T4ao>DA+=qPrCtm;-5QlXdmBTa9MQ&+A~$Zo!Y12v}Te zfgnh0vIJgsQR(dr92p~QJjTf}vS@+u;~}=m!9ct^mXlq9-iSOVn1_{#5zIDx z*u;g!Ii?~CgtH|Xvo-WdvRA0Z$sZI)2}Ml+RRnjtinZ~-TnQEbF>@%D-BKa-F)lrt zga@axBBL}RwrO!G{L~qTrvwLY*9NeX8)S@77%EgEf*qCNC?@H16%VDabI}Z|f9od+d^%&Ezy8 zOGuQuO>){U?+h^rJdF1nx0g)MdPvH~yX9K5=F8Y@Zr(=YEzsuJ>`XL?j1o-f)~}n4 zA*NoqjbUr#Cew0ReA}4H?q!xk%pC4uq~%Kt~YQmO3Uj%0}<0gpk4LOzs-O2x9B9xKQ1j)Ca zIkpCBmWAOrV>w*Kb?7ecnLT`w6VF*B7~7ecub3n%FH5Q$|5oC0He)SgV+Nmc$Ri%}BfB|B3b$#_&RgU%~(d_e#f{A z!kmaH9~KRxAs1;XYSO{^65UJ_kBH2snV=Z{oc-tbAxk6s{D1e6XGY zq+9}4$0e1S42~{on|e(+ORhmE`)`;p6b>!s;1<0e!KQKcYKM9!)?QwYR&m4lvZYJy zjg)k}r;s1)51|oy#^mMe)p%-7?dJ>Lii02cUqS?q~v(DD-tZ%xN?8HR*%;skGEHBU|;_{fJoA@cw zp_|4cYkIesZBe3iZPHB0V&gc{dP}2HLIyrJ4b{Xfp@~7_)!eLNe*UW7EA4u=(L+n| ziPtEwsKRx;TCmK+hMvR1;IN&|8tIH!M>B;RTXi-ZjTNejeaxe$Ag-sdgje_a@#og9 zsJp0cRo$4neQwY5)T;BU>PFX1D(`Uq=eN9V%{RurrEM{l)HRiaoAZ5r`P{`V>HS;t zJsfc5w>f{m@7q^PMA@GLuHy=S4=vD32nbACSU)4ou3i%va(A1ZU6^W}h@dcRg02ZV z(8P2KLQSyCHaTlUGaH;S=CHXLD^6{&3kyqKu!{-F*nq9f>_XPj2IGTWsP7YkU1+fr z19mfW#=$ODsp^AW=t+}F_8tj@DX#4c^AUh+-K>Rbchgi~>UCfzLL1wfapCvk zjt?`_9^>A3mOZk^nFL9}`OXW{X9v5^57OrZyV%-1JJ`jh=5vEx7X<0^f?W#(UO!4L zQZuLL*p}yuf^i<_6h| zgI!C5^!b(udv4|%SRSMo7+4XcFEFq&NG~+7D#%nwZ z58d|ZYWdgbCgx@s;3iR))j)_$=Vr1=Oqvy4v6+vX7$dt}H!jE4#eBXuna*?$_L%g! zenCSjtt!OM- zy7F2pPS~?399xIa!D1n`C=B%$$?){z&nNm)qW`JF97q*%SWQaVhmwvy(&c1#T7ZQX z;Ph%)i(ekM7Xa1F)WvKd>Phu$GgtT?ZbdrFMqZ8b6-Ez+Uv#Dsj%ZC#1p_)nq!(8A zl9)^;7=x-13v28F>vI*RVIE>Z6{2B{)Cr7Ctm`w8()LGNw4bgWW4wQAixzsL$ho3S zs7P*wkf|T5gT#!sl4UuR{FI|DRYKJ^qBXg#E~S8||6xxkVs(`dZ5Nu&JdztkhfYG; zsMVXfG1F`0wxMPHj!ntS9EBB9U75~Q*M1x8towP%nzaaAl&zM%i<(!t^tL&=?TEIB zSrK~kJ@!t!<+8PuOBB>{X%Sg%V7;wGGlKR2fR$K~Zezv0K=J zD=#LrW_$J)dk=N6e`U8jJg)C8bH1TH2_{MrNZTDcPu>Wwlvhta=>i)SY(?Uq0>O zg)NEo+uK`g=bsJWf0oLr@z4i5^P!z%M2H1NZ)obl zSx@IfwY-06dNQ4aa6Dq8=&neN#L9be2+15Z@J z8pcaijHVGE)xk$ZDDe??7{~~{csjbaov47B%{`$!tF$niwsSK`<5Lq%zf=KbY@n}L z`Jk`Rs9`Ty1438vq~x>e!7@fk$tR&`;elvGEHPlHzD1~7doD;j%?Wz5H^7|Ir{*2T zh@uqt*1kp%i?XvR(dyQar7W^Op#EU@n0pVn6C&2@xbA&5@df+r;k%tqPLAZfd4Je% zC$AQ>?9AzI8ApH`xqLcJp)G@0-W`QOx0F#n4$O=rDyU|-?tpZ{uhK2&awjb5_xBBeZe2fKS;o2Gu75XPGmeD{P z#_GXc>LYcAQZP37Eg&MGh+v`P8b`2@40Kc$=LA>;g|S%yesBxXAf9J2Tqh;E5OQp1SbM0iPO zaC1F*+Gt^^II7m{vd5^)%YM1+XuZ01`_5KJNtRU7Q;{23Dr5Mepcp4+@=QJz#O=m8 z3sfm?RWu{p#C(vOgxVZWeQ%+gwVA_aQ44WOh)j)gZK9P(Wy8w%LjP=pY)z;g!0#dd za4|O>$Ri5Y7&NhJqS3Rb=1PjL$Kcha@RCcCB}UC30+fV0QcZRrG#F?Doz_Wc#JQsm z^X37vFdIsYs-s;%z-NkRbgqbQnMPqfJxQXTDWbi@B4Z452qHS8xxy0BWnv_#!L`-S zo++Oa!@8=|B5Lq7Bd!=1Eu%-Pnj)$8BJaufZMGAU3#Nl;u~zC{SWIi%aXoHn9B6424UF+qN& zi8V9;ob2!v2qYTl9dUW;fyT^=Wz>TRDm_>)i$q())w=V_d-+WR`ZR88X}n=UdQoG1 zN0`w`Mp{yj+;xryE7Xl{1XAsiu)2|l8$LBTN?eM&(U038sbSN)&1qX2iT^B(t=?>p zi1nvnXT22fn!%b82S@u;GaHYp298IMNCG?ZSMxaXlT2d6d`ovX$AEH%j8(K;c0>Pz zy09v+DXPGKfW5v5w7-$XPMOJMSh3G1U_!dcpRbf^6q-5GgChOqS2()jIxSsosLNXU zE`V!gX99*Q?O-kh9=2B}@Ju^2h1NMlJJie~Zd7dBe%zoLX}%)^+9pXYNmfY1Gp1;} zZej?Ca=;4dXQn|ju*7t*)9$XbJ=TMklBCa%!!O5KbD znuH|1+~S0UD7<6(S~WQNXB0u=3YXRI$SIVCQs)^?u9_s_Q*pQ5F&rqy!NbX9gYmIU z56-%&I=lBA)I>UCH!aP~XQsQr+UZ&DBj!WQE$8>J2l-lBSi}qNSaPmRO{4n{->{1M~J4M;Nup zZL@Ay>86>n?Q4yCN3#-o2iFQN|DO{>!z{;|s@Nvg`55lUauU%W`Byc%dRFy{>PfL_ zT$Ai7g&sY+cKocmiBrz6n=*4AcIUI}>gqU6qpqIgnXj&n4%1Cs|Ef!0JLOK%+R5{hip>_hS>e1 zf{vZJeh#g0d(G4CWI}ASWPoj!Jh07@4YpZwnqwB~xLK&@nuU6vEYzI0A=|Vwv644s z#mY)$D1o!GVm)?N)@j;M!4Vi7x`DNoAegMD>puq9TQQ(hNLT$?b_R#T7>qGX&oZ<0 zA~PyumL|%DmcqF~27|OqSg?6Py3ri5Jzs2KzRcb-KQFaM zEYQmgEDX}i4KxJl+^F;_i@r#wjifIze4$nGQo|U|X{6PLFETqkhU)w%P3uv6e#z;yz< z0M`rb2J8`d5g;jW10W^P3Fs0?12O_CYPUcSV6Om2@}&0(sLcBXdI5a`IY3^ZA21+L z0C22427POjB9DV|7r4=b0|EzeIpo1j9=urKX1opy`~~189^4}EQe0l+r00k0EyJ>U%jcL4rU;EjO461WraCV@8t-Xic; zz}p1g4tR$L?-V$W%U=uJ1$dXh-vHh%@E*Y30;6q2L(Qa*M~j$ zhzB3_;9~;!5a#0^e8PiI3fzm=rvyF?_>A}Ztib1R`Md{T5IBL$7d`lr2lolwkJpz4 z{tobf2VW6T?hgux1&s3l9`Fxx5qQXZeN{kx`j6h_pFDV2;A?n&-GhJj;2Q$p#Oq%? z_*d`sEdeF?Z4bU9@LgQKC-858?+g3@@QA<<0YCEK#~wWD!B0H+sldMz_@oDqdGIrV z$MJeX;OBr}c<>(r%Hl~6{?mhB3j7MMr#$$z2Tu$97hcbJm*04o-+J&n@Aa$)zxUw3 z1x^t?hyh};s&thH)dDrRjPhW#z!+R=J*X2Hi_16<#tTfqWuga@1nO~_?7fKd#aw}Tc%3gWAFx2+0>DBK8a!Ae za3Nk72`mOI@u1Oziv^bAwM;{{aGAj6fENg?0j%}l z3V|zeS?58M2kQlz@!H@)i@-))HVJG7Z1LbKfva)Z>cKXFR$R6Vv;nU1AR*9>ONYP? zzzYRbjGY3i*R>v8C$I~z>%Gfv@3O~(7kQBM;0A#du{u5I@*pjc!K>SY9)Z2MWCc`= zeID!==*6YagPixud(bbSG7p#wpx|9X4~iZP3fxG72LuiR4ta2s_j<7hHwzpl%wGt+ z1aON7FBNzhE=N4LRp2NtFZbXT0ZUR*xq!KVd2gUe?< z_?*D!aruG=Cj`ET%a;W11KjVymj(U~mj^ufiok=o{JjVNAn*__U-jT01tbdoN#J3? z*F5;T_xfjnZ{YP!@AWSN|BB1Eyvw%*zJtqmJ@}pn|0eK#ynf)pBLY9f^D7UY^5EA3PviAp9y}xP z8(e-X@H@b>9{k>e{}wofS5Os!n1BZHDi5kXs1X=d#R8uPV+3k(sq<8s!AyZ!c%ALRIRZ*~wg=~WaGnQq1XR?xcbV(K zJc0A^n(x5^4=xZ`h*yKaBEW?nTqLj-aJ#_k@Or(#8vu6*{3YOx-s`VCxYL6-dGKZd#d?beZ}s49 z9=u&Z3BJRFcM2%e;~xCA2X}e!E)V`jK+)grUEU*bH!kn>;C&vvU*H3H{jGQTpumT4 z`LG8c@!+EZAH(Y&4?ZsN30ywu!Mz@Q%7agP@EH$2EATmDecppFcyL1Ci+FuW;6A|p z9(-Bg?{IlQ;46R!J@|Wpf57D-55DTX{!u`&{>g)fJ@}fy*YWyifo}l5>A}Bv@UH^j z!t2`t-vNBrgYS9pZvx-P>jxe@BJe|8e&k(#>|Gue_z7M=_2AzFFp8`fF=k}321`wYY(3G;J*Z(A=Ym^_^p6q{mz4DJ@~!A ze-rqW2SGJ1v1-Oa52`(=@nDp|Xu^!~pjMy`m$3rl0OP&O1P>;9FiD`EFq1u);=RuD zV5)%9ndZTC4`z5UQ(zWh&i3FO0Tq6>z`20)JecD_TwpF<^E^0TU_LGj1TFw9^q@gt z5iS>caFKulFZN)GKqD>}d$3es87|8`SmD7+fmL{2;=!dJtoGnCfy)W=0uR;*ti|OD z53Urr68c%^L6g9G!ZdrZ!Gjh7CAd*Q>1^^~vjA|%gTqm%LFxPvqTVM|^FY+!)fg5m1d9O}^E?m+A89=vp>G3Xm z1(bVMKw0b)*bnFx=mX?D$P4u2GT=eMdxahp1qKOoqX!2(I4E!kubTv347l059QNQZ z1Qh)x-sKh#UMlc1ypDKqtAM6UM?HAC2e0tpl>$S=dX)#qJb1OhZFs%LgVze&j?3%3 z%j*T+fXf{Me+hV__xdXj?(|{aB=Ba!yv2LHRp4#7yj|cOfOmRuT;Q*9xyyrh2`KR2 zc<^oy-Xm}~UhnnbectQ+9(+LHZwd234?g6AsFFg1UfhY0$PY-@6@GD%N^5EAV zJng}M3CN!LjKFUQ{9A$F0iN|t3(N(~6F46*Utj^?0)d5q27yI@3k5C$EEZS-XcV{@uvB0fV7Uh?1Xkj*O5hT} zr2?w~mkC@Bc!39N1lHnmg}{}7bplO*^#aX+xGaPl04;La2-qaB8L&m*D!|nOTLIey zS^?Vy+5p!GBmnIK9e^DIF9hrqxE64oz%Ib`0=ofw1YQJ43furl33LLw1k!+vKsTUA zU@ssmun(|bpcl|5kOSle`T+w11wbfJ1Plt?2sj{c5O7G~CcujYZU!6{_zS>G1a1Mm zRN!TRBLcSqjtaaS@Ct!f0)_-$1vn<~YQSv*uK~PP;C8_41YQq#gTNhtzZ7^Q;I9Pk z1iVS$&49NEycO^^fwu$RA@EMXae==E+$HcXz~2bG8}J^1y8-VNcpu>X0v`bUtp^_z z_z*517WfF@qXHiT+#~RDz$XMg3Ak6_Q-Dtkdfis3j74{Q-Oa6oD_Hr@H2tO0Z$109PkT){{TEG@SlKR z3j7N2l)$e6PYe7P;2DA60Ddd*JHWF7zX$xcz$rj53J@Drm97$~2Gj_Q0*n?I1E>|K z1B?|I2N*9f0WeWu5};mSGGL0pS%9em(*V;2W&mb-ms#HBY=Lv|nk{fH;5>mjfVjY1 zz&wHT0rLeG050$@3k4c*StM{F;39#=fF%NrfQto|0+tCZ2dofS30Ng?3E)zJ)qu+c zE(g3oU=3icz!iWi1=azY1l9wZ1vUU$1U3RT32X*z5x5F)wZK-uHi1^ac7Zm)H3A7h zyFdqEhrkN~I|Z%-fG!Wx0vTMo1$qE`N3Ge#3tib! zx3ZaHg?)^J&CKq*!fuhBS9bZ+;nUah^^q*^dhHvf-C3DcL3;lvZLj9*9qHatn>KIG ztk4??vCZi|dzx=g+U3QzhV}-|)d<3m#)2Te)i!weU5KU6v+=1k`?it)Zg3dqB<3Y< zcVenb-(J`GF8Ur?Gv9sdTqu9-6p1&rZE;^B)3?*uPa4Me@|H@pe=#@M*U6`$y4^-p z9TKD9@l+T;km>E!Zz@X1Uf|&y+$p{t))UX<*zB57j(VY%?_F?^tTGQX6$Ks{I-Be2 z9Zd7(waTv*_oZ@&lnAd(x{n*DD>KyA9?C$;IW>qH?#=WmQ@(OOXz66_Q~~=gNk89p zQ_+UEf)$&swyrT67L`8D+Zf+c>KmBu0vKGzMalD?R73xErGW-C!2M)fR#cI+qc?D(YA4~IoYvgTZgta57|Cbd!zco>`QQW?>JTqaYgSvsxtP1nY|U+ zB@g|{xtS|`FE`t~VaJjnnWg#oR~gv+IT zv_JPf$1o1FW(wIZ#}0b$Emb%aMPCy3XS%Z8c=DP&Jj0%HKH%*Wutv2OkKSkRVfQK9 z@wA!EcX%>9)YqBswI0lIly^@q*`E*H@zDLrt}qGJc0sbC?IX_(bJ0F>_%~TfU7P(# zB-5YlJe1^{)m<6u-A0R>rlgP+$?NNHB11bhjP1mht+|kORvV0+i<0Xfo}7wK^rVVk zS#*L8E4tn^3Xvb7qTA89D(G<6airDFdxm^dv4;~7OQD7r)aO_cvVn*dTMq3poQ2!S zZxlJ6)i<=YWww#az5YL{K6)3(y%BV#dzariTq1OB+GO7^8}_sXe&lBgZ8T9Xp;1>! zb~NZjVK#CucFew3FHRc0x#u#mh-jL$yPKDO!;1$7Avr{?tAPd|4K)bIas>A|TZXQn zIlPd2G76jN8|0Y&(~o|b*E}yu&V5R|)$RUVOjNfMST(idj3oh_lcYr#1?tHc4w9iwuunceR&~^F@FLJt{ zckE#Xy&7HN&c_$!&U?{%b*?7pXHO*U0W)zZnw>DmE?6C+VrPR2k5PLuQp{qIkV3c6 zA}|v1jH;)D=V;Q}V2%q3ibt=Y9Q?ez@}D3A?{k01en@u~FR3UYJ4x-rlB@WccjtJe zMX&r3Oefia>PVS){!kQor8Ga6AF`_p#?9e{)fqVHoo&5XS{K+$rQ^#1 zdy{P;edi7n(Ux@^;Y|XV9%b|qw{hN-ho#GwuUNV2l1o=#=8p0a1DiUdPZYZYuS5@t z6>=A~Al_|Yv_KkF-RWG)DtccbU>V zDH%9G6vuYr&l|h&LNeVgvUV@yLH5w-e6oP4#<*;8Q)aQ<-f4}0jTvX71>?P1$76gS zPRzl3Dsb8u;}s4}euaotN98Fu_{?5Xai_9UrV?L76jT?)2?x2OkIk6lNqt2;Qza({Uuv}+l^@v3gv}-2ZU+v9I#9+-H%*|NY+hnAjJZlD zUq~&wk5Kbr+*EwQmGMa1$`nk(HSispE+#;WqPY)~ER>hLzMshXN0N+A&n}Gy2li&W z_A=?o@$Cy8jFgEJrY~P`-_Txo;X=*z(B`DX8Gjg8EC?^7pe`v?#lAs4?%kP*yKi}C z4yL*|dB74|(8Vd%Gc@ zag+n8=Ys55rsv9!b_UqXRYtvo5{#M5iLPT}(|B=pGQ2nmF4M_yV?fn`?h}GhoYltb zKe(M23&m{<8m_#2cSFOKZEN@(?iGy}Ub$%ZqD5EgxzsaPT)*V}rAsc0Uvy#P-rlWy z2y(q^*mO2Oc<|b;Lbza$9rK~a)78us?sVf79a?(zOM?h!e%aZO&?wZ5@`1=lM#030 zBOdd28?Q?-Av8oy2#)nSB8J?s=fyTkjnTZxNdsPKg_+#wgj9t4^olJUYD0y-Qb&`! z2ZVs+zWvk&Gv>aUTrJd^Gy1P`Vd3f-8g2&KI5mvm6q0iB>Ffc@=}r-|qUJYn5cM8c z%2gGmbTWpcH7g58-H{m-jzi(7DGzG~p5`<6=aMGj+}S2kMew$8dM(b{X?pa@>$_>? zjb_e}?ZW9_O!3V!5;8N2A4usd@2D$^J9z4%+h`m`X1=((k%Q^3PN zL^zA(KL4YD#`Zc^-j(7i;y-5=m$J?qQ9*bCx1feIyEwy3N2%$905fBk!O&AUH-$IR zd7cz&sE$5&qgIr>GG?5>h#x7B&=CI_R7WU}M%yrz1}2TSjE}}x(Rj-c1Lr{g(`gHF zuF)k!C_QzgItGVm_!-UV=r9aVkaZr-sv@sCH&}AStn^39fY{}0G$>dq$#~~G!40J& zeL0R-%IqY3VP}psjgvH~@a+smu6N#(jlq@sKz+=P9zNY4^$vd<7Dr|>#ihb=tU9KB zr0-Pc%NHNrxymX#O@-FTnO;`$87}EpP&8h2nrYrry2qKfa_x0qvr1mH6T`i{u5n&x zo0pVT-raUXIL=Xfz^!;Ss{wFzJv@+b@FdNbcw{Y_! z1gbSQA2xaOHj_BBYe^1gUyX#!a6!?SxQNv3)kd?z*cjf7(E{7wp-SO{Owjk%F?@ts z4oXD~*=!NXv#@z#By}2X{<>g6Z$qKQr3=(|Z&uL2T1!8fgGr~B9Ua5zDohFe=_9qESRCnxLC=2H0O+Ho% zJv?VIBFoa3mEI-X0zPT34+Yg%&*N~5F^G}#V(0N2uZmX*xw8p$POL6{!E1WWnGRu! z3<;&Nyxr#WuIHJMAfV&jy?Kp5GCn)2OuU%d?>qcVLrf@Xy`XW~@*cAkSmQgS_I=Lv zRonfN%gv{&x-{ic*QueK<^CdWP9&PTj0O!iyICSM!2_Cy7|)%i6our3CC##tp5>5? z)`-ATNR8(v9^Dc3;TrO3)7hRCqqMCyxR&_?_L36AHM&`yY;8_IjDxJ19f5Y~Q5AEP z=j_{hwl9LK*4X*fE_d%jt1~-GsU6G4Bp8Zj zhzu@Ggll#*P*HKI5;;!_r;D429=xz=boI1hSouLhjuOIWwd@>p(NqXdL+rjWLu`W`J^>#MsLkBQ9taC6|g6 zIIYi4)Il9V>k#iTkeUXvj}f2q1bHwMR}_q>rw2njQQ3KIo9fN7IE(|TTg;9PCRIL* zpps%6b0xJ2c781sVuw3X8^US=!y~hQX8^Fmt4z4_jTL*OI&yIzS3+@#ga~?8MZ>fY zyb7&F#yJdT^g=s@c1I9~ucTk%e&(KH{EU{XN=tM)LsEmRY2j|7?3k%!nbaa)G;Nom zvV-v!ZF;bfE3fleB5opYr}d;QMWzYy0~};lN~vsV_jUj!xTU*PEN2Vv=5v?fVk;0| zu4NS!1w)0D~N^>yBR6f^}Nmmq+6g3}-rv1@UrD98c*q_TE$hp)_(#iTBtwA#9 z$d?jU3XwZ&xo)|$)KHPUv3l>5m7zDgKO@oWJQ^02l1b+?EHl}o=?#~gQNi>EQ!~tQ ziQSW}ZsMSE%)TLPUwyH|HmO47=-EEd(ap7r6 ziYPhn@6vUrPm0@}x7yv!oCbS)OAo!Yc;MS=iuyU4?p!(MEV1LqrOI)bUY{;Q; ziTYgSksX6KOQJ|;qy&@s>Y05ZbQaSZtcTScNQ};5r`_w!dq$mEa*vIvn#5rxb^7cf z#~0g|YpP9rsR2vk>uw&9?cM39K->V2x*74SZX`sr^Z={ zcLnYYTj!0mAgoMoE|#0RH0@u_O`aChiic)u7s zQV&F`uDh_9MeJPeK3fcRd}H(U5^1smqhp%TDQwCcZ&0@ma;B}NvbaR`mCP#cuSnW> zsw7gh2|;@d5Ddk=%=OtrQ7&33Tcg2fdqiWrDPFdk8H4NWHp~LKco(NBR>U_EP)ekW z#^(64OE0;kG47g6#r8y8nSoN*BHOUS zFx%0-igNx?bEeS8R*$qyl&tBLlHfy4k~MBUiy!m?n-munE8NTt zg5J%*=6DIZcOR0|iK93<1wkz4oHa0uN8ISoNIL_+8SVJGZ;phjPuz|dlFm4c7Ycdy z!<0sYGg5k~$2=8OQhY0#r{B{<2YbP4GZ8a=*+eet&4fD1`moh0oJ)9iXUjQRsQpIn z`(w5Ec!o>7RKd8OiH=kwSqB)Q3cq>S1I-p}&g`-7dxSezKR z2q+_uKn^g&6znRF?$vhLw_4=s+*o3|*gZ;w{kN&5L#y}mJ1X)r0J&`g4& z>NBSV*&@M;vi+W^AyUr3BYlo0GHKW;BXTA#s$(}=A*+lVb$UGJ<;;6DFt8Gh$Y;pWjG957 zx+B-ocO|VEZ}2hkY>n7YIZ9JnQKc6UkuWaNU*&8T;&EG}5XdDGIioUAQUxoOfKu!} zBngyd3({_uiMYMc?Y50)9Q`{1tlhJvoGO_SZ`&mLzlm{de)@tiP7juv!d25xt4l}1 zI-8HN+FLD$&1rx@*k7jye6P1WbLfs%8 z`-G(-hzJ6N)BrO0V4I?5P@5w#TqD&}H0NT-E~$jW7Li?h#x06Q!~bx*iEkO^6&;YJ z*FsHdl_((faF6R*RT z3gY&sQ`RUgA4iErlel!24XxTTL6ShbpxMm^3DT5d;md8yt}yF}dWRg;Pq5*>{26~mNt%5)qpNtzsrSE*-44lfOy zt6a)*gd|~~c$A&nDQfNKT2l3OlMuD!b8bEjj*qDMMD;;!;ABzu4 zUO}q4N=+Im?!#vg%nD{j^E5jE)r^NuwPP0!LINCZHb5~csDWfovv(b6mqs^gW7YMP zVZ+?({iE5&()kK$Bmd`IU)A9ks;_7x@WyRlJFA(7cZdZVp?*}wZei%W!qP&-?rn7u*+W_ zXs;aX;KZQAl9g^@gN~O6^FIqDiHQf(xOVNFLx#El?F`)R1B_vsg#Yha=(II19TLx^ z3Srls?HOcw6YFiG36xfoC<%3<`}mqVE!Ufr+Nl%9O^<5czM-YPrNbFQ)QU#f`Q9`l zCZVlk&#P5`uU3_+7gUcy0n&HsH0d_Y(b#0=ic4+a>hcge7Lmk#s0beP}jVScNJ`MIwy`BuNoS9kf+<;#=%`mM*>=~hc2+?(w# zCe^nZj5?Z{JMa+X%Spw^m5x?CbujSig!#*Hzk5AtN5{t1<~vyIPOi35?dt7YRxfb@ z_vf>#lZCSD4vTKCgJus(tw=WQYP1;5MtP|fj+j;?Q#YBVkr1hy8Wp80)Igl-PVQ=I zED@56)a@d5CvQp_%@gRRRAbZ%%Un8r$(D{rio0aBi_>SxWpc?K?G?$@Dhqo}CzZ30 zult8`YF3IuvZ-8(OI(TtSBgS16_rBB$GgOpo_H;#>@F!q$avrNn@{)c-0OWe>^j{y zeUtZX*>t*ZrpGl%A(>&Ua?DsN%9d+RkB}Yk$z8Smbl-h>?|b#m(|z|J@V;BupYGe+ zS@ON^48DiF@3zW@HOW%o0C(@ZecS1A^R6#bh2%A7h&xb<+kOV$u+&%K>3!9{;q=VH zv@c5g8LGh;5Yb0R>*;ZeIq!Sj8K~fpTY6$+OlLMCc7x@9)2Ajb$VZmk&YtA@O~VrFaf$ULJ9}JWLOwB-$wl!cUuA@e8-XIiT;=1DvXdglx-N`F zK*1Ht;*2bma>#WiTgz0t%%n|cem`%knG6#ANw2j}XCb*UQEJ7gIUEDy)m?Cf6Y_;y z7OM3}#9QeTs|dI9OaWJ&A>b+-n=HF^T3#`s+&S3WBYUKylZxlFXnY)aX+q+7es z_L_L|59Ly7obGDOrTS#s$ckOaBEJ430CI5%LH-WM9%JTcZTDVk^6e)@# zwYBuLP$bo4Nus2dL{Uqzsz{bZ7TK>TQL2{ab@9E&s!z4NV!bLZn(48pB~Lu|jA6%i zGF~Qjyi7dt7L4H~UgA#djAJ7}5Zl1S0qhvDfdmEu#D)Re**d@f|9smkQsSbSpn)`{ z_to9kbI(2Z+;h*#29?KZQ;OkyoOcS)b*~`+PJ8grLu2K;$YSU2F43<5Y?C z0-$(?>w&z{n7b7D#XEgxQGqB+N!!VKL&K%|H#!&uDTq=d(7z zqvg_?ZH&LSVG&>}RBa}zwcx?FYeYm`GwB#yE^-3kEnjr?Z zH(l0P<#l88icVD9kX3Z4omX_JeN#o%3`IqibVWs%+C3GGm1Mz-F%<0vlc>c>OPl35 zIDVo%!7)y zw0b*z=KY(eadAEG^x}G1rZ5tfS2GlyuB0m}T3nA#3nR7K>ucR?L2x9SIiJ6t9U-p76nX}pi%Ua2ijRP(#k@~hOU~S zXhtPn(TucrI44W`v#cnn3YsxhZh%GXa%^tIE*G0yF`VZ&Vjz;O1gge0T^>D(;<`Z) z61%>T&)9lw;0o(j&I79=*vjL?jx+5j`Nc-nF+U ztmkx@O&`a~3~o49_P|Z`n3+vjwSZ#6D(Q*|`)szi;#Duy*yXKuAFW}J^~Zf znT{K`Ij(f)GeEYx7$b88V6Q6y6O)yZd!t-Y{zVe3{k2<1c;>^Mu_df;88aewQVeod zR=2n4nC@zm1OjFnMZ!+w!w(D8`%>VyIBm8&jfs+~4+a5Y?M|#3x$^E6k=L*1k=L&m zkx^0iW{Q`d83}b8qa}{b0J+qo(iMZXQpGmpyJ;Vy_-r4N>*k6o8On;vbY(@=eTa%~0gWpKG_KqXjps|Y zN-@YQH}WxCxp8yLDjCX_mFdcs-ROar=?`w6obJ`UqVCn3Dyn8EDypO_D(YVCsi?ZQ z<&(-zn4z5aE6p!ri~g>c{m9oxHAB&iO1h#M>%IN`pfZDbMd<#>RxMIT8y8|VLs3yB zT~X21m~tPrp;$Z1I%*q0duiHN09T=RSOA8Q;pN%JWWBB;)!k(XY2`KZUh(KH}kO&#WhY2#!C(ZncUPTlm&Y2$L7AaGSv86i8if{?>s zz=0sNH|Ui-8%3F!9*t5ZBU}Nz7Tpse;C%L)*@M{Ka!!+E?s6DiPp5IRx(|tW!OfV^ z^5stBa%@L-mHFKH-h46qz3F239agSOSZgLZouBhblYR|M**#P<6 z!8gb%h9A&VafLsSS6nTisJN1@s5s*zm@SK5vE~1T_W>r@;n0?SmD6?RQDWW(oQaQH zfV1DI1aFrdvxuTvqP{1@t?R$T+5S2RK_*6YeOe`^JSe-jv`&w ziQa@+CwdZQolsb;L^rs-3J1(EgVME}8RiMZkJ8JS13QZwqez!^Kw%{+nOkkQ7rbTJl_!2R+I{sF!+te}{c17n za^?Ag_dC~{FB|rrblI@?Cd^vhlQ3(w!b;egZ#O2(^HJQ?&Ij*|C|=&_>M0WW9xFHn zj*6S6;1onahLT_NrBMX+UK&NS(rdkSYWnBfmsZ=sdkSYh4zGFq=F^7RD`S(BN5&^U zFjX@j`z=uzl^3aC7x@s2Xtl3Knz&)&hGIS_V7v0N5+em|CqV}`|Rs;2h24(ZmlP_E|Q!u01vm>v} z(i?&m*@Pbnfsw*j2z@k!_z_IePC#tt&1zq3Ojgg2?%A4WJ6*eZ!z2tOuF%38km_w-C<;75t=b5|6 z5ZzrDvvunIsnM}>XESMuG+-`W7k%Ph%QdpRzC6pLgjlEPwV3#8TBlAUS6=pO?$@WY zjd#!M<__s0jqs-kJo}G=C2r(<+D~UkkV>hXJK5xLaWJAz6h)Vhjy zy=?3Xx1N$N`E(W+cbQo!;W?t#3b*C4ZoZTd6ai(wSJdyl#4XG=PECxQnmAWKH90zU zWOQtFeB$g!9@vGT1V}O0HvY3~WUk#=on!WAo3pL<(hU#DhEmQ?dx`d@U+LZ=a5avw z3*0c2I6IKULhNir%>^vjmBT`8CL8hv0QaVgRpPKf0$LjjoyL20jStdDf}w>tBoMr? z>Up!PnE%3u#F9|^0(#m2e}P>%ol-EcaP8(@aUp=3sEin~YePqR^Tn>%n=W?64HaZP zR?$U)S&tPKJr+J$Tx*=E;HD6O;|-mdBlPAs|VfTFTrI!qHj@Is}0F6Tgq?eYmFskOin7CeHHCrG1jKr!Cl%$w#9N#M9W;HWdkZ#wSN2a za-;sjlRap~z z(q&ClSj>a=QL4Mv)~;hxv+xz;Z!EqXvNE(eA2YeC4YI$tLA@Q!8q||6YmmaCL82nE z5%2=AyPVaIDZ}i*|YqhV; z8?z9_Rk7=ntL%gp(8^-td`UjU5oaZ^1W_wNKG>D#JL-LWrQMfFX_F%egsBn zFl$#<8l%-aCXY!-QxnC4@R-O|v?>51ur`gm6bv)FDvKffJ&R#OPqKMa2}Rl2yeX^# z3~P;*ICN0LO7+kY{*9GXN4ltle0jRy5R;dLC5Jf5>g5nStXvtZokqRHqyY#BMG9bv zLI72RWmjHT9GKCeP?ABb>y3JOV2=HIH4ZOCt*(1}jzpFH+ELa0Is&pT1(P8%y=UQe zZz_?d6iW^N#tmIWJu&Z(hD7W8(Vz9k`fT15qI#RMKASg1OtWp?>mevqtI4l)2AmBV$^97tX{UFzfllLp63B#*>Bf|V|6 zK4)bRJ70iW2uu=`>Ep(AV?AnIXiS#`Rm^g>8Fd#Li1%rh?J8zD@+~%|%R7!NU&!)y z7aL+VW*kY2Ga<0yKC zUPWe(arx~A_A=zoD|#^oH3DT!1NM*#7jH+c?I(-#l2+K&nr>g71SWb_{f!4 z5U8fR+SACGw?H1<)pwdVR(X$~NtKgy`h2Ad&m&ei0x=QGR0(XO$P6|m6XK{0Hg77j z3P;gM6;w9T^I8phrMs^vGhbLSf$$(463NYw7tp1ZZciv(8E1@d)RiG1<0LAfJxRWQ6`ZmOi( z;Gz=pmB?4;TIY>QMDBF2wOa*nhP%knwW33=5~fBjOpBfQf*}WKA3?<$7YTtv>>5E( zGEEH|75@tnFxR;7ZuKS4T8MwG%{A6Obr0>zUh?QvyEfmrP`O5mL*-gf48*O)9f@5< zb6?$fXNUW_k zE|i4A>yadG!ZmLO89b;<)~9D>eL1~qgewQy@Mw zuu8^0nDQiE4ekMV1GE@ZpbR&97I5b6; zg42K>0|hU`Q5&8KMc&Wmog?0J%w0PA(u=V_6VQxd!^LBcOX*xR#u4GwP8?owM}?^H z@hoKS(u=RX@X`x;NOQReQR5;PL*}w+6GjlCJjr^s(H_JGSZ3w6Efw{C3(0?>O?V zHYQG`eRMVVp7|*41EJ>L@tL%5Pw72NQRsKiV=qjleUFvib7#}OTIv00BJF#o^iESU zua5J)@19Hh4wv3DC(^zbO7D9Y)4rEW?YcQWt%jmGHN^qWP0 z^}sDXj5j@;ce*VZoAgMY#4p*>rwcD))l=z2;YBKQG<}3_rH|wT;dfisL4F=DdY-ml&jzDaIZ$^#|$I#@P>2Y*hDtabsB;FGgb+GhaxR4Iz0H&fYrb9V^;XQvk9m)aBk0sLm zc^8oFIe9L9OvzVM18pT1S`o|sDC${W43sAilgV#S6}j}>0sJfuG(uNpnO$|5+E zepW=UD)Uqxz0?82jHYN-4#-_vZk(M;&*$D{PV(o|*}|*$uIZk_D;{#XCvTTolg~xz}8|^ufX_Hd(s2;yr&M-J4gmqVq#~QnBjd6=
Ouv^tT6o3yNT12QNV2mN4p+Qq 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 RCVItNw!QMt=hdQ^K?i^&7*h^ThzXhbKB+_DX)! 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%0AGS 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 literal 0 HcmV?d00001 diff --git a/BaseTools/Bin/Win32/BootSectImage.exe b/BaseTools/Bin/Win32/BootSectImage.exe index 0ddaa55734075c429a64f19b39379db8a96d91de..0e11dd8a5c5bb83c6a1bb0f44e16e08898e980e4 100755 GIT binary patch delta 61 zcmZo@kZ5R-nDBr(sG_;?aqDBo*2he(kD0eVX88yf+kX8a3-2BQ!BjnwcjE6|mgatW Q_KfS_r0rkkvhpMW0D`j}vj6}9 delta 61 zcmZo@kZ5R-nDBr(ZE0BJnA2V-#%<>T|w*C4;7T!Gq*^0k<7uU%<^(EFu Pu8&?*wf)OnR-PmPi5(pY diff --git a/BaseTools/Bin/Win32/EfiLdrImage.exe b/BaseTools/Bin/Win32/EfiLdrImage.exe index d18067e721824ab1f5522bba6cf7e273ed56e1db..d63752e1c1217cddd0e75074dc680ba2ec231b13 100755 GIT binary patch delta 64 zcmZp8AldLha>4`V;ELwP$E}YUTOTvEK4xxx%(C?{>&F0)@b>G0ta~2_Ox3N>cKI3P UKI=;J(MyjWPTs!6h%Lqz00s>o#{d8T delta 64 zcmZp8AldLha>4`V^rc~qk6RxzwmxQReazhYm}To@){g-o;qBK0S@%8=;9b5&c&aa_ UcT3r>(vw_CceXDvVvDf_0P~L>!2kdN diff --git a/BaseTools/Bin/Win32/EfiRom.exe b/BaseTools/Bin/Win32/EfiRom.exe index 700e3ba72b25c85e00c7e36ed8c513f4c6a844e5..f92ae9bf303bfbcf7d1a9d7ddced06ece6774d6e 100755 GIT binary patch delta 64 zcmZozAl%$2k;qBKavi^M_AhW4=?w5mp Uu4|Y29#a3TaA^CJA~u;=02QzxPXGV_ delta 64 zcmZozAlO@{&yhtR_s{C@%`MfG`9B=alUEFl5~FGO%=(P2I9g zSQn-dh%WOuKFlanw+{w!jMkWeL+f0&2`x}cd1rhJm@&X}_A=#xewqE$jnZDo1=p6ZJFvWlwh_}3{Z_{^Hjy|tzFFW1ym)tB$7 zDD7OUTg$A~R2z40w=bdefYB2BQBLs(2#i@OIb=bw-UrP-8$E9c-OQq|2tmBd(QlJ#51ZqK)KqH72#0Z`e zXa%u$>o}Cg{C}d(DcHqYu4B9l4D=4Z;({Fd2cB?29v#N-U68M|FeN!?YG^xPYQo_F z#NtLbBr>W;gByz3b8n%|4O^JjgAO<3FrI=B+)zqyqkbB;vRy-Hod$zq$SJIMsuFN= z8gwl2TYNMP+t{f^%$otD;zpVpH>ar+5obV0T{tlVg{-|D*(?+(O3tY9@~7$)T=jzr z&9jig@<*|677WZViBq#sz_$F18V}^LGQb@kD5A@F%mamV1;6uvk-h!_s^*}GWjS!? z9Av9}6H%nIqs?S)ecOcJxP_u~b3&2vK90>nG5rClSM=5xk40YbMr0{=d4&>P4UTys zpOx&zhhBJr9qY!;^TMo$*fI~#D^3n-@b7b)WV|*HI)&Dw!6UPpSX>nm{SDK7!m7{z z#5SMs^)8pjd^fLzx15x%w{-mzTAGYjI~4U-rYd&o*4h9LbVCJwhP zLMF9i+agr6iyQFTqR{l}CR|+!SuZPb!x zQ)j2?5V~dn@TFy;_~QmNFN?<7JMhXf=oLdpwU~5N8;=UV==w5d`bC>wZ1q2udDaiP z^bz{}P(|-ydI0hwFO>r+>Da%&!;DY6AOYVGh~XT55eEapz~glo42aR6wE#w0U>&M& ziTRZUMac;(HU+^De(6IXZyspJH+-U{`?nzkZv`PSeb51ejw RiQkPJ5=)m%$U!HF=pP5PtXcp7 delta 1113 zcmYk5drTZv6vofJy9EYzd7tv!MI-@SBT-w*8+QdVxk5XTWk{Sx_lnQ0rLbb6r!m_)(cb6!}Xso8j8WU1)jej_kU+$dAot*Fc z&RlI`XZQHd11{#`E}cv7TH^|Hg}Wk#l-RCl&#CuHM^kfNca{M-%gEfNn34mHv(+~E z?=s5ODrvnFMGstyPNGM0j85(6F6CDx!oCcuk%^-edP~XAXahBgiB?dPndk*Ig^81( zrZOQwO=IF6%0H}>WSj;yn~6S9bC@^-YAzEWf%*^=AA@RP;uAW0SShO!10c?U7z8l{ z;yj28P#+FzJ`);|e;?YSe$Py}U?64a+jQ*>omN!O}+mG3ySYIsU1PS=_>C5&ss!-`3-Kgi{t zfedD%*aBnNr>mn1r!2P;PwosB-7TLak&-BhL1L8Le;*@>mBdNnB?*#5Ez6Bnaa8jS z>LdRbdHW>R@{42i^(0!EnUpCkU{zE(g++|ft5aAUa1+$H*wAG6imPsvMEaxK)bk2(vx)bjkY1aovGxZ12KxQAB z`JwYv?n5g-c8d=9u#9(oPh&nT;%_I?-#)Bhc~tDja<-ZF`LU8;a?yw%E4WjmRX^q% zELWqUt*OE8*wbmJmpszZ(=*ah&uwzd;6|2C12azbC7H~-e^BodR!3gQN`QKM zTbsRuoL)rY0qOXMU1SbOVIvNDK7bo^_YNk|%{LR0X)qvF11$xl%v?$d{%f-~h=r`0 z4h8W^R!;sP7DcXZLDgnZWOwGBYA?)4bu-ocvyX|?+`)oDUYr^Dt Pfev|FOaNbvqpbb`@|Tl! diff --git a/BaseTools/Bin/Win32/GenBootSector.exe b/BaseTools/Bin/Win32/GenBootSector.exe index 0dac396e6e028c3e3443f07ae5c7527abf5d85fd..bc2bdebd913e54cec9fc2f36d423d789a4b9db88 100755 GIT binary patch delta 64 zcmZo@kZNd)v|;ACE|0GvBz} UX&-BS9sAWq`P;V`u=)4{0O%SXb^rhX delta 64 zcmZo@kZNd(D7}*1h)xoEOA(m4BJy UwtBYcnMapz{NKLCfX&Ar0Qe~&KL7v# diff --git a/BaseTools/Bin/Win32/GenCrc32.exe b/BaseTools/Bin/Win32/GenCrc32.exe index 6bac0d00cd31b5a82ffd5d487e8a48e3e32f1f3c..9e86442a73f678b20fbb92f9c0b80837d87a33c7 100755 GIT binary patch delta 64 zcmZo@kZNdpP5@fvuyp$`Y-?_y#0D0>(K`S2Vb9K2#jTO TTfZ!|QugP@pzUjn*g|{(<>4MM delta 64 zcmZo@kZNdDE0)}s#uEcCYRoWAa* U*Bln3vvtR3>TF+Q#1`TU0Pcn!jsO4v diff --git a/BaseTools/Bin/Win32/GenDepex.exe b/BaseTools/Bin/Win32/GenDepex.exe index 6f6c73028baef411447078647588af0700a43319..698eebf30ca35ecdf796c93fd76414bc6dadb385 100755 GIT binary patch delta 86 zcmX?hO7++&)eS~f9KtiWY){+&F_>&sCC?IWnCP=Pwo1a0k+HdKcYE1xMj&PaVrC#_ b0b*7lW&>jO?Pa?;PR)bs-tG~_`Hu?#_AMht delta 86 zcmX?hO7++&)eS~f9G7R$wJEsW8aLUhN`AUW5F792v?_i_Muz6H-R)(&8G)Dyh?#+y b1&CRJm<@>8x0mhaI5iKhd%H&z=RYn0ZAm5R diff --git a/BaseTools/Bin/Win32/GenFds.exe b/BaseTools/Bin/Win32/GenFds.exe index b4e55aed8b8750d06aee9d528323d99a75e4a09e..adb7da94bcbfc1eb4aaa8e1a670f746184cd9c91 100755 GIT binary patch delta 100104 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

^AV&VXihhV2ij6I^Y6^$hrg6P$iGMO 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 TzctKTehZ_3!uBOjY%#t7#z-5% delta 64 zcmZozAl0xyYQh8NoTXunk6RxzwmxQReazhYm}To@){hAw;qBKGS@%8=uu!=W%iV*mgE diff --git a/BaseTools/Bin/Win32/GenFv.exe b/BaseTools/Bin/Win32/GenFv.exe index 240101306c26c94ad66fc9273ab91564b04eeac2..66c61fee763c3158f2114f4a44ce45f351f03239 100755 GIT binary patch delta 64 zcmZozAltA&cESthh>GUM*R8J^TVFG^zGiNH&9e11>&p)y;qBKyvVMIaAiacD)v$1* U$5verZOM6^lH2cGVpFLF0Q5K=`Tzg` delta 64 zcmV-G0Kfl$pdEmq9gye)ZKYO$>xJt9h3f)^>jQ=B1hwl0>F@(>rB=7s@dfqZ5S*&| W=7{3@LV%6c%Ofn-uD9IM1|)q<_ai<4 diff --git a/BaseTools/Bin/Win32/GenFw.exe b/BaseTools/Bin/Win32/GenFw.exe index 6ec43f4728df34a4b89dd0004d3341b650672a10..10cb4a33f713c48c91bdbb48e9965081ea671b7f 100755 GIT binary patch delta 67 zcmZozAlI-!Zo&iR=!)jX$E}YUTOTvEK4xxx%+mUpb?aj`MnRCw_UD3Zx=#ges_)l( X;5FTEW2@a7j$N~^Z&&%wc4r0v55^xn delta 67 zcmZozAlI-!Zo&iRf~8@Nk6RxzwmxQReazhYn5FeG>(<9?jDjGU?au|-be{@zIJ{lR XuEgimx467uMTf_w?JD2d?#uuH1q&WX diff --git a/BaseTools/Bin/Win32/GenPage.exe b/BaseTools/Bin/Win32/GenPage.exe index 8a03a51e970078305785ab7a8940ead298c7c1a9..9ce843fb87ad50b05833759b0dc11e175ab964d0 100755 GIT binary patch delta 64 zcmZp8AldLha>4`V=!)jX$E}YUTOTvEK4xxx%(C?{>&F0)@b>G0ta~2_{1N)yIq}O1 U&jr`TqMsN4*uQ;=5nGHc03g{QzW@LL delta 64 zcmZp8AldLha>4`V!lhx2k6RxzwmxQReazhYm}To@){g-o;qBK0S@%8=Xx5tYRc_{G Ux5>L(7*BDXp1OUB5nGHc01RLr_W%F@ diff --git a/BaseTools/Bin/Win32/GenPatchPcdTable.exe b/BaseTools/Bin/Win32/GenPatchPcdTable.exe index ca85eb1d241dcc0251e7c5d2e75c29560cc69351..9306426f753e3c38a070caeee5468426af1de459 100755 GIT binary patch delta 79 zcmcaSTlMm6)rJF7M3lnoO3vYXK>l3AMCz2U2qPoJWIG?qR)1dIjjF7M3lnoO3uX&z@_Oq$W{1U2qPo{Pc|3ti0Q8=dkiSGBULL g-em=1HXvr-?t7PGYtD277fu!ykm~JRUYsYH0hxpwy#N3J diff --git a/BaseTools/Bin/Win32/GenSec.exe b/BaseTools/Bin/Win32/GenSec.exe index 9cd22fe9e487a2a4449b8ffbe2025060228ad667..7806717c8256f1efb7cf8c59829823e9c2a0a96b 100755 GIT binary patch delta 64 zcmZozAl&FQo;qBKavaWp~a9)Q$_p4mH UWACx)KVM~Sj@&+_h%F};0QbiqsQ>@~ delta 64 zcmZozAl&pco;qBKKvi3d{Xj9V4TchLd TKQYeVVpFJq;P#ScwjLh<+Fu-z delta 64 zcmZozAlqiBU@b>G9taCRCFcmqSn7iD{ UcmM0TB~^KXw%c1Sv)0%E0Lus+Z~y=R delta 64 zcmZozAknZuV!{LFvZY~-k6RxzwmxQReazhYm}To@){hDx;qBKIS?6vPI9wfN%k6l> UYwqurcR3Tha<{i!X05RS0M?!z;{X5v diff --git a/BaseTools/Bin/Win32/MigrationMsa2Inf.exe b/BaseTools/Bin/Win32/MigrationMsa2Inf.exe index 400ca79dc190389e841528199f0faa138f567569..117cad3ddb4432c2604dbebfd136614a0783a8e5 100755 GIT binary patch delta 1106 zcmZ9Le@vBS6vv`eqTfxi3k&Gd*{3s51|`@<6h>( zU95HsTh6u=59lAp6wtLK61}iWXB2KNlUhIiNLx8;Z5mEpxf))2ZuE!sY@aO%=CkNpP7Xq zPcu2rR@IOP+gB$tjj4TKVkAy*6O0&Jt7y)N|2YB836eOGpj&e zW*f6-VkdjVxaM^!GY#u%f}84VgKKN+*3jl&@zbLTo6j^<2b(r*s0-F?s;v$u>Jphm zO?_bfnpo*xaht>HSl%0=IGy;2K>Y!kSnG&za9BbYMuacvzf$S{B=rZ>Vr?fyrq#Ni zGe%>mUS*vUT5SAX5eJ$b6<+e@>PGL(s8Bc+y27P!D?ExMg;(*AB3a>!&5RmX*Z+T= zAKW(@;Uc-?Mu0!wLJe`l&o>Ux-ndc3z0>q@+*k#dX-cIZdbLjcWLo?#>$}Jos$ilUNO(^>twxU)$a{jsYH;=)0#P&u`=htg!x^>1Oou z6K)^v1I&dRGyzx+SLq&LG2Etnj+OlNK?-yA=Iu#3orv)k{m!vMTzSO9!n<~~geWU+ z7}RLNH2&%edeMSKaFd2DxSH?WLN_c}!ac80wiPSk3~je!sr{P?4{HxohZR$4%8D7< z?0FAs?%1(wLFv8~)3kz{9=7ed&^BuP!|+kQ4KwURa~{^!wNP`!mE@&v8#;NJn_jbF z1%KE@7i}1TuSnRjNEoUg6kBqW3grIgqJc-c+==>JLd52 zsY4Dd;=SKdu|u`H-AX$h%4xcfCe;nI^j9JrT0x~67Q!@zHC)B_{Yj%5mh*2`sc+m`SF*ndB7OBb0Ri5A=>eKYUNugj&WGTJFRGzB!GyIMJ{59P+W&wvOi) zOugq+Bg{WapF6RTKedi*x*FvjD%VvH=V*_PW$-0^q$`uZ(7cXSYSC3L3^?wbHCR_? X+k(}jF3f;m>6{C*>>u7W)W7%}`x|6K delta 1000 zcmZ9KeQ29i6vofF`Mi0PEN$Ln+iYz*>Bmeqref2qZTh7!*bps_{_%?4v^Tb5yN;wq z#>`l2#s(tFSavpxT32UBnXa4N(mLz3vj~E-AUcOyM-dSnMIA#yY`vrY<%J)Y=W_1h zJkPyHhj;vVV#k3jW<}PPwPzh!XV#T9S5rf)d{dd zs1#UhQN7AXGqOHB0#+5OH^Hh#brP%%sNMqW9#p5milBO%mohT(s5%GgJgE0TO@g`r z>LPTxz^Xx&2Q>w18r1usE`j<0)C{N(L0ty*5vY$r%|e$KtQe{*VAZ1f1gto!Io`Kl zMs1I6_&k4UznpaQfkX0!eXTad<>PW)e)O=M7ucNde^J)0%YQK@og!a6E=%q9!$Q}b zBP`9gzpGFAeAFmEG&CVK9*v>#YJ3{MW{oDGDbN&Zg888d^V^62AM&%yW*Zjq%(B@c zGV0ih855(&Ilf}X#jZI{t(aRd%xAQ;O;j43sWOUqdBu!~g=8*5_lw!NTn9abRk=~B z7iZgZH?#t%)1BCh0l?2hiZ$v+`A*=xc+;QQ|N1-U^`6zjQLP$O>QF+p|M z!i$2M#q|-cu<1L$O>w79>*NxjvQd-VxZV%_d-o*MJilz3jCKl%ucBOPr#LonyPX~s zpFY9Ec0EkTAb(@0W^{0ggBqNbQ-0Xp&tV4@bJ{^=?#9c0=7!|owjkcTU+fZ zDXCG6RPY;82ef#E7bMl%3g!!WVZN}4H+yvN zpTFnFJru(zAMxl1*~r&CR3pxmu-~AV`)V!-T|IqIt-9J}=nRKm=jRQo6)$Y#3x>|J zm6r@XgP%8hDS_*`*Q;H|_^g*&v5NoD%GG+&gn?Ags@F$+REBZh?W1z1_m-)D^S?rD BI*kAT diff --git a/BaseTools/Bin/Win32/Spd2Dec.exe b/BaseTools/Bin/Win32/Spd2Dec.exe index 9069b966a08976a3a530af810f795590ef1bf314..049766b682294b270320c30d1e315d920c429bf2 100755 GIT binary patch delta 134 zcmccdGUUd~kPT0jID}_#*`BulV=(!xk~~YeVWQ7w0c8nCM#g5%ly=P&Mj&PaVrC#_ z0b*7lW&>h&Am#vKP9Ww2Vs0Sj0b*Vt<^y7WAQk{(K_C_aV&UzYDI#CDz-`;ECMmi} F8UPD6E1&=X delta 134 zcmccdGUUd~kPT0jI4;kgYg2H$HE!}-CHd($M1^@bODgj_GBPx4rnGCOFaj|X5HkZY z3lOscF&hxG12G2>a{@6J5OV`D4-oSLF&_}~1F--Q3j(na5DRbDOcD9I1#a7RHA&G; F(g5sME~Eee diff --git a/BaseTools/Bin/Win32/Split.exe b/BaseTools/Bin/Win32/Split.exe index 0ff13016c34c141f8fa494f99ec86132d3363111..561aa69bd11be95694118093ba4fbe258ded5783 100755 GIT binary patch delta 64 zcmZo@kZNdpP5@fvuyp$`Y{0{y#0A1tLg)R%I%*{8{}oW T&XVhyqC407&2||lwkNg#<((cj delta 64 zcmZo@kZNdD82R@Dar?bCB6Z7jRs TIDxxpy@m1L>g_U4Y)@bo98 diff --git a/BaseTools/Bin/Win32/TargetTool.exe b/BaseTools/Bin/Win32/TargetTool.exe index 984d37edb0673eb3a739f786531af4d783bd571e..bfe546188eeea2acde49c73f13b5debcd9a84b15 100755 GIT binary patch delta 692 zcmZ9JUr5tY6vxl`U3FJB%}7bpk{b9gtdyo^`Dgi$;nGRk!_8RW5h-Z~E^t1DN6r4WnATK)2=hl(ty3@nI9w<$p{_U9=nq&x7zI+rgW?%{jBaPAGiurJTr&yV1U z5f(drskX87s;MW=@setQl4{=T6WcRgCw=ZNSg#b#TCM&>8{c>-$IL%Iv63w5GN=^n zj`7a{;m92WwH3(^Dif(6R2I@TP}`8kL1iNmHwMJP+*_dXkS0OpBTa!SKnj8?MAH2t z-RFsbs47wpq-juPNcTaNBRv2L13d(K1Y`m|2AY8$3#ba@wSdUB(o>*kK+mDa#>InT zcZRA(dJW2n^aj*nq_=RiV9q=~D8e$$ruXnPH+ef+T;4{PyMa@OMRZqu!(*O$Z+mO2 z+uPLPs`tlz@lM>+;ylt|t_+JG2G*I83!*ZI!#72SbwiAq6%-bOJwcJa>EECnZVQSn z)(u(aj!BW5fTL#hZINg2L`bCZnjtc|GbH52(U8ze&`Q)w(z2MNA=zH~|37{IEZdC0 z9j;rD`*D>A7Gycb_@0L0@8GWsvcgC>$M!|dQw@9~PEQZBCYn6AC>{8YlOpnfab=#J z5m{q&zUQHcEW_VC6Or}!h1Vj|VH96tM^u|XaBoyPjYDp}8)$8UFT3X7JE2OM3hz*Q;QaqcQ2kWwtNLN+bU?dzWOX-TF#`zpuC3 Yx94o2%hQ~g6u0lwr^*Vj`J>dgzqfPV8vpAfulyO%PNYlx zvqyR=!k{-Gg+P}e4TIi@Gy=L5i9nYjjq<);xu+rux*F*w=o+M3pj}9JKyN`B1HBdL zE=PN%x0N0MJp_6L6bE_?Gy$Cs&>kck=n2py&{LpiK+l1ufL;K-1bPMZ8t4sl7J{xt zdJDP^X&Q7r(mUSXC%4JNt`BygPsSBn=Vi+FMC5mYO?LI5Y}jNE+?IL5o*R?pIpU(= zb4yskXU3(n*N)4-$nKb2$CsC|XwXcC97C=l&)~4#G1YGUf5qs6IwWTA@$!Ol;{kRh zRUKM<%t%bP@kmnDi?%Q)Ry^6l&XjTV1n)OS2luCx2P=6ZrFM%{f`6n`qlkTCE3InL z$6aaFg0*})HD4C@x(6u~E-2zLHhV=;lOLHHgz)yk=2ZRYzwPgu74rgF8<3cC`9(^HvhO NOnVCej(=8W`v(zB#=!sp diff --git a/BaseTools/Bin/Win32/TianoCompress.exe b/BaseTools/Bin/Win32/TianoCompress.exe index f106424ec16e9a216ca541527c6aafd8f5667c0c..4c1d44ff5d2e6296be65748bdd5c0f3f3e806abd 100755 GIT binary patch delta 64 zcmZoTAk}a{YQh8N#ERy|$E}YUTOTvEK4xxx%(C?{>&FI=@b>GCtY;qxgi1L`J4{*P Txuv>!QB%&Oy6sz%*nDgO?0_B# delta 64 zcmZoTAk}a{YQh8Nilt$Vk6RxzwmxQReazhYm}To@){hM!;qBKOSF7M2#)Eo|1)wS{MJ*`^=tzUMHXfdPd185kIx^K*0a^Ync) zi<9*VDw8*V;^hiAO!V2FHl0nvk&&^z{stQmvjZ{5_WB!~=JgyfQ?~C5=Q_X)0Q#^e ADF6Tf delta 99 zcmeyjP4nM2&4w1n7N!>F7M2#)Eo|1)lHoxNX1_0lBBdGuY diff --git a/BaseTools/Bin/Win32/VfrCompile.exe b/BaseTools/Bin/Win32/VfrCompile.exe index daf66f23c54a84503149a64071c9e20989b93919..da1b0a9a996f3d0474d0e56fe2eb7560b728e783 100755 GIT binary patch delta 105 zcmZoT;L&ivW5NsO+=}ML*R8J^TVFG^zGiNH&C>dswe>Yy>udJb*Bq^{Ia^Z!a6-Qnm<^y7WAQsqu#Zge_ F9spkhFvI`= delta 105 zcmZoT;L&ivW5NsOj-_FZuUlU;w!UU+ea+nZnx*wMYwK&a*4ONARo+pV`5TW>S9-ezvS&9e12E9XOy@b>2qS(m;Mu>ZM9>-K6l hw@D0BAMprRm~5YOj;%(KEjYD6LBVvp+y}Nt_5hiQ>J h=V{rRVk`e{Xx%>N99xYdn`3FZf`ZX@xesiQ>;bkzBijG~ diff --git a/BaseTools/Bin/Win32/build.exe b/BaseTools/Bin/Win32/build.exe index 54a323996dab3f966ed6d76eea68b699006c5446..170a55cdbe2d754e8534643d1b9d227fd4a9525b 100755 GIT binary patch delta 59781 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%0DgC_LO&_LrEBnF+&PK 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 delta 46765 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 x{r$8DdO$ - GenFw -e $(MODULE_TYPE) -o ${dst} ${src} + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) $(CP) ${dst} $(OUTPUT_DIR) $(CP) ${dst} $(BIN_DIR) -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) @@ -304,7 +304,7 @@ $(OBJCOPY) --only-keep-debug ${src} $(BIN_DIR)(+)$(MODULE_NAME).debug $(OBJCOPY) --strip-unneeded ${src} $(OBJCOPY) --add-gnu-debuglink=$(BIN_DIR)(+)$(MODULE_NAME).debug ${src} - GenFw -e $(MODULE_TYPE) -o ${dst} ${src} + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} ${src} $(GENFW_FLAGS) $(CP) ${dst} $(OUTPUT_DIR) $(CP) ${dst} $(BIN_DIR) -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) @@ -314,7 +314,7 @@ "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) ${src} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff # create symbol file for GDB debug -$(DSYMUTIL) ${src} - GenFw -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff + "$(GENFW)" -e $(MODULE_TYPE) -o ${dst} $(DEBUG_DIR)(+)$(MODULE_NAME).pecoff $(GENFW_FLAGS) $(CP) ${dst} $(OUTPUT_DIR) $(CP) ${dst} $(BIN_DIR) -$(CP) $(DEBUG_DIR)(+)*.map $(OUTPUT_DIR) @@ -367,12 +367,12 @@ "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj - GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj - GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) [Acpi-Table-Code-File] @@ -387,18 +387,18 @@ "$(ASLCC)" /Fo$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} "$(ASLDLINK)" /OUT:$(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj - GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(CC_FLAGS) $(ASLCC_FLAGS) $(INC) ${src} "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj - GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(GENFW_FLAGS) "$(ASLCC)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj $(ASLCC_FLAGS) $(INC) ${src} "$(ASLDLINK)" -o $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(ASLDLINK_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.obj "$(MTOC)" -subsystem $(MODULE_TYPE) $(MTOC_FLAGS) $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.dll $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi - GenFw -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi + "$(GENFW)" -o ${dst} -c $(OUTPUT_DIR)(+)${s_dir}(+)${s_base}.efi $(GENFW_FLAGS) [Masm16-Code-File] @@ -438,7 +438,7 @@ $(OUTPUT_DIR)(+)${s_base}.mcb - GenFw -o ${dst} -m ${src} + "$(GENFW)" -o ${dst} -m ${src} $(GENFW_FLAGS) [Microcode-Binary-File] @@ -451,7 +451,7 @@ $(OUTPUT_DIR)(+)$(MODULE_NAME).bin - GenFw -o ${dst} -j $(MICROCODE_BINARY_FILES) + "$(GENFW)" -o ${dst} -j $(MICROCODE_BINARY_FILES) $(GENFW_FLAGS) -$(CP) ${dst} $(BIN_DIR) [EFI-Image-File] @@ -518,9 +518,9 @@ $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.lib - GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiipackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) "$(RC)" /Fo${dst} $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc - GenFw -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) + "$(GENFW)" -o $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc -g $(MODULE_GUID) --hiibinpackage $(HII_BINARY_PACKAGES) $(GENFW_FLAGS) "$(RC)" $(RC_FLAGS) $(OUTPUT_DIR)(+)$(MODULE_NAME)hii.rc ${dst} diff --git a/BaseTools/Conf/target.template b/BaseTools/Conf/target.template index 7f0771ec55..a05e7af3af 100644 --- a/BaseTools/Conf/target.template +++ b/BaseTools/Conf/target.template @@ -63,10 +63,6 @@ TOOL_CHAIN_TAG = MYTOOLS # cores or CPUs. Less than 2 means disable multithread build. MAX_CONCURRENT_THREAD_NUMBER = 1 -# MULTIPLE_THREAD BOOLEAN Optional If "Enable", multi-thread is enable for bulding. -# If "Disable", multi-thread is disable for building. -MULTIPLE_THREAD = Disable - # Build rules definition # # diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index d776ab22d7..c873d93738 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -86,8 +86,8 @@ DEFINE ICC11_ASM32x86 = C:\Program Files (x86)\Intel\Compiler\DEF(ICC11_VERS DEFINE ICC11_BINX64 = C:\Program Files\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\ia32_intel64 DEFINE ICC11_ASMX64 = C:\Program Files\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\ia32_intel64 -DEFINE ICC11_BINX64x86 = C:\Program Files (x86)\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\ia32_intel64 -DEFINE ICC11_ASMX64x86 = C:\Program Files (x86)\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\ia32_intel64 +DEFINE ICC11_BINX64x86 = C:\Program Files (x86)\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\intel64 +DEFINE ICC11_ASMX64x86 = C:\Program Files (x86)\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\intel64 DEFINE ICC11_BIN64 = C:\Program Files\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\ia32_ia64 DEFINE ICC11_BIN64x86 = C:\Program Files (x86)\Intel\Compiler\DEF(ICC11_VERSION)\DEF(ICC11_BUILD)\bin\ia32_ia64 @@ -3308,8 +3308,8 @@ RELEASE_XCODE32_ARM_ASM_FLAGS = $(ARCHASM_FLAGS) *_XCODE32_ARM_PP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -E -x assembler-with-cpp -include $(DEST_DIR_DEBUG)/AutoGen.h *_XCODE32_ARM_VFRPP_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -x c -E -P -DVFRCOMPILE --include $(DEST_DIR_DEBUG)/$(MODULE_NAME)StrDefs.h - DEBUG_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-interwork -g -Oz -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h -mdynamic-no-pic -fno-stack-protector -RELEASE_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-interwork -Oz -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h -mdynamic-no-pic -fno-stack-protector + DEBUG_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-interwork -g -Oz -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h -fno-stack-protector +RELEASE_XCODE32_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mthumb-interwork -Oz -mabi=aapcs -mapcs -fno-short-enums -save-temps -combine -fshort-wchar -fno-strict-aliasing -Wall -Werror -Wno-missing-braces -fomit-frame-pointer -c -include AutoGen.h -fno-stack-protector #################################################################################### @@ -3481,6 +3481,12 @@ RELEASE_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mfpu=fpa -mlitt *_*_*_OPTROM_PATH = EfiRom *_*_*_OPTROM_FLAGS = -e +################## +# GenFw tool definitions +################## +*_*_*_GENFW_PATH = GenFw +*_*_*_GENFW_FLAGS = + ################## # Asl Compiler definitions ################## @@ -3501,3 +3507,8 @@ RELEASE_ARMGCC_ARM_CC_FLAGS = $(ARCHCC_FLAGS) $(PLATFORM_FLAGS) -mfpu=fpa -mlitt *_*_*_TIANO_PATH = TianoCompress *_*_*_TIANO_GUID = A31280AD-481E-41B6-95E8-127F4C984779 +################## +# BPDG tool definitions +################## +*_*_*_VPDTOOL_PATH = BPDG +*_*_*_VPDTOOL_GUID = 8C3D856A-9BE6-468E-850A-24F7A8D38E08 diff --git a/BaseTools/Source/C/Makefiles/header.makefile b/BaseTools/Source/C/Makefiles/header.makefile index 96b3d15e8a..841803e51d 100644 --- a/BaseTools/Source/C/Makefiles/header.makefile +++ b/BaseTools/Source/C/Makefiles/header.makefile @@ -1,10 +1,10 @@ ## @file # -# The makefile can be invoked with -# ARCH = x86_64 or x64 for EM64T build -# ARCH = ia32 or IA32 for IA32 build -# ARCH = ia64 or IA64 for IA64 build -# +# The makefile can be invoked with +# ARCH = x86_64 or x64 for EM64T build +# ARCH = ia32 or IA32 for IA32 build +# ARCH = ia64 or IA64 for IA64 build +# # Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License @@ -12,55 +12,52 @@ # http://opensource.org/licenses/bsd-license.php # # THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. - -ARCH ?= IA32 - -CYGWIN:=$(findstring CYGWIN, $(shell uname -s)) -LINUX:=$(findstring Linux, $(shell uname -s)) -DARWIN:=$(findstring Darwin, $(shell uname -s)) - -CC = gcc -CXX = g++ -AS = gcc -AR = ar -LD = ld -LINKER ?= $(CC) -ifeq ($(ARCH), IA32) -ARCH_INCLUDE = -I $(MAKEROOT)/Include/Ia32/ -endif - -ifeq ($(ARCH), X64) -ARCH_INCLUDE = -I $(MAKEROOT)/Include/X64/ -endif - -INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE) -CPPFLAGS = $(INCLUDE) -CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fno-merge-constants -nostdlib -Wall -Werror -c -g -LFLAGS = - -# -# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns -i386, but gcc defaults -# to x86_64. So make sure tools match uname -m -# -uname_s = $(shell uname -s) -uname_m = $(shell uname -m) -ifeq ($(uname_s),Darwin) -ifeq ($(uname_m),i386) - CFLAGS += -arch i386 - CPPFLAGS += -arch i386 - LFLAGS += -arch i386 -endif -endif - -.PHONY: all -.PHONY: install -.PHONY: clean - -all: - -$(MAKEROOT)/libs: - mkdir $(MAKEROOT)/libs - -$(MAKEROOT)/bin: - mkdir $(MAKEROOT)/bin +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. + +ARCH ?= IA32 + +CYGWIN:=$(findstring CYGWIN, $(shell uname -s)) +LINUX:=$(findstring Linux, $(shell uname -s)) +DARWIN:=$(findstring Darwin, $(shell uname -s)) + +CC = gcc +CXX = g++ +AS = gcc +AR = ar +LD = ld +LINKER ?= $(CC) +ifeq ($(ARCH), IA32) +ARCH_INCLUDE = -I $(MAKEROOT)/Include/Ia32/ +endif + +ifeq ($(ARCH), X64) +ARCH_INCLUDE = -I $(MAKEROOT)/Include/X64/ +endif + +INCLUDE = $(TOOL_INCLUDE) -I $(MAKEROOT) -I $(MAKEROOT)/Include/Common -I $(MAKEROOT)/Include/ -I $(MAKEROOT)/Include/IndustryStandard -I $(MAKEROOT)/Common/ -I .. -I . $(ARCH_INCLUDE) +CPPFLAGS = $(INCLUDE) +CFLAGS = -MD -fshort-wchar -fno-strict-aliasing -fno-merge-constants -nostdlib -Wall -Werror -c -g +LFLAGS = + +# +# Snow Leopard is a 32-bit and 64-bit environment. uname -m returns -i386, but gcc defaults +# to x86_64. So make sure tools match uname -m +# +uname_s = $(shell uname -s) +ifeq ($(uname_s),Darwin) + CFLAGS += -arch i386 + CPPFLAGS += -arch i386 + LFLAGS += -arch i386 +endif + +.PHONY: all +.PHONY: install +.PHONY: clean + +all: + +$(MAKEROOT)/libs: + mkdir $(MAKEROOT)/libs + +$(MAKEROOT)/bin: + mkdir $(MAKEROOT)/bin diff --git a/BaseTools/Source/Python/AutoGen/AutoGen.py b/BaseTools/Source/Python/AutoGen/AutoGen.py index 3b8024c199..d95f40bf82 100644 --- a/BaseTools/Source/Python/AutoGen/AutoGen.py +++ b/BaseTools/Source/Python/AutoGen/AutoGen.py @@ -34,6 +34,7 @@ import Common.GlobalData as GlobalData from GenFds.FdfParser import * from CommonDataClass.CommonClass import SkuInfoClass from Workspace.BuildClassObject import * +import Common.VpdInfoFile as VpdInfoFile ## Regular expression for splitting Dependency Expression stirng into tokens gDepexTokenPattern = re.compile("(\(|\)|\w+| \S+\.inf)") @@ -244,7 +245,7 @@ class WorkspaceAutoGen(AutoGen): self._BuildCommand = self.AutoGenObjectList[0].BuildCommand return self._BuildCommand - ## Create makefile for the platform and mdoules in it + ## Create makefile for the platform and modules in it # # @param CreateDepsMakeFile Flag indicating if the makefile for # modules will be created as well @@ -476,19 +477,141 @@ class PlatformAutoGen(AutoGen): UnicodePcdArray = [] HiiPcdArray = [] OtherPcdArray = [] - for Pcd in self._DynamicPcdList: - # just pick the a value to determine whether is unicode string type - Sku = Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[0]] - PcdValue = Sku.DefaultValue - if Pcd.DatumType == 'VOID*' and PcdValue.startswith("L"): - # if found PCD which datum value is unicode string the insert to left size of UnicodeIndex - UnicodePcdArray.append(Pcd) - elif len(Sku.VariableName) > 0: - # if found HII type PCD then insert to right of UnicodeIndex - HiiPcdArray.append(Pcd) - else: - OtherPcdArray.append(Pcd) - del self._DynamicPcdList[:] + VpdFile = VpdInfoFile.VpdInfoFile() + NeedProcessVpdMapFile = False + + if (self.Workspace.ArchList[-1] == self.Arch): + for Pcd in self._DynamicPcdList: + + # just pick the a value to determine whether is unicode string type + Sku = Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[0]] + Sku.VpdOffset = Sku.VpdOffset.strip() + + PcdValue = Sku.DefaultValue + if Pcd.DatumType == 'VOID*' and PcdValue.startswith("L"): + # if found PCD which datum value is unicode string the insert to left size of UnicodeIndex + UnicodePcdArray.append(Pcd) + elif len(Sku.VariableName) > 0: + # if found HII type PCD then insert to right of UnicodeIndex + HiiPcdArray.append(Pcd) + else: + OtherPcdArray.append(Pcd) + + if Pcd.Type in [TAB_PCDS_DYNAMIC_VPD, TAB_PCDS_DYNAMIC_EX_VPD]: + if not (self.Platform.VpdToolGuid == None or self.Platform.VpdToolGuid == ''): + # + # Fix the optional data of VPD PCD. + # + if (Pcd.DatumType.strip() != "VOID*"): + if Sku.DefaultValue == '': + Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[0]].DefaultValue = Pcd.MaxDatumSize + Pcd.MaxDatumSize = None + else: + EdkLogger.error("build", AUTOGEN_ERROR, "PCD setting error", + File=self.MetaFile, + ExtraData="\n\tPCD: %s.%s format incorrect in DSC: %s\n\t\t\n" + % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, self.Platform.MetaFile.Path)) + + VpdFile.Add(Pcd, Sku.VpdOffset) + # if the offset of a VPD is *, then it need to be fixed up by third party tool. + if not NeedProcessVpdMapFile and Sku.VpdOffset == "*": + NeedProcessVpdMapFile = True + + # + # Fix the PCDs define in VPD PCD section that never referenced by module. + # An example is PCD for signature usage. + # + for DscPcd in self.Platform.Pcds: + DscPcdEntry = self.Platform.Pcds[DscPcd] + if DscPcdEntry.Type in [TAB_PCDS_DYNAMIC_VPD, TAB_PCDS_DYNAMIC_EX_VPD]: + if not (self.Platform.VpdToolGuid == None or self.Platform.VpdToolGuid == ''): + FoundFlag = False + for VpdPcd in VpdFile._VpdArray.keys(): + # This PCD has been referenced by module + if (VpdPcd.TokenSpaceGuidCName == DscPcdEntry.TokenSpaceGuidCName) and \ + (VpdPcd.TokenCName == DscPcdEntry.TokenCName): + FoundFlag = True + + # Not found, it should be signature + if not FoundFlag : + # just pick the a value to determine whether is unicode string type + Sku = DscPcdEntry.SkuInfoList[DscPcdEntry.SkuInfoList.keys()[0]] + Sku.VpdOffset = Sku.VpdOffset.strip() + + # Need to iterate DEC pcd information to get the value & datumtype + for eachDec in self.PackageList: + for DecPcd in eachDec.Pcds: + DecPcdEntry = eachDec.Pcds[DecPcd] + if (DecPcdEntry.TokenSpaceGuidCName == DscPcdEntry.TokenSpaceGuidCName) and \ + (DecPcdEntry.TokenCName == DscPcdEntry.TokenCName): + DscPcdEntry.DatumType = DecPcdEntry.DatumType + DscPcdEntry.DefaultValue = DecPcdEntry.DefaultValue + Sku.DefaultValue = DecPcdEntry.DefaultValue + + VpdFile.Add(DscPcdEntry, Sku.VpdOffset) + # if the offset of a VPD is *, then it need to be fixed up by third party tool. + if not NeedProcessVpdMapFile and Sku.VpdOffset == "*": + NeedProcessVpdMapFile = True + + + if (self.Platform.FlashDefinition == None or self.Platform.FlashDefinition == '') and \ + VpdFile.GetCount() != 0: + EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE, + "Fail to get FLASH_DEFINITION definition in DSC file %s which is required when DSC contains VPD PCD." % str(self.Platform.MetaFile)) + + if VpdFile.GetCount() != 0: + WorkspaceDb = self.BuildDatabase.WorkspaceDb + DscTimeStamp = WorkspaceDb.GetTimeStamp(WorkspaceDb.GetFileId(str(self.Platform.MetaFile))) + FvPath = os.path.join(self.BuildDir, "FV") + if not os.path.exists(FvPath): + try: + os.makedirs(FvPath) + except: + EdkLogger.error("build", FILE_WRITE_FAILURE, "Fail to create FV folder under %s" % self.BuildDir) + + VpdFileName = self.Platform.VpdFileName + if VpdFileName == None or VpdFileName == "" : + VpdFilePath = os.path.join(FvPath, "%s.txt" % self.Platform.VpdToolGuid) + else : + VpdFilePath = os.path.join(FvPath, "%s.txt" % VpdFileName) + + if not os.path.exists(VpdFilePath) or os.path.getmtime(VpdFilePath) < DscTimeStamp: + VpdFile.Write(VpdFilePath) + + # retrieve BPDG tool's path from tool_def.txt according to VPD_TOOL_GUID defined in DSC file. + BPDGToolName = None + for ToolDef in self.ToolDefinition.values(): + if ToolDef.has_key("GUID") and ToolDef["GUID"] == self.Platform.VpdToolGuid: + if not ToolDef.has_key("PATH"): + EdkLogger.error("build", ATTRIBUTE_NOT_AVAILABLE, "PATH attribute was not provided for BPDG guid tool %s in tools_def.txt" % self.Platform.VpdToolGuid) + BPDGToolName = ToolDef["PATH"] + break + # Call third party GUID BPDG tool. + if BPDGToolName != None: + VpdInfoFile.CallExtenalBPDGTool(BPDGToolName, VpdFilePath, VpdFileName) + else: + EdkLogger.error("Build", FILE_NOT_FOUND, "Fail to find third-party BPDG tool to process VPD PCDs. BPDG Guid tool need to be defined in tools_def.txt and VPD_TOOL_GUID need to be provided in DSC file.") + + # Process VPD map file generated by third party BPDG tool + if NeedProcessVpdMapFile: + if VpdFileName == None or VpdFileName == "" : + VpdMapFilePath = os.path.join(self.BuildDir, "FV", "%s.map" % self.Platform.VpdToolGuid) + else : + VpdMapFilePath = os.path.join(self.BuildDir, "FV", "%s.map" % VpdFileName) + if os.path.exists(VpdMapFilePath): + VpdFile.Read(VpdMapFilePath) + + # Fixup "*" offset + for Pcd in self._DynamicPcdList: + # just pick the a value to determine whether is unicode string type + Sku = Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[0]] + if Sku.VpdOffset == "*": + Sku.VpdOffset = VpdFile.GetOffset(Pcd)[0] + else: + EdkLogger.error("build", FILE_READ_FAILURE, "Can not find VPD map file %s to fix up VPD offset." % VpdMapFilePath) + + # Delete the DynamicPcdList At the last time enter into this function + del self._DynamicPcdList[:] self._DynamicPcdList.extend(UnicodePcdArray) self._DynamicPcdList.extend(HiiPcdArray) self._DynamicPcdList.extend(OtherPcdArray) @@ -709,10 +832,14 @@ class PlatformAutoGen(AutoGen): ## Get list of non-dynamic PCDs def _GetNonDynamicPcdList(self): + if self._NonDynamicPcdList == None: + self.CollectPlatformDynamicPcds() return self._NonDynamicPcdList ## Get list of dynamic PCDs def _GetDynamicPcdList(self): + if self._DynamicPcdList == None: + self.CollectPlatformDynamicPcds() return self._DynamicPcdList ## Generate Token Number for all PCD @@ -952,6 +1079,10 @@ class PlatformAutoGen(AutoGen): if FromPcd != None: if ToPcd.Pending and FromPcd.Type not in [None, '']: ToPcd.Type = FromPcd.Type + elif (ToPcd.Type not in [None, '']) and (FromPcd.Type not in [None, ''])\ + and (ToPcd.Type != FromPcd.Type) and (ToPcd.Type in FromPcd.Type): + if ToPcd.Type.strip() == "DynamicEx": + ToPcd.Type = FromPcd.Type elif ToPcd.Type not in [None, ''] and FromPcd.Type not in [None, ''] \ and ToPcd.Type != FromPcd.Type: EdkLogger.error("build", OPTION_CONFLICT, "Mismatched PCD type", diff --git a/BaseTools/Source/Python/AutoGen/GenC.py b/BaseTools/Source/Python/AutoGen/GenC.py index 1db68ebec5..2a133d3812 100644 --- a/BaseTools/Source/Python/AutoGen/GenC.py +++ b/BaseTools/Source/Python/AutoGen/GenC.py @@ -1028,7 +1028,9 @@ def CreateModulePcdCode(Info, AutoGenC, AutoGenH, Pcd): ArraySize = ArraySize / 2; if ArraySize < (len(Value) + 1): - ArraySize = len(Value) + 1 + EdkLogger.error("build", AUTOGEN_ERROR, + "The maximum size of VOID* type PCD '%s.%s' is less than its actual size occupied." % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName), + ExtraData="[%s]" % str(Info)) Value = NewValue + '0 }' Array = '[%d]' % ArraySize # @@ -1262,10 +1264,11 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase): VariableHeadValueList = [] Pcd.InitString = 'UNINIT' - if Pcd.Type in ["DynamicVpd", "DynamicExVpd"]: - Pcd.TokenTypeList = ['PCD_TYPE_VPD'] - elif Pcd.DatumType == 'VOID*': - Pcd.TokenTypeList = ['PCD_TYPE_STRING'] + if Pcd.DatumType == 'VOID*': + if Pcd.Type not in ["DynamicVpd", "DynamicExVpd"]: + Pcd.TokenTypeList = ['PCD_TYPE_STRING'] + else: + Pcd.TokenTypeList = [] elif Pcd.DatumType == 'BOOLEAN': Pcd.TokenTypeList = ['PCD_DATUM_TYPE_UINT8'] else: @@ -1364,8 +1367,11 @@ def CreatePcdDatabasePhaseSpecificAutoGen (Platform, Phase): Dict['SIZE_TABLE_MAXIMUM_LENGTH'].append(Pcd.MaxDatumSize) if Pcd.MaxDatumSize != '': MaxDatumSize = int(Pcd.MaxDatumSize, 0) - if MaxDatumSize > Size: - Size = MaxDatumSize + if MaxDatumSize < Size: + EdkLogger.error("build", AUTOGEN_ERROR, + "The maximum size of VOID* type PCD '%s.%s' is less than its actual size occupied." % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName), + ExtraData="[%s]" % str(Platform)) + Size = MaxDatumSize Dict['STRING_TABLE_LENGTH'].append(Size) StringTableIndex += 1 StringTableSize += (Size) diff --git a/BaseTools/Source/Python/Common/DataType.py b/BaseTools/Source/Python/Common/DataType.py index 982d710ce5..62a23ea773 100644 --- a/BaseTools/Source/Python/Common/DataType.py +++ b/BaseTools/Source/Python/Common/DataType.py @@ -334,6 +334,7 @@ TAB_DEC_DEFINES_DEC_SPECIFICATION = 'DEC_SPECIFICATION' TAB_DEC_DEFINES_PACKAGE_NAME = 'PACKAGE_NAME' TAB_DEC_DEFINES_PACKAGE_GUID = 'PACKAGE_GUID' TAB_DEC_DEFINES_PACKAGE_VERSION = 'PACKAGE_VERSION' +TAB_DEC_DEFINES_PKG_UNI_FILE = 'PKG_UNI_FILE' # # Dsc Definitions @@ -353,6 +354,8 @@ TAB_DSC_DEFINES_MAKEFILE_NAME = 'MAKEFILE_NAME' TAB_DSC_DEFINES_BS_BASE_ADDRESS = 'BsBaseAddress' TAB_DSC_DEFINES_RT_BASE_ADDRESS = 'RtBaseAddress' TAB_DSC_DEFINES_DEFINE = 'DEFINE' +TAB_DSC_DEFINES_VPD_TOOL_GUID = 'VPD_TOOL_GUID' +TAB_DSC_DEFINES_VPD_FILENAME = 'VPD_FILENAME' TAB_FIX_LOAD_TOP_MEMORY_ADDRESS = 'FIX_LOAD_TOP_MEMORY_ADDRESS' # diff --git a/BaseTools/Source/Python/Common/Misc.py b/BaseTools/Source/Python/Common/Misc.py index 126985fdac..311749285f 100644 --- a/BaseTools/Source/Python/Common/Misc.py +++ b/BaseTools/Source/Python/Common/Misc.py @@ -719,7 +719,7 @@ class TemplateString(object): while Template: MatchObj = gPlaceholderPattern.search(Template, SearchFrom) if not MatchObj: - if MatchEnd < len(Template): + if MatchEnd <= len(Template): TemplateSection = TemplateString.Section(Template[SectionStart:], PlaceHolderList) TemplateSectionList.append(TemplateSection) break diff --git a/BaseTools/Source/Python/Common/String.py b/BaseTools/Source/Python/Common/String.py index 896fb7da0f..283e913b3b 100644 --- a/BaseTools/Source/Python/Common/String.py +++ b/BaseTools/Source/Python/Common/String.py @@ -296,6 +296,50 @@ def CleanString(Line, CommentCharacter = DataType.TAB_COMMENT_SPLIT, AllowCppSty return Line +## CleanString2 +# +# Split comments in a string +# Remove spaces +# +# @param Line: The string to be cleaned +# @param CommentCharacter: Comment char, used to ignore comment content, default is DataType.TAB_COMMENT_SPLIT +# +# @retval Path Formatted path +# +def CleanString2(Line, CommentCharacter = DataType.TAB_COMMENT_SPLIT, AllowCppStyleComment=False): + # + # remove whitespace + # + Line = Line.strip(); + # + # Replace R8's comment character + # + if AllowCppStyleComment: + Line = Line.replace(DataType.TAB_COMMENT_R8_SPLIT, CommentCharacter) + # + # separate comments and statements + # + LineParts = Line.split(CommentCharacter, 1); + # + # remove whitespace again + # + Line = LineParts[0].strip(); + if len(LineParts) > 1: + Comment = LineParts[1].strip() + # Remove prefixed and trailing comment characters + Start = 0 + End = len(Comment) + while Start < End and Comment.startswith(CommentCharacter, Start, End): + Start += 1 + while End >= 0 and Comment.endswith(CommentCharacter, Start, End): + End -= 1 + Comment = Comment[Start:End] + Comment = Comment.strip() + else: + Comment = '' + + return Line, Comment + ## GetMultipleValuesOfKeyFromLines # # Parse multiple strings to clean comment and spaces diff --git a/BaseTools/Source/Python/Common/VpdInfoFile.py b/BaseTools/Source/Python/Common/VpdInfoFile.py new file mode 100644 index 0000000000..0111744cc0 --- /dev/null +++ b/BaseTools/Source/Python/Common/VpdInfoFile.py @@ -0,0 +1,259 @@ +## @file +# +# This package manage the VPD PCD information file which will be generated +# by build tool's autogen. +# The VPD PCD information file will be input for third-party BPDG tool which +# is pointed by *_*_*_VPD_TOOL_GUID in conf/tools_def.txt +# +# +# Copyright (c) 2010, Intel Corporation. All rights reserved.
+# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# +import os +import re +import Common.EdkLogger as EdkLogger +import Common.BuildToolError as BuildToolError +import subprocess + +FILE_COMMENT_TEMPLATE = \ +""" +## @file +# +# THIS IS AUTO-GENERATED FILE BY BUILD TOOLS AND PLEASE DO NOT MAKE MODIFICATION. +# +# This file lists all VPD informations for a platform collected by build.exe. +# +# Copyright (c) 2010, Intel Corporation. All rights reserved.
+# This program and the accompanying materials +# are licensed and made available under the terms and conditions of the BSD License +# which accompanies this distribution. The full text of the license may be found at +# http://opensource.org/licenses/bsd-license.php +# +# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +# + +""" + +## The class manage VpdInfoFile. +# +# This file contains an ordered (based on position in the DSC file) list of the PCDs specified in the platform description file (DSC). The Value field that will be assigned to the PCD comes from the DSC file, INF file (if not defined in the DSC file) or the DEC file (if not defined in the INF file). This file is used as an input to the BPDG tool. +# Format for this file (using EBNF notation) is: +# :: = [] +# []* +# ::= ["#" ]* +# ::= "|" "|" "|" +# ::= "." +# ::= C Variable Name of the Token Space GUID +# ::= C Variable Name of the PCD +# ::= {"*"} {} +# ::= "0x" (a-fA-F0-9){1,8} +# ::= +# ::= {} {} {} {} +# ::= (0-9)+ +# ::= ["L"] +# ::= 0x22 +# ::= {} {} +# ::= "{" ["," ]* "}" +# ::= ["," ]* +# +class VpdInfoFile: + + ## The mapping dictionary from datum type to size string. + _MAX_SIZE_TYPE = {"BOOLEAN":"1", "UINT8":"1", "UINT16":"2", "UINT32":"4", "UINT64":"8"} + _rVpdPcdLine = None + ## Constructor + def __init__(self): + ## Dictionary for VPD in following format + # + # Key : PcdClassObject instance. + # @see BuildClassObject.PcdClassObject + # Value : offset in different SKU such as [sku1_offset, sku2_offset] + self._VpdArray = {} + + ## Add a VPD PCD collected from platform's autogen when building. + # + # @param vpds The list of VPD PCD collected for a platform. + # @see BuildClassObject.PcdClassObject + # + # @param offset integer value for VPD's offset in specific SKU. + # + def Add(self, Vpd, Offset): + if (Vpd == None): + EdkLogger.error("VpdInfoFile", BuildToolError.ATTRIBUTE_UNKNOWN_ERROR, "Invalid VPD PCD entry.") + + if not (Offset >= 0 or Offset == "*"): + EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, "Invalid offset parameter: %s." % Offset) + + if Vpd.DatumType == "VOID*": + if Vpd.MaxDatumSize <= 0: + EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, + "Invalid max datum size for VPD PCD %s.%s" % (Vpd.TokenSpaceGuidCName, Vpd.TokenCName)) + elif Vpd.DatumType in ["BOOLEAN", "UINT8", "UINT16", "UINT32", "UINT64"]: + if Vpd.MaxDatumSize == None or Vpd.MaxDatumSize == "": + Vpd.MaxDatumSize = VpdInfoFile._MAX_SIZE_TYPE[Vpd.DatumType] + else: + EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, + "Invalid DatumType %s for VPD PCD %s.%s" % (Vpd.DatumType, Vpd.TokenSpaceGuidCName, Vpd.TokenCName)) + + if Vpd not in self._VpdArray.keys(): + # + # If there is no Vpd instance in dict, that imply this offset for a given SKU is a new one + # + self._VpdArray[Vpd] = [Offset] + else: + # + # If there is an offset for a specific SKU in dict, then append this offset for other sku to array. + # + self._VpdArray[Vpd].append(Offset) + + + ## Generate VPD PCD information into a text file + # + # If parameter FilePath is invalid, then assert. + # If + # @param FilePath The given file path which would hold VPD information + def Write(self, FilePath): + if not (FilePath != None or len(FilePath) != 0): + EdkLogger.error("VpdInfoFile", BuildToolError.PARAMETER_INVALID, + "Invalid parameter FilePath: %s." % FilePath) + try: + fd = open(FilePath, "w") + except: + EdkLogger.error("VpdInfoFile", + BuildToolError.FILE_OPEN_FAILURE, + "Fail to open file %s for written." % FilePath) + + try: + # write file header + fd.write(FILE_COMMENT_TEMPLATE) + + # write each of PCD in VPD type + for Pcd in self._VpdArray.keys(): + for Offset in self._VpdArray[Pcd]: + PcdValue = str(Pcd.SkuInfoList[Pcd.SkuInfoList.keys()[0]].DefaultValue).strip() + if PcdValue == "" : + PcdValue = Pcd.DefaultValue + + fd.write("%s.%s|%s|%s|%s \n" % (Pcd.TokenSpaceGuidCName, Pcd.TokenCName, str(Offset).strip(), str(Pcd.MaxDatumSize).strip(),PcdValue)) + except: + EdkLogger.error("VpdInfoFile", + BuildToolError.FILE_WRITE_FAILURE, + "Fail to write file %s" % FilePath) + fd.close() + + ## Read an existing VPD PCD info file. + # + # This routine will read VPD PCD information from existing file and construct + # internal PcdClassObject array. + # This routine could be used by third-party tool to parse VPD info file content. + # + # @param FilePath The full path string for existing VPD PCD info file. + def Read(self, FilePath): + try: + fd = open(FilePath, "r") + except: + EdkLogger.error("VpdInfoFile", + BuildToolError.FILE_OPEN_FAILURE, + "Fail to open file %s for written." % FilePath) + Lines = fd.readlines() + for Line in Lines: + Line = Line.strip() + if len(Line) == 0 or Line.startswith("#"): + continue + + # + # the line must follow output format defined in BPDG spec. + # + try: + PcdName, Offset, Size, Value = Line.split("#")[0].split("|") + TokenSpaceName, PcdTokenName = PcdName.split(".") + except: + EdkLogger.error("BPDG", BuildToolError.PARSER_ERROR, "Fail to parse VPD information file %s" % FilePath) + + Found = False + for VpdObject in self._VpdArray.keys(): + if VpdObject.TokenSpaceGuidCName == TokenSpaceName and VpdObject.TokenCName == PcdTokenName.strip(): + if self._VpdArray[VpdObject][0] == "*": + if Offset == "*": + EdkLogger.error("BPDG", BuildToolError.FORMAT_INVALID, "The offset of %s has not been fixed up by third-party BPDG tool." % PcdName) + + self._VpdArray[VpdObject][0] = Offset + Found = True + break + if not Found: + EdkLogger.error("BPDG", BuildToolError.PARSER_ERROR, "Can not find PCD defined in VPD guid file.") + + ## Get count of VPD PCD collected from platform's autogen when building. + # + # @return The integer count value + def GetCount(self): + Count = 0 + for OffsetList in self._VpdArray.values(): + Count += len(OffsetList) + + return Count + + ## Get an offset value for a given VPD PCD + # + # Because BPDG only support one Sku, so only return offset for SKU default. + # + # @param vpd A given VPD PCD + def GetOffset(self, vpd): + if not self._VpdArray.has_key(vpd): + return None + + if len(self._VpdArray[vpd]) == 0: + return None + + return self._VpdArray[vpd] + +## Call external BPDG tool to process VPD file +# +# @param ToolPath The string path name for BPDG tool +# @param VpdFileName The string path name for VPD information guid.txt +# +def CallExtenalBPDGTool(ToolPath, VpdFilePath, VpdFileName): + assert ToolPath != None, "Invalid parameter ToolPath" + assert VpdFilePath != None and os.path.exists(VpdFilePath), "Invalid parameter VpdFileName" + + OutputDir = os.path.dirname(VpdFilePath) + if (VpdFileName == None or VpdFileName == "") : + FileName = os.path.basename(VpdFilePath) + BaseName, ext = os.path.splitext(FileName) + OutputMapFileName = os.path.join(OutputDir, "%s.map" % BaseName) + OutputBinFileName = os.path.join(OutputDir, "%s.bin" % BaseName) + else : + OutputMapFileName = os.path.join(OutputDir, "%s.map" % VpdFileName) + OutputBinFileName = os.path.join(OutputDir, "%s.bin" % VpdFileName) + + try: + PopenObject = subprocess.Popen([ToolPath, + '-o', OutputBinFileName, + '-m', OutputMapFileName, + '-s', + '-f', + '-v', + VpdFilePath], + stdout=subprocess.PIPE, + stderr= subprocess.PIPE) + except Exception, X: + EdkLogger.error("BPDG", BuildToolError.COMMAND_FAILURE, ExtraData="%s" % (str(X))) + (out, error) = PopenObject.communicate() + print out + while PopenObject.returncode == None : + PopenObject.wait() + + if PopenObject.returncode != 0: + if PopenObject.returncode != 0: + EdkLogger.debug(EdkLogger.DEBUG_1, "Fail to call BPDG tool", str(error)) + EdkLogger.error("BPDG", BuildToolError.COMMAND_FAILURE, "Fail to execute BPDG tool with exit code: %d, the error message is: \n %s" % \ + (PopenObject.returncode, str(error))) + + return PopenObject.returncode diff --git a/BaseTools/Source/Python/CommonDataClass/DataClass.py b/BaseTools/Source/Python/CommonDataClass/DataClass.py index 2615bd17b0..ebb0358b0b 100644 --- a/BaseTools/Source/Python/CommonDataClass/DataClass.py +++ b/BaseTools/Source/Python/CommonDataClass/DataClass.py @@ -29,6 +29,7 @@ MODEL_FILE_DSC = 1013 MODEL_FILE_FDF = 1014 MODEL_FILE_INC = 1015 MODEL_FILE_CIF = 1016 +MODEL_FILE_OTHERS = 1099 MODEL_IDENTIFIER_FILE_HEADER = 2001 MODEL_IDENTIFIER_FUNCTION_HEADER = 2002 @@ -91,6 +92,8 @@ MODEL_META_DATA_NMAKE = 5012 MODEL_META_DATA_CONDITIONAL_STATEMENT_ELSEIF = 50013 MODEL_META_DATA_CONDITIONAL_STATEMENT_ENDIF = 5014 MODEL_META_DATA_COMPONENT_SOURCE_OVERRIDE_PATH = 5015 +MODEL_META_DATA_COMMENT = 5016 +MODEL_META_DATA_GLOBAL_DEFINE = 5017 MODEL_EXTERNAL_DEPENDENCY = 10000 @@ -103,6 +106,8 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN), ('MODEL_FILE_DSC', MODEL_FILE_DSC), ('MODEL_FILE_FDF', MODEL_FILE_FDF), ('MODEL_FILE_INC', MODEL_FILE_INC), + ('MODEL_FILE_CIF', MODEL_FILE_CIF), + ('MODEL_FILE_OTHERS', MODEL_FILE_OTHERS), ('MODEL_IDENTIFIER_FILE_HEADER', MODEL_IDENTIFIER_FILE_HEADER), ('MODEL_IDENTIFIER_FUNCTION_HEADER', MODEL_IDENTIFIER_FUNCTION_HEADER), ('MODEL_IDENTIFIER_COMMENT', MODEL_IDENTIFIER_COMMENT), @@ -159,16 +164,17 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN), ("MODEL_META_DATA_COMPONENT", MODEL_META_DATA_COMPONENT), ('MODEL_META_DATA_USER_EXTENSION', MODEL_META_DATA_USER_EXTENSION), ('MODEL_META_DATA_PACKAGE', MODEL_META_DATA_PACKAGE), - ('MODEL_META_DATA_NMAKE', MODEL_META_DATA_NMAKE) + ('MODEL_META_DATA_NMAKE', MODEL_META_DATA_NMAKE), + ('MODEL_META_DATA_COMMENT', MODEL_META_DATA_COMMENT) ] ## FunctionClass # # This class defines a structure of a function -# +# # @param ID: ID of a Function # @param Header: Header of a Function -# @param Modifier: Modifier of a Function +# @param Modifier: Modifier of a Function # @param Name: Name of a Function # @param ReturnStatement: ReturnStatement of a Funciont # @param StartLine: StartLine of a Function @@ -183,7 +189,7 @@ MODEL_LIST = [('MODEL_UNKNOWN', MODEL_UNKNOWN), # # @var ID: ID of a Function # @var Header: Header of a Function -# @var Modifier: Modifier of a Function +# @var Modifier: Modifier of a Function # @var Name: Name of a Function # @var ReturnStatement: ReturnStatement of a Funciont # @var StartLine: StartLine of a Function @@ -204,7 +210,7 @@ class FunctionClass(object): FunNameStartLine = -1, FunNameStartColumn = -1): self.ID = ID self.Header = Header - self.Modifier = Modifier + self.Modifier = Modifier self.Name = Name self.ReturnStatement = ReturnStatement self.StartLine = StartLine @@ -216,14 +222,14 @@ class FunctionClass(object): self.BelongsToFile = BelongsToFile self.FunNameStartLine = FunNameStartLine self.FunNameStartColumn = FunNameStartColumn - + self.IdentifierList = IdentifierList self.PcdList = PcdList ## IdentifierClass # # This class defines a structure of a variable -# +# # @param ID: ID of a Identifier # @param Modifier: Modifier of a Identifier # @param Type: Type of a Identifier @@ -269,7 +275,7 @@ class IdentifierClass(object): ## PcdClass # # This class defines a structure of a Pcd -# +# # @param ID: ID of a Pcd # @param CName: CName of a Pcd # @param TokenSpaceGuidCName: TokenSpaceGuidCName of a Pcd @@ -314,7 +320,7 @@ class PcdDataClass(object): ## FileClass # # This class defines a structure of a file -# +# # @param ID: ID of a File # @param Name: Name of a File # @param ExtName: ExtName of a File @@ -340,14 +346,14 @@ class PcdDataClass(object): class FileClass(object): def __init__(self, ID = -1, Name = '', ExtName = '', Path = '', FullPath = '', Model = MODEL_UNKNOWN, TimeStamp = '', \ FunctionList = [], IdentifierList = [], PcdList = []): - self.ID = ID + self.ID = ID self.Name = Name - self.ExtName = ExtName + self.ExtName = ExtName self.Path = Path self.FullPath = FullPath self.Model = Model self.TimeStamp = TimeStamp - + self.FunctionList = FunctionList self.IdentifierList = IdentifierList self.PcdList = PcdList diff --git a/BaseTools/Source/Python/Ecc/Check.py b/BaseTools/Source/Python/Ecc/Check.py index dbfedb514b..1e9ce34f8b 100644 --- a/BaseTools/Source/Python/Ecc/Check.py +++ b/BaseTools/Source/Python/Ecc/Check.py @@ -30,6 +30,7 @@ class Check(object): # Check all required checkpoints def Check(self): + self.GeneralCheck() self.MetaDataFileCheck() self.DoxygenCheck() self.IncludeFileCheck() @@ -38,6 +39,29 @@ class Check(object): self.FunctionLayoutCheck() self.NamingConventionCheck() + # General Checking + def GeneralCheck(self): + self.GeneralCheckNonAcsii() + + # Check whether file has non ACSII char + def GeneralCheckNonAcsii(self): + if EccGlobalData.gConfig.GeneralCheckNonAcsii == '1' or EccGlobalData.gConfig.GeneralCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': + EdkLogger.quiet("Checking Non-ACSII char in file ...") + SqlCommand = """select ID, FullPath, ExtName from File""" + RecordSet = EccGlobalData.gDb.TblInf.Exec(SqlCommand) + for Record in RecordSet: + if Record[2].upper() not in EccGlobalData.gConfig.BinaryExtList: + op = open(Record[1]).readlines() + IndexOfLine = 0 + for Line in op: + IndexOfLine += 1 + IndexOfChar = 0 + for Char in Line: + IndexOfChar += 1 + if ord(Char) > 126: + OtherMsg = "File %s has Non-ASCII char at line %s column %s" %(Record[1], IndexOfLine, IndexOfChar) + EccGlobalData.gDb.TblReport.Insert(ERROR_GENERAL_CHECK_NON_ACSII, OtherMsg = OtherMsg, BelongsToTable = 'File', BelongsToItem = Record[0]) + # C Function Layout Checking def FunctionLayoutCheck(self): self.FunctionLayoutCheckReturnType() @@ -67,22 +91,26 @@ class Check(object): if EccGlobalData.gConfig.CFunctionLayoutCheckReturnType == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking function layout return type ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c', '.h'): - FullName = os.path.join(Dirpath, F) - c.CheckFuncLayoutReturnType(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c', '.h'): +# FullName = os.path.join(Dirpath, F) +# c.CheckFuncLayoutReturnType(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + c.CheckFuncLayoutReturnType(FullName) # Check whether any optional functional modifiers exist and next to the return type def FunctionLayoutCheckModifier(self): if EccGlobalData.gConfig.CFunctionLayoutCheckOptionalFunctionalModifier == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking function layout modifier ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c', '.h'): - FullName = os.path.join(Dirpath, F) - c.CheckFuncLayoutModifier(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c', '.h'): +# FullName = os.path.join(Dirpath, F) +# c.CheckFuncLayoutModifier(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + c.CheckFuncLayoutModifier(FullName) # Check whether the next line contains the function name, left justified, followed by the beginning of the parameter list # Check whether the closing parenthesis is on its own line and also indented two spaces @@ -90,33 +118,41 @@ class Check(object): if EccGlobalData.gConfig.CFunctionLayoutCheckFunctionName == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking function layout function name ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c', '.h'): - FullName = os.path.join(Dirpath, F) - c.CheckFuncLayoutName(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c', '.h'): +# FullName = os.path.join(Dirpath, F) +# c.CheckFuncLayoutName(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + c.CheckFuncLayoutName(FullName) + # Check whether the function prototypes in include files have the same form as function definitions def FunctionLayoutCheckPrototype(self): if EccGlobalData.gConfig.CFunctionLayoutCheckFunctionPrototype == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking function layout function prototype ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[PROTOTYPE]" + FullName) - c.CheckFuncLayoutPrototype(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[PROTOTYPE]" + FullName) +# c.CheckFuncLayoutPrototype(FullName) + for FullName in EccGlobalData.gCFileList: + EdkLogger.quiet("[PROTOTYPE]" + FullName) + c.CheckFuncLayoutPrototype(FullName) # Check whether the body of a function is contained by open and close braces that must be in the first column def FunctionLayoutCheckBody(self): if EccGlobalData.gConfig.CFunctionLayoutCheckFunctionBody == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking function layout function body ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c'): - FullName = os.path.join(Dirpath, F) - c.CheckFuncLayoutBody(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c'): +# FullName = os.path.join(Dirpath, F) +# c.CheckFuncLayoutBody(FullName) + for FullName in EccGlobalData.gCFileList: + c.CheckFuncLayoutBody(FullName) # Check whether the data declarations is the first code in a module. # self.CFunctionLayoutCheckDataDeclaration = 1 @@ -125,11 +161,14 @@ class Check(object): if EccGlobalData.gConfig.CFunctionLayoutCheckNoInitOfVariable == '1' or EccGlobalData.gConfig.CFunctionLayoutCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking function layout local variables ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c'): - FullName = os.path.join(Dirpath, F) - c.CheckFuncLayoutLocalVariable(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c'): +# FullName = os.path.join(Dirpath, F) +# c.CheckFuncLayoutLocalVariable(FullName) + + for FullName in EccGlobalData.gCFileList: + c.CheckFuncLayoutLocalVariable(FullName) # Check whether no use of STATIC for functions # self.CFunctionLayoutCheckNoStatic = 1 @@ -150,22 +189,26 @@ class Check(object): if EccGlobalData.gConfig.DeclarationDataTypeCheckNoUseCType == '1' or EccGlobalData.gConfig.DeclarationDataTypeCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Declaration No use C type ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - c.CheckDeclNoUseCType(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# c.CheckDeclNoUseCType(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + c.CheckDeclNoUseCType(FullName) # Check whether the modifiers IN, OUT, OPTIONAL, and UNALIGNED are used only to qualify arguments to a function and should not appear in a data type declaration def DeclCheckInOutModifier(self): if EccGlobalData.gConfig.DeclarationDataTypeCheckInOutModifier == '1' or EccGlobalData.gConfig.DeclarationDataTypeCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Declaration argument modifier ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - c.CheckDeclArgModifier(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# c.CheckDeclArgModifier(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + c.CheckDeclArgModifier(FullName) # Check whether the EFIAPI modifier should be used at the entry of drivers, events, and member functions of protocols def DeclCheckEFIAPIModifier(self): @@ -177,24 +220,30 @@ class Check(object): if EccGlobalData.gConfig.DeclarationDataTypeCheckEnumeratedType == '1' or EccGlobalData.gConfig.DeclarationDataTypeCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Declaration enum typedef ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[ENUM]" + FullName) - c.CheckDeclEnumTypedef(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[ENUM]" + FullName) +# c.CheckDeclEnumTypedef(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + EdkLogger.quiet("[ENUM]" + FullName) + c.CheckDeclEnumTypedef(FullName) # Check whether Structure Type has a 'typedef' and the name is capital def DeclCheckStructureDeclaration(self): if EccGlobalData.gConfig.DeclarationDataTypeCheckStructureDeclaration == '1' or EccGlobalData.gConfig.DeclarationDataTypeCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Declaration struct typedef ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[STRUCT]" + FullName) - c.CheckDeclStructTypedef(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[STRUCT]" + FullName) +# c.CheckDeclStructTypedef(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + EdkLogger.quiet("[STRUCT]" + FullName) + c.CheckDeclStructTypedef(FullName) # Check whether having same Structure def DeclCheckSameStructure(self): @@ -223,12 +272,15 @@ class Check(object): if EccGlobalData.gConfig.DeclarationDataTypeCheckUnionType == '1' or EccGlobalData.gConfig.DeclarationDataTypeCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Declaration union typedef ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[UNION]" + FullName) - c.CheckDeclUnionTypedef(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[UNION]" + FullName) +# c.CheckDeclUnionTypedef(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + EdkLogger.quiet("[UNION]" + FullName) + c.CheckDeclUnionTypedef(FullName) # Predicate Expression Checking def PredicateExpressionCheck(self): @@ -241,35 +293,46 @@ class Check(object): if EccGlobalData.gConfig.PredicateExpressionCheckBooleanValue == '1' or EccGlobalData.gConfig.PredicateExpressionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking predicate expression Boolean value ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[BOOLEAN]" + FullName) - c.CheckBooleanValueComparison(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[BOOLEAN]" + FullName) +# c.CheckBooleanValueComparison(FullName) + for FullName in EccGlobalData.gCFileList: + EdkLogger.quiet("[BOOLEAN]" + FullName) + c.CheckBooleanValueComparison(FullName) # Check whether Non-Boolean comparisons use a compare operator (==, !=, >, < >=, <=). def PredicateExpressionCheckNonBooleanOperator(self): if EccGlobalData.gConfig.PredicateExpressionCheckNonBooleanOperator == '1' or EccGlobalData.gConfig.PredicateExpressionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking predicate expression Non-Boolean variable...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[NON-BOOLEAN]" + FullName) - c.CheckNonBooleanValueComparison(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[NON-BOOLEAN]" + FullName) +# c.CheckNonBooleanValueComparison(FullName) + for FullName in EccGlobalData.gCFileList: + EdkLogger.quiet("[NON-BOOLEAN]" + FullName) + c.CheckNonBooleanValueComparison(FullName) + # Check whether a comparison of any pointer to zero must be done via the NULL type def PredicateExpressionCheckComparisonNullType(self): if EccGlobalData.gConfig.PredicateExpressionCheckComparisonNullType == '1' or EccGlobalData.gConfig.PredicateExpressionCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking predicate expression NULL pointer ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.c'): - FullName = os.path.join(Dirpath, F) - EdkLogger.quiet("[POINTER]" + FullName) - c.CheckPointerNullComparison(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.c'): +# FullName = os.path.join(Dirpath, F) +# EdkLogger.quiet("[POINTER]" + FullName) +# c.CheckPointerNullComparison(FullName) + for FullName in EccGlobalData.gCFileList: + EdkLogger.quiet("[POINTER]" + FullName) + c.CheckPointerNullComparison(FullName) + # Include file checking def IncludeFileCheck(self): self.IncludeFileCheckIfndef() @@ -309,22 +372,26 @@ class Check(object): if EccGlobalData.gConfig.IncludeFileCheckIfndefStatement == '1' or EccGlobalData.gConfig.IncludeFileCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking header file ifndef ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h'): - FullName = os.path.join(Dirpath, F) - MsgList = c.CheckHeaderFileIfndef(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h'): +# FullName = os.path.join(Dirpath, F) +# MsgList = c.CheckHeaderFileIfndef(FullName) + for FullName in EccGlobalData.gHFileList: + MsgList = c.CheckHeaderFileIfndef(FullName) # Check whether include files NOT contain code or define data variables def IncludeFileCheckData(self): if EccGlobalData.gConfig.IncludeFileCheckData == '1' or EccGlobalData.gConfig.IncludeFileCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking header file data ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h'): - FullName = os.path.join(Dirpath, F) - MsgList = c.CheckHeaderFileData(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h'): +# FullName = os.path.join(Dirpath, F) +# MsgList = c.CheckHeaderFileData(FullName) + for FullName in EccGlobalData.gHFileList: + MsgList = c.CheckHeaderFileData(FullName) # Doxygen document checking def DoxygenCheck(self): @@ -347,24 +414,28 @@ class Check(object): MsgList = c.CheckFileHeaderDoxygenComments(FullName) elif Ext in ('.inf', '.dec', '.dsc', '.fdf'): FullName = os.path.join(Dirpath, F) - if not open(FullName).read().startswith('## @file'): + op = open(FullName).readlines() + if not op[0].startswith('## @file') and op[6].startswith('## @file') and op[7].startswith('## @file'): SqlStatement = """ select ID from File where FullPath like '%s'""" % FullName ResultSet = EccGlobalData.gDb.TblFile.Exec(SqlStatement) for Result in ResultSet: Msg = 'INF/DEC/DSC/FDF file header comment should begin with ""## @file""' EccGlobalData.gDb.TblReport.Insert(ERROR_DOXYGEN_CHECK_FILE_HEADER, Msg, "File", Result[0]) - + # Check whether the function headers are followed Doxygen special documentation blocks in section 2.3.5 def DoxygenCheckFunctionHeader(self): if EccGlobalData.gConfig.DoxygenCheckFunctionHeader == '1' or EccGlobalData.gConfig.DoxygenCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Doxygen function header ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - MsgList = c.CheckFuncHeaderDoxygenComments(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# MsgList = c.CheckFuncHeaderDoxygenComments(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + MsgList = c.CheckFuncHeaderDoxygenComments(FullName) + # Check whether the first line of text in a comment block is a brief description of the element being documented. # The brief description must end with a period. @@ -377,22 +448,26 @@ class Check(object): if EccGlobalData.gConfig.DoxygenCheckCommentFormat == '1' or EccGlobalData.gConfig.DoxygenCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Doxygen comment ///< ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - MsgList = c.CheckDoxygenTripleForwardSlash(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# MsgList = c.CheckDoxygenTripleForwardSlash(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + MsgList = c.CheckDoxygenTripleForwardSlash(FullName) # Check whether only Doxygen commands allowed to mark the code are @bug and @todo. def DoxygenCheckCommand(self): if EccGlobalData.gConfig.DoxygenCheckCommand == '1' or EccGlobalData.gConfig.DoxygenCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': EdkLogger.quiet("Checking Doxygen command ...") - for Dirpath, Dirnames, Filenames in self.WalkTree(): - for F in Filenames: - if os.path.splitext(F)[1] in ('.h', '.c'): - FullName = os.path.join(Dirpath, F) - MsgList = c.CheckDoxygenCommand(FullName) +# for Dirpath, Dirnames, Filenames in self.WalkTree(): +# for F in Filenames: +# if os.path.splitext(F)[1] in ('.h', '.c'): +# FullName = os.path.join(Dirpath, F) +# MsgList = c.CheckDoxygenCommand(FullName) + for FullName in EccGlobalData.gCFileList + EccGlobalData.gHFileList: + MsgList = c.CheckDoxygenCommand(FullName) # Meta-Data File Processing Checking def MetaDataFileCheck(self): @@ -556,7 +631,6 @@ class Check(object): SqlCommand2 = """select Name from File where ID = %s""" %Record[5] DscFileName = os.path.splitext(EccGlobalData.gDb.TblDsc.Exec(SqlCommand1)[0][0])[0] FdfFileName = os.path.splitext(EccGlobalData.gDb.TblDsc.Exec(SqlCommand2)[0][0])[0] - print DscFileName, 111, FdfFileName if DscFileName != FdfFileName: continue if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_PCD_DUPLICATE, Record[1]): @@ -680,8 +754,8 @@ class Check(object): SqlCommand = """ select ID from File where FullPath in (select B.Path || '\\' || A.Value1 from INF as A, File as B where A.Model = %s and A.BelongsToFile = %s - and B.ID = %s) - """ %(MODEL_EFI_SOURCE_FILE, BelongsToFile, BelongsToFile) + and B.ID = %s and (B.Model = %s or B.Model = %s)) + """ %(MODEL_EFI_SOURCE_FILE, BelongsToFile, BelongsToFile, MODEL_FILE_C, MODEL_FILE_H) TableSet = EccGlobalData.gDb.TblFile.Exec(SqlCommand) for Tbl in TableSet: TblName = 'Identifier' + str(Tbl[0]) @@ -714,7 +788,7 @@ class Check(object): if Path.startswith('\\') or Path.startswith('/'): Path = Path[1:] return Path - + # Check whether two module INFs under one workspace has the same FILE_GUID value def MetaDataFileCheckModuleFileGuidDuplication(self): if EccGlobalData.gConfig.MetaDataFileCheckModuleFileGuidDuplication == '1' or EccGlobalData.gConfig.MetaDataFileCheckAll == '1' or EccGlobalData.gConfig.CheckAll == '1': @@ -733,7 +807,7 @@ class Check(object): if not EccGlobalData.gException.IsException(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_GUID_DUPLICATION, InfPath1): Msg = "The FILE_GUID of INF file [%s] is duplicated with that of %s" % (InfPath1, InfPath2) EccGlobalData.gDb.TblReport.Insert(ERROR_META_DATA_FILE_CHECK_MODULE_FILE_GUID_DUPLICATION, OtherMsg = Msg, BelongsToTable = Table.Table, BelongsToItem = Record[0]) - + # Check whether these is duplicate Guid/Ppi/Protocol name def CheckGuidProtocolPpi(self, ErrorID, Model, Table): diff --git a/BaseTools/Source/Python/Ecc/Configuration.py b/BaseTools/Source/Python/Ecc/Configuration.py index 310cb5716b..1478ee6351 100644 --- a/BaseTools/Source/Python/Ecc/Configuration.py +++ b/BaseTools/Source/Python/Ecc/Configuration.py @@ -28,7 +28,7 @@ from Common.String import * class Configuration(object): def __init__(self, Filename): self.Filename = Filename - + self.Version = 0.1 ## Identify to if check all items @@ -49,14 +49,14 @@ class Configuration(object): # SpaceCheckAll # self.AutoCorrect = 0 - + # List customized Modifer here, split with ',' # Defaultly use the definition in class DataType self.ModifierList = MODIFIER_LIST - + ## General Checking self.GeneralCheckAll = 0 - + # Check whether NO Tab is used, replaced with spaces self.GeneralCheckNoTab = 1 # The width of Tab @@ -77,31 +77,33 @@ class Configuration(object): self.GeneralCheckCarriageReturn = 1 # Check whether the file exists self.GeneralCheckFileExistence = 1 - + # Check whether file has non ACSII char + self.GeneralCheckNonAcsii = 1 + ## Space Checking self.SpaceCheckAll = 1 - + ## Predicate Expression Checking self.PredicateExpressionCheckAll = 0 - + # Check whether Boolean values, variable type BOOLEAN not use explicit comparisons to TRUE or FALSE self.PredicateExpressionCheckBooleanValue = 1 - # Check whether Non-Boolean comparisons use a compare operator (==, !=, >, < >=, <=). + # Check whether Non-Boolean comparisons use a compare operator (==, !=, >, < >=, <=). self.PredicateExpressionCheckNonBooleanOperator = 1 # Check whether a comparison of any pointer to zero must be done via the NULL type self.PredicateExpressionCheckComparisonNullType = 1 - + ## Headers Checking self.HeaderCheckAll = 0 - + # Check whether File header exists self.HeaderCheckFile = 1 # Check whether Function header exists self.HeaderCheckFunction = 1 - + ## C Function Layout Checking self.CFunctionLayoutCheckAll = 0 - + # Check whether return type exists and in the first line self.CFunctionLayoutCheckReturnType = 1 # Check whether any optional functional modifiers exist and next to the return type @@ -119,10 +121,10 @@ class Configuration(object): self.CFunctionLayoutCheckNoInitOfVariable = 1 # Check whether no use of STATIC for functions self.CFunctionLayoutCheckNoStatic = 1 - + ## Include Files Checking self.IncludeFileCheckAll = 0 - + #Check whether having include files with same name self.IncludeFileCheckSameName = 1 # Check whether all include file contents is guarded by a #ifndef statement. @@ -132,10 +134,10 @@ class Configuration(object): # Check whether include files contain only public or only private data # Check whether include files NOT contain code or define data variables self.IncludeFileCheckData = 1 - + ## Declarations and Data Types Checking self.DeclarationDataTypeCheckAll = 0 - + # Check whether no use of int, unsigned, char, void, static, long in any .c, .h or .asl files. self.DeclarationDataTypeCheckNoUseCType = 1 # Check whether the modifiers IN, OUT, OPTIONAL, and UNALIGNED are used only to qualify arguments to a function and should not appear in a data type declaration @@ -150,10 +152,10 @@ class Configuration(object): self.DeclarationDataTypeCheckSameStructure = 1 # Check whether Union Type has a 'typedef' and the name is capital self.DeclarationDataTypeCheckUnionType = 1 - + ## Naming Conventions Checking self.NamingConventionCheckAll = 0 - + # Check whether only capital letters are used for #define declarations self.NamingConventionCheckDefineStatement = 1 # Check whether only capital letters are used for typedef declarations @@ -172,33 +174,33 @@ class Configuration(object): self.NamingConventionCheckFunctionName = 1 # Check whether NO use short variable name with single character self.NamingConventionCheckSingleCharacterVariable = 1 - + ## Doxygen Checking self.DoxygenCheckAll = 0 - + # Check whether the file headers are followed Doxygen special documentation blocks in section 2.3.5 self.DoxygenCheckFileHeader = 1 # Check whether the function headers are followed Doxygen special documentation blocks in section 2.3.5 self.DoxygenCheckFunctionHeader = 1 - # Check whether the first line of text in a comment block is a brief description of the element being documented. + # Check whether the first line of text in a comment block is a brief description of the element being documented. # The brief description must end with a period. self.DoxygenCheckCommentDescription = 1 # Check whether comment lines with '///< ... text ...' format, if it is used, it should be after the code section. self.DoxygenCheckCommentFormat = 1 # Check whether only Doxygen commands allowed to mark the code are @bug and @todo. self.DoxygenCheckCommand = 1 - + ## Meta-Data File Processing Checking self.MetaDataFileCheckAll = 0 - + # Check whether each file defined in meta-data exists self.MetaDataFileCheckPathName = 1 # Generate a list for all files defined in meta-data files self.MetaDataFileCheckGenerateFileList = 1 # The path of log file self.MetaDataFileCheckPathOfGenerateFileList = 'File.log' - # Check whether all Library Instances defined for a given module (or dependent library instance) match the module's type. - # Each Library Instance must specify the Supported Module Types in its INF file, + # Check whether all Library Instances defined for a given module (or dependent library instance) match the module's type. + # Each Library Instance must specify the Supported Module Types in its INF file, # and any module specifying the library instance must be one of the supported types. self.MetaDataFileCheckLibraryInstance = 1 # Check whether a Library Instance has been defined for all dependent library classes @@ -235,14 +237,17 @@ class Configuration(object): # The directory listed here will not be parsed, split with ',' self.SkipDirList = [] + # A list for binary file ext name + self.BinaryExtList = [] + self.ParseConfig() - + def ParseConfig(self): Filepath = os.path.normpath(self.Filename) if not os.path.isfile(Filepath): ErrorMsg = "Can't find configuration file '%s'" % Filepath EdkLogger.error("Ecc", EdkLogger.ECC_ERROR, ErrorMsg, File = Filepath) - + LineNo = 0 for Line in open(Filepath, 'r'): LineNo = LineNo + 1 @@ -258,8 +263,10 @@ class Configuration(object): continue if List[0] == 'SkipDirList': List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT) + if List[0] == 'BinaryExtList': + List[1] = GetSplitValueList(List[1], TAB_COMMA_SPLIT) self.__dict__[List[0]] = List[1] - + def ShowMe(self): print self.Filename for Key in self.__dict__.keys(): diff --git a/BaseTools/Source/Python/Ecc/Database.py b/BaseTools/Source/Python/Ecc/Database.py index 9520be4345..4b79cb708f 100644 --- a/BaseTools/Source/Python/Ecc/Database.py +++ b/BaseTools/Source/Python/Ecc/Database.py @@ -41,7 +41,7 @@ DATABASE_PATH = "Ecc.db" # This class defined the ECC databse # During the phase of initialization, the database will create all tables and # insert all records of table DataModel -# +# # @param object: Inherited from object class # @param DbPath: A string for the path of the ECC database # @@ -64,7 +64,7 @@ class Database(object): self.TblDec = None self.TblDsc = None self.TblFdf = None - + ## Initialize ECC database # # 1. Delete all old existing tables @@ -85,7 +85,7 @@ class Database(object): # to avoid non-ascii charater conversion error self.Conn.text_factory = str self.Cur = self.Conn.cursor() - + self.TblDataModel = TableDataModel(self.Cur) self.TblFile = TableFile(self.Cur) self.TblFunction = TableFunction(self.Cur) @@ -96,7 +96,7 @@ class Database(object): self.TblDec = TableDec(self.Cur) self.TblDsc = TableDsc(self.Cur) self.TblFdf = TableFdf(self.Cur) - + # # Create new tables # @@ -110,7 +110,7 @@ class Database(object): self.TblDec.Create() self.TblDsc.Create() self.TblFdf.Create() - + # # Init each table's ID # @@ -123,13 +123,13 @@ class Database(object): self.TblDec.InitID() self.TblDsc.InitID() self.TblFdf.InitID() - + # # Initialize table DataModel # if NewDatabase: self.TblDataModel.InitTable() - + EdkLogger.verbose("Initialize ECC database ... DONE!") ## Query a table @@ -138,7 +138,7 @@ class Database(object): # def QueryTable(self, Table): Table.Query() - + ## Close entire database # # Commit all first @@ -147,15 +147,15 @@ class Database(object): def Close(self): # # Commit to file - # + # self.Conn.commit() - + # # Close connection and cursor # self.Cur.close() self.Conn.close() - + ## Insert one file information # # Insert one file's information to the database @@ -171,43 +171,44 @@ class Database(object): # Insert a record for file # FileID = self.TblFile.Insert(File.Name, File.ExtName, File.Path, File.FullPath, Model = File.Model, TimeStamp = File.TimeStamp) - IdTable = TableIdentifier(self.Cur) - IdTable.Table = "Identifier%s" % FileID - IdTable.Create() - # - # Insert function of file - # - for Function in File.FunctionList: - FunctionID = self.TblFunction.Insert(Function.Header, Function.Modifier, Function.Name, Function.ReturnStatement, \ - Function.StartLine, Function.StartColumn, Function.EndLine, Function.EndColumn, \ - Function.BodyStartLine, Function.BodyStartColumn, FileID, \ - Function.FunNameStartLine, Function.FunNameStartColumn) + if File.Model == DataClass.MODEL_FILE_C or File.Model == DataClass.MODEL_FILE_H: + IdTable = TableIdentifier(self.Cur) + IdTable.Table = "Identifier%s" % FileID + IdTable.Create() + # + # Insert function of file + # + for Function in File.FunctionList: + FunctionID = self.TblFunction.Insert(Function.Header, Function.Modifier, Function.Name, Function.ReturnStatement, \ + Function.StartLine, Function.StartColumn, Function.EndLine, Function.EndColumn, \ + Function.BodyStartLine, Function.BodyStartColumn, FileID, \ + Function.FunNameStartLine, Function.FunNameStartColumn) + # + # Insert Identifier of function + # + for Identifier in Function.IdentifierList: + IdentifierID = IdTable.Insert(Identifier.Modifier, Identifier.Type, Identifier.Name, Identifier.Value, Identifier.Model, \ + FileID, FunctionID, Identifier.StartLine, Identifier.StartColumn, Identifier.EndLine, Identifier.EndColumn) + # + # Insert Pcd of function + # + for Pcd in Function.PcdList: + PcdID = self.TblPcd.Insert(Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.Token, Pcd.DatumType, Pcd.Model, \ + FileID, FunctionID, Pcd.StartLine, Pcd.StartColumn, Pcd.EndLine, Pcd.EndColumn) # - # Insert Identifier of function + # Insert Identifier of file # - for Identifier in Function.IdentifierList: + for Identifier in File.IdentifierList: IdentifierID = IdTable.Insert(Identifier.Modifier, Identifier.Type, Identifier.Name, Identifier.Value, Identifier.Model, \ - FileID, FunctionID, Identifier.StartLine, Identifier.StartColumn, Identifier.EndLine, Identifier.EndColumn) + FileID, -1, Identifier.StartLine, Identifier.StartColumn, Identifier.EndLine, Identifier.EndColumn) # - # Insert Pcd of function + # Insert Pcd of file # - for Pcd in Function.PcdList: + for Pcd in File.PcdList: PcdID = self.TblPcd.Insert(Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.Token, Pcd.DatumType, Pcd.Model, \ - FileID, FunctionID, Pcd.StartLine, Pcd.StartColumn, Pcd.EndLine, Pcd.EndColumn) - # - # Insert Identifier of file - # - for Identifier in File.IdentifierList: - IdentifierID = IdTable.Insert(Identifier.Modifier, Identifier.Type, Identifier.Name, Identifier.Value, Identifier.Model, \ - FileID, -1, Identifier.StartLine, Identifier.StartColumn, Identifier.EndLine, Identifier.EndColumn) - # - # Insert Pcd of file - # - for Pcd in File.PcdList: - PcdID = self.TblPcd.Insert(Pcd.CName, Pcd.TokenSpaceGuidCName, Pcd.Token, Pcd.DatumType, Pcd.Model, \ - FileID, -1, Pcd.StartLine, Pcd.StartColumn, Pcd.EndLine, Pcd.EndColumn) - + FileID, -1, Pcd.StartLine, Pcd.StartColumn, Pcd.EndLine, Pcd.EndColumn) + EdkLogger.verbose("Insert information from file %s ... DONE!" % File.FullPath) ## UpdateIdentifierBelongsToFunction @@ -217,7 +218,7 @@ class Database(object): # def UpdateIdentifierBelongsToFunction_disabled(self): EdkLogger.verbose("Update 'BelongsToFunction' for Identifiers started ...") - + SqlCommand = """select ID, BelongsToFile, StartLine, EndLine, Model from Identifier""" EdkLogger.debug(4, "SqlCommand: %s" %SqlCommand) self.Cur.execute(SqlCommand) @@ -233,7 +234,7 @@ class Database(object): # Check whether an identifier belongs to a function # EdkLogger.debug(4, "For common identifiers ... ") - SqlCommand = """select ID from Function + SqlCommand = """select ID from Function where StartLine < %s and EndLine > %s and BelongsToFile = %s""" % (StartLine, EndLine, BelongsToFile) EdkLogger.debug(4, "SqlCommand: %s" %SqlCommand) @@ -243,13 +244,13 @@ class Database(object): SqlCommand = """Update Identifier set BelongsToFunction = %s where ID = %s""" % (ID[0], IdentifierID) EdkLogger.debug(4, "SqlCommand: %s" %SqlCommand) self.Cur.execute(SqlCommand) - + # # Check whether the identifier is a function header # - EdkLogger.debug(4, "For function headers ... ") + EdkLogger.debug(4, "For function headers ... ") if Model == DataClass.MODEL_IDENTIFIER_COMMENT: - SqlCommand = """select ID from Function + SqlCommand = """select ID from Function where StartLine = %s + 1 and BelongsToFile = %s""" % (EndLine, BelongsToFile) EdkLogger.debug(4, "SqlCommand: %s" %SqlCommand) @@ -259,7 +260,7 @@ class Database(object): SqlCommand = """Update Identifier set BelongsToFunction = %s, Model = %s where ID = %s""" % (ID[0], DataClass.MODEL_IDENTIFIER_FUNCTION_HEADER, IdentifierID) EdkLogger.debug(4, "SqlCommand: %s" %SqlCommand) self.Cur.execute(SqlCommand) - + EdkLogger.verbose("Update 'BelongsToFunction' for Identifiers ... DONE") @@ -270,7 +271,7 @@ class Database(object): # def UpdateIdentifierBelongsToFunction(self): EdkLogger.verbose("Update 'BelongsToFunction' for Identifiers started ...") - + SqlCommand = """select ID, BelongsToFile, StartLine, EndLine from Function""" Records = self.TblFunction.Exec(SqlCommand) Data1 = [] @@ -308,7 +309,7 @@ class Database(object): # self.Cur.executemany(SqlCommand, Data2) # # EdkLogger.verbose("Update 'BelongsToFunction' for Identifiers ... DONE") - + ## # @@ -320,11 +321,11 @@ if __name__ == '__main__': #EdkLogger.SetLevel(EdkLogger.VERBOSE) EdkLogger.SetLevel(EdkLogger.DEBUG_0) EdkLogger.verbose("Start at " + time.strftime('%H:%M:%S', time.localtime())) - + Db = Database(DATABASE_PATH) Db.InitDatabase() Db.QueryTable(Db.TblDataModel) - + identifier1 = DataClass.IdentifierClass(-1, '', '', "i''1", 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 32, 43, 54, 43) identifier2 = DataClass.IdentifierClass(-1, '', '', 'i1', 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 15, 43, 20, 43) identifier3 = DataClass.IdentifierClass(-1, '', '', 'i1', 'aaa', DataClass.MODEL_IDENTIFIER_COMMENT, 1, -1, 55, 43, 58, 43) @@ -333,12 +334,12 @@ if __name__ == '__main__': file = DataClass.FileClass(-1, 'F1', 'c', 'C:\\', 'C:\\F1.exe', DataClass.MODEL_FILE_C, '2007-12-28', [fun1], [identifier1, identifier2, identifier3, identifier4], []) Db.InsertOneFile(file) Db.UpdateIdentifierBelongsToFunction() - + Db.QueryTable(Db.TblFile) Db.QueryTable(Db.TblFunction) Db.QueryTable(Db.TblPcd) Db.QueryTable(Db.TblIdentifier) - + Db.Close() EdkLogger.verbose("End at " + time.strftime('%H:%M:%S', time.localtime())) - + diff --git a/BaseTools/Source/Python/Ecc/Ecc.py b/BaseTools/Source/Python/Ecc/Ecc.py index 62b265bbaa..e9a1c2a890 100644 --- a/BaseTools/Source/Python/Ecc/Ecc.py +++ b/BaseTools/Source/Python/Ecc/Ecc.py @@ -106,6 +106,8 @@ class Ecc(object): self.BuildMetaDataFileDatabase() EccGlobalData.gIdentifierTableList = GetTableList((MODEL_FILE_C, MODEL_FILE_H), 'Identifier', EccGlobalData.gDb) + EccGlobalData.gCFileList = GetFileList(MODEL_FILE_C, EccGlobalData.gDb) + EccGlobalData.gHFileList = GetFileList(MODEL_FILE_H, EccGlobalData.gDb) ## BuildMetaDataFileDatabase # @@ -227,7 +229,7 @@ class Ecc(object): if Options.Workspace: os.environ["WORKSPACE"] = Options.Workspace - + # Check workspace envirnoment if "WORKSPACE" not in os.environ: EdkLogger.error("ECC", BuildToolError.ATTRIBUTE_NOT_AVAILABLE, "Environment variable not found", diff --git a/BaseTools/Source/Python/Ecc/EccGlobalData.py b/BaseTools/Source/Python/Ecc/EccGlobalData.py index 29e4aca0d0..5226e4a7d1 100644 --- a/BaseTools/Source/Python/Ecc/EccGlobalData.py +++ b/BaseTools/Source/Python/Ecc/EccGlobalData.py @@ -21,4 +21,6 @@ gTarget = '' gConfig = None gDb = None gIdentifierTableList = [] +gCFileList = [] +gHFileList = [] gException = None \ No newline at end of file diff --git a/BaseTools/Source/Python/Ecc/EccToolError.py b/BaseTools/Source/Python/Ecc/EccToolError.py index 985737f192..48810e466c 100644 --- a/BaseTools/Source/Python/Ecc/EccToolError.py +++ b/BaseTools/Source/Python/Ecc/EccToolError.py @@ -19,6 +19,7 @@ ERROR_GENERAL_CHECK_NO_ASM = 1004 ERROR_GENERAL_CHECK_NO_PROGMA = 1005 ERROR_GENERAL_CHECK_CARRIAGE_RETURN = 1006 ERROR_GENERAL_CHECK_FILE_EXISTENCE = 1007 +ERROR_GENERAL_CHECK_NON_ACSII = 1008 ERROR_SPACE_CHECK_ALL = 2000 @@ -105,6 +106,7 @@ gEccErrorMessage = { ERROR_GENERAL_CHECK_NO_PROGMA : """There should be no use of "#progma" in source file except "#pragma pack(#)\"""", ERROR_GENERAL_CHECK_CARRIAGE_RETURN : "There should be a carriage return at the end of the file", ERROR_GENERAL_CHECK_FILE_EXISTENCE : "File not found", + ERROR_GENERAL_CHECK_NON_ACSII : "File has invalid Non-ACSII char", ERROR_SPACE_CHECK_ALL : "", diff --git a/BaseTools/Source/Python/Ecc/MetaDataParser.py b/BaseTools/Source/Python/Ecc/MetaDataParser.py index 36ad6e492f..4dda2e5360 100644 --- a/BaseTools/Source/Python/Ecc/MetaDataParser.py +++ b/BaseTools/Source/Python/Ecc/MetaDataParser.py @@ -26,7 +26,7 @@ def GetIncludeListOfFile(WorkSpace, Filepath, Db): Filepath = os.path.normpath(Filepath) SqlCommand = """ select Value1, FullPath from Inf, File where Inf.Model = %s and Inf.BelongsToFile in( - select distinct B.BelongsToFile from File as A left join Inf as B + select distinct B.BelongsToFile from File as A left join Inf as B where A.ID = B.BelongsToFile and B.Model = %s and (A.Path || '%s' || B.Value1) = '%s') and Inf.BelongsToFile = File.ID""" \ % (MODEL_META_DATA_PACKAGE, MODEL_EFI_SOURCE_FILE, '\\', Filepath) @@ -36,7 +36,7 @@ def GetIncludeListOfFile(WorkSpace, Filepath, Db): InfFullPath = os.path.normpath(os.path.join(WorkSpace, Record[1])) (DecPath, DecName) = os.path.split(DecFullPath) (InfPath, InfName) = os.path.split(InfFullPath) - SqlCommand = """select Value1 from Dec where BelongsToFile = + SqlCommand = """select Value1 from Dec where BelongsToFile = (select ID from File where FullPath = '%s') and Model = %s""" \ % (DecFullPath, MODEL_EFI_INCLUDE) NewRecordSet = Db.TblDec.Exec(SqlCommand) @@ -46,9 +46,22 @@ def GetIncludeListOfFile(WorkSpace, Filepath, Db): IncludePath = os.path.normpath(os.path.join(DecPath, NewRecord[0])) if IncludePath not in IncludeList: IncludeList.append(IncludePath) - + return IncludeList +## Get the file list +# +# Search table file and find all specific type files +# +def GetFileList(FileModel, Db): + FileList = [] + SqlCommand = """select FullPath from File where Model = %s""" % str(FileModel) + RecordSet = Db.TblFile.Exec(SqlCommand) + for Record in RecordSet: + FileList.append(Record[0]) + + return FileList + ## Get the table list # # Search table file and find all small tables @@ -60,6 +73,6 @@ def GetTableList(FileModelList, Table, Db): for Record in RecordSet: TableName = Table + str(Record[0]) TableList.append(TableName) - + return TableList diff --git a/BaseTools/Source/Python/Ecc/c.py b/BaseTools/Source/Python/Ecc/c.py index 941392be0f..5a8c1d13e7 100644 --- a/BaseTools/Source/Python/Ecc/c.py +++ b/BaseTools/Source/Python/Ecc/c.py @@ -514,7 +514,9 @@ def CollectSourceCodeDataIntoDB(RootDir): dirnames.append(Dirname) for f in filenames: + collector = None FullName = os.path.normpath(os.path.join(dirpath, f)) + model = DataClass.MODEL_FILE_OTHERS if os.path.splitext(f)[1] in ('.h', '.c'): EdkLogger.info("Parsing " + FullName) model = f.endswith('c') and DataClass.MODEL_FILE_C or DataClass.MODEL_FILE_H @@ -526,12 +528,13 @@ def CollectSourceCodeDataIntoDB(RootDir): collector.CleanFileProfileBuffer() collector.ParseFileWithClearedPPDirective() # collector.PrintFragments() - BaseName = os.path.basename(f) - DirName = os.path.dirname(FullName) - Ext = os.path.splitext(f)[1].lstrip('.') - ModifiedTime = os.path.getmtime(FullName) - FileObj = DataClass.FileClass(-1, BaseName, Ext, DirName, FullName, model, ModifiedTime, GetFunctionList(), GetIdentifierList(), []) - FileObjList.append(FileObj) + BaseName = os.path.basename(f) + DirName = os.path.dirname(FullName) + Ext = os.path.splitext(f)[1].lstrip('.') + ModifiedTime = os.path.getmtime(FullName) + FileObj = DataClass.FileClass(-1, BaseName, Ext, DirName, FullName, model, ModifiedTime, GetFunctionList(), GetIdentifierList(), []) + FileObjList.append(FileObj) + if collector: collector.CleanFileProfileBuffer() if len(ParseErrorFileList) > 0: @@ -539,7 +542,8 @@ def CollectSourceCodeDataIntoDB(RootDir): Db = GetDB() for file in FileObjList: - Db.InsertOneFile(file) + if file.ExtName.upper() not in ['INF', 'DEC', 'DSC', 'FDF']: + Db.InsertOneFile(file) Db.UpdateIdentifierBelongsToFunction() @@ -552,7 +556,6 @@ def GetTableID(FullFileName, ErrorMsgList = None): from File where FullPath like '%s' """ % FullFileName - ResultSet = Db.TblFile.Exec(SqlStatement) FileID = -1 @@ -567,6 +570,8 @@ def GetTableID(FullFileName, ErrorMsgList = None): return FileID def GetIncludeFileList(FullFileName): + if os.path.splitext(FullFileName)[1].upper() not in ('.H'): + return [] IFList = IncludeFileListDict.get(FullFileName) if IFList != None: return IFList @@ -2301,21 +2306,32 @@ def CheckFileHeaderDoxygenComments(FullFileName): FileTable = 'Identifier' + str(FileID) SqlStatement = """ select Value, ID from %s - where Model = %d and StartLine = 1 and StartColumn = 0 + where Model = %d and (StartLine = 1 or StartLine = 7 or StartLine = 8) and StartColumn = 0 """ % (FileTable, DataClass.MODEL_IDENTIFIER_COMMENT) ResultSet = Db.TblFile.Exec(SqlStatement) if len(ResultSet) == 0: PrintErrorMsg(ERROR_HEADER_CHECK_FILE, 'No Comment appear at the very beginning of file.', 'File', FileID) return ErrorMsgList + IsFoundError1 = True + IsFoundError2 = True + IsFoundError3 = True for Result in ResultSet: - CommentStr = Result[0] - if not CommentStr.startswith('/** @file'): - PrintErrorMsg(ERROR_DOXYGEN_CHECK_FILE_HEADER, 'File header comment should begin with ""/** @file""', FileTable, Result[1]) - if not CommentStr.endswith('**/'): - PrintErrorMsg(ERROR_HEADER_CHECK_FILE, 'File header comment should end with **/', FileTable, Result[1]) - if CommentStr.find('.') == -1: - PrintErrorMsg(ERROR_DOXYGEN_CHECK_COMMENT_DESCRIPTION, 'Comment description should end with period \'.\'', FileTable, Result[1]) + CommentStr = Result[0].strip() + ID = Result[1] + if CommentStr.startswith('/** @file'): + IsFoundError1 = False + if CommentStr.endswith('**/'): + IsFoundError2 = False + if CommentStr.find('.') != -1: + IsFoundError3 = False + + if IsFoundError1: + PrintErrorMsg(ERROR_DOXYGEN_CHECK_FILE_HEADER, 'File header comment should begin with ""/** @file""', FileTable, ID) + if IsFoundError2: + PrintErrorMsg(ERROR_HEADER_CHECK_FILE, 'File header comment should end with ""**/""', FileTable, ID) + if IsFoundError3: + PrintErrorMsg(ERROR_DOXYGEN_CHECK_COMMENT_DESCRIPTION, 'Comment description should end with period "".""', FileTable, ID) def CheckFuncHeaderDoxygenComments(FullFileName): ErrorMsgList = [] diff --git a/BaseTools/Source/Python/Ecc/config.ini b/BaseTools/Source/Python/Ecc/config.ini index 973bc68b38..357c52ced0 100644 --- a/BaseTools/Source/Python/Ecc/config.ini +++ b/BaseTools/Source/Python/Ecc/config.ini @@ -21,7 +21,7 @@ Version = 0.1 # Identify to if check all items # 1 - Check all items and ignore all other detailed items # 0 - Not check all items, the tool will go through all other detailed items to decide to check or not -# +# CheckAll = 0 # @@ -68,6 +68,8 @@ GeneralCheckNoProgma = 1 GeneralCheckCarriageReturn = 1 # Check whether the file exists GeneralCheckFileExistence = 1 +# Check whether file has non ACSII char +GeneralCheckNonAcsii = 1 # # Space Checking @@ -81,7 +83,7 @@ PredicateExpressionCheckAll = 0 # Check whether Boolean values, variable type BOOLEAN not use explicit comparisons to TRUE or FALSE PredicateExpressionCheckBooleanValue = 1 -# Check whether Non-Boolean comparisons use a compare operator (==, !=, >, < >=, <=). +# Check whether Non-Boolean comparisons use a compare operator (==, !=, >, < >=, <=). PredicateExpressionCheckNonBooleanOperator = 1 # Check whether a comparison of any pointer to zero must be done via the NULL type PredicateExpressionCheckComparisonNullType = 1 @@ -189,7 +191,7 @@ DoxygenCheckAll = 0 DoxygenCheckFileHeader = 1 # Check whether the function headers are followed Doxygen special documentation blocks in section 2.3.5 DoxygenCheckFunctionHeader = 1 -# Check whether the first line of text in a comment block is a brief description of the element being documented. +# Check whether the first line of text in a comment block is a brief description of the element being documented. # The brief description must end with a period. DoxygenCheckCommentDescription = 1 # Check whether comment lines with '///< ... text ...' format, if it is used, it should be after the code section. @@ -208,8 +210,8 @@ MetaDataFileCheckPathName = 1 MetaDataFileCheckGenerateFileList = 1 # The path of log file MetaDataFileCheckPathOfGenerateFileList = File.log -# Check whether all Library Instances defined for a given module (or dependent library instance) match the module's type. -# Each Library Instance must specify the Supported Module Types in its INF file, +# Check whether all Library Instances defined for a given module (or dependent library instance) match the module's type. +# Each Library Instance must specify the Supported Module Types in its INF file, # and any module specifying the library instance must be one of the supported types. MetaDataFileCheckLibraryInstance = 1 # Check whether a Library Instance has been defined for all dependent library classes @@ -242,3 +244,6 @@ MetaDataFileCheckModuleFileGuidDuplication = 1 # GotoStatementCheckAll = 0 # SpellingCheckAll = 0 # + +# A list for binary file ext name +BinaryExtList = EXE, EFI, FV, ROM, DLL, COM, BMP, GIF, PYD, CMP, BIN, JPG, UNI, RAW, COM2, LIB, DEPEX, SYS, DB diff --git a/BaseTools/Source/Python/GNUmakefile b/BaseTools/Source/Python/GNUmakefile index e489c10753..9fe46f6edf 100644 --- a/BaseTools/Source/Python/GNUmakefile +++ b/BaseTools/Source/Python/GNUmakefile @@ -1,5 +1,5 @@ ## @file -# Windows makefile for Python tools build. +# Linux makefile for Python tools build. # # Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
# This program and the accompanying materials diff --git a/BaseTools/Source/Python/GenFds/FdfParser.py b/BaseTools/Source/Python/GenFds/FdfParser.py index 83b58bcd46..d11af6c134 100644 --- a/BaseTools/Source/Python/GenFds/FdfParser.py +++ b/BaseTools/Source/Python/GenFds/FdfParser.py @@ -751,7 +751,7 @@ class FdfParser: raise Warning("Value %s is not a number", self.FileName, Line) for Profile in AllMacroList: - if Profile.FileName == FileLineTuple[0] and Profile.MacroName == Name and Profile.DefinedAtLine <= FileLineTuple[1]: + if Profile.MacroName == Name and Profile.DefinedAtLine <= FileLineTuple[1]: if Op == None: if Value == 'Bool' and Profile.MacroValue == None or Profile.MacroValue.upper() == 'FALSE': return False diff --git a/BaseTools/Source/Python/GenFds/FfsInfStatement.py b/BaseTools/Source/Python/GenFds/FfsInfStatement.py index d95af34dfc..47521e08c5 100644 --- a/BaseTools/Source/Python/GenFds/FfsInfStatement.py +++ b/BaseTools/Source/Python/GenFds/FfsInfStatement.py @@ -80,7 +80,7 @@ class FfsInfStatement(FfsInfStatementClassObject): # PathClassObj = PathClass(self.InfFileName, GenFdsGlobalVariable.WorkSpaceDir) - ErrorCode, ErrorInfo = PathClassObj.Validate() + ErrorCode, ErrorInfo = PathClassObj.Validate(".inf") if ErrorCode != 0: EdkLogger.error("GenFds", ErrorCode, ExtraData=ErrorInfo) @@ -343,7 +343,7 @@ class FfsInfStatement(FfsInfStatementClassObject): if len(PlatformArchList) == 0: self.InDsc = False PathClassObj = PathClass(self.InfFileName, GenFdsGlobalVariable.WorkSpaceDir) - ErrorCode, ErrorInfo = PathClassObj.Validate() + ErrorCode, ErrorInfo = PathClassObj.Validate(".inf") if ErrorCode != 0: EdkLogger.error("GenFds", ErrorCode, ExtraData=ErrorInfo) if len(ArchList) == 1: diff --git a/BaseTools/Source/Python/GenFds/GenFds.py b/BaseTools/Source/Python/GenFds/GenFds.py index cb82c717dd..48fe4983f8 100644 --- a/BaseTools/Source/Python/GenFds/GenFds.py +++ b/BaseTools/Source/Python/GenFds/GenFds.py @@ -172,6 +172,7 @@ def main(): """call Workspace build create database""" os.environ["WORKSPACE"] = Workspace + FdfParser.InputMacroDict["WORKSPACE"] = Workspace BuildWorkSpace = WorkspaceDatabase(':memory:', FdfParser.InputMacroDict) BuildWorkSpace.InitDatabase() diff --git a/BaseTools/Source/Python/Makefile b/BaseTools/Source/Python/Makefile index 26aacf947f..b3efe538d9 100644 --- a/BaseTools/Source/Python/Makefile +++ b/BaseTools/Source/Python/Makefile @@ -22,7 +22,7 @@ MODULES=encodings.cp437,encodings.gbk,encodings.utf_16,encodings.utf_8,encodings BIN_DIR=$(EDK_TOOLS_PATH)\Bin\Win32 -APPLICATIONS=$(BIN_DIR)\build.exe $(BIN_DIR)\GenFds.exe $(BIN_DIR)\Trim.exe $(BIN_DIR)\MigrationMsa2Inf.exe $(BIN_DIR)\Fpd2Dsc.exe $(BIN_DIR)\TargetTool.exe $(BIN_DIR)\spd2dec.exe $(BIN_DIR)\GenDepex.exe $(BIN_DIR)\GenPatchPcdTable.exe $(BIN_DIR)\PatchPcdValue.exe +APPLICATIONS=$(BIN_DIR)\build.exe $(BIN_DIR)\GenFds.exe $(BIN_DIR)\Trim.exe $(BIN_DIR)\MigrationMsa2Inf.exe $(BIN_DIR)\Fpd2Dsc.exe $(BIN_DIR)\TargetTool.exe $(BIN_DIR)\spd2dec.exe $(BIN_DIR)\GenDepex.exe $(BIN_DIR)\GenPatchPcdTable.exe $(BIN_DIR)\PatchPcdValue.exe $(BIN_DIR)\BPDG.exe COMMON_PYTHON=$(BASE_TOOLS_PATH)\Source\Python\Common\BuildToolError.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\Database.py \ @@ -46,6 +46,7 @@ COMMON_PYTHON=$(BASE_TOOLS_PATH)\Source\Python\Common\BuildToolError.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\String.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\TargetTxtClassObject.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\ToolDefClassObject.py \ + $(BASE_TOOLS_PATH)\Source\Python\Common\VpdInfoFile.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\XmlParser.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\XmlRoutines.py \ $(BASE_TOOLS_PATH)\Source\Python\Common\__init__.py \ @@ -62,7 +63,7 @@ COMMON_PYTHON=$(BASE_TOOLS_PATH)\Source\Python\Common\BuildToolError.py \ $(BASE_TOOLS_PATH)\Source\Python\Autogen\GenMake.py \ $(BASE_TOOLS_PATH)\Source\Python\Autogen\StrGather.py \ $(BASE_TOOLS_PATH)\Source\Python\Autogen\UniClassObject.py \ - $(BASE_TOOLS_PATH)\Source\Python\Autogen\__init__.py + $(BASE_TOOLS_PATH)\Source\Python\Autogen\__init__.py all: SetPythonPath $(APPLICATIONS) @@ -100,6 +101,9 @@ $(BIN_DIR)\GenPatchPcdTable.exe: $(BASE_TOOLS_PATH)\Source\Python\GenPatchPcdTab $(BIN_DIR)\PatchPcdValue.exe: $(BASE_TOOLS_PATH)\Source\Python\PatchPcdValue\PatchPcdValue.py $(COMMON_PYTHON) @pushd . & @cd PatchPcdValue & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) PatchPcdValue.py & @popd +$(BIN_DIR)\BPDG.exe: $(BASE_TOOLS_PATH)\Source\Python\BPDG\BPDG.py $(COMMON_PYTHON) + @pushd . & @cd BPDG & @$(FREEZE) --include-modules=$(MODULES) --install-dir=$(BIN_DIR) BPDG.py & @popd + clean: cleanall: @del /f /q $(BIN_DIR)\*.pyd $(BIN_DIR)\*.dll diff --git a/BaseTools/Source/Python/Workspace/BuildClassObject.py b/BaseTools/Source/Python/Workspace/BuildClassObject.py index f0fef4dda3..7d709d3f0b 100644 --- a/BaseTools/Source/Python/Workspace/BuildClassObject.py +++ b/BaseTools/Source/Python/Workspace/BuildClassObject.py @@ -1,7 +1,7 @@ ## @file # This file is used to define each component of the build database # -# Copyright (c) 2007 - 2008, Intel Corporation. All rights reserved.
+# Copyright (c) 2007 - 2010, Intel Corporation. All rights reserved.
# This program and the accompanying materials # are licensed and made available under the terms and conditions of the BSD License # which accompanies this distribution. The full text of the license may be found at @@ -31,6 +31,7 @@ from Common.BuildToolError import * # @param MaxDatumSize: Input value for MaxDatumSize of Pcd, default is None # @param SkuInfoList: Input value for SkuInfoList of Pcd, default is {} # @param IsOverrided: Input value for IsOverrided of Pcd, default is False +# @param GuidValue: Input value for TokenSpaceGuidValue of Pcd, default is None # # @var TokenCName: To store value for TokenCName # @var TokenSpaceGuidCName: To store value for TokenSpaceGuidCName @@ -43,7 +44,7 @@ from Common.BuildToolError import * # @var Phase: To store value for Phase, default is "DXE" # class PcdClassObject(object): - def __init__(self, Name = None, Guid = None, Type = None, DatumType = None, Value = None, Token = None, MaxDatumSize = None, SkuInfoList = {}, GuidValue = None): + def __init__(self, Name = None, Guid = None, Type = None, DatumType = None, Value = None, Token = None, MaxDatumSize = None, SkuInfoList = {}, IsOverrided = False, GuidValue = None): self.TokenCName = Name self.TokenSpaceGuidCName = Guid self.TokenSpaceGuidValue = GuidValue @@ -55,7 +56,8 @@ class PcdClassObject(object): self.SkuInfoList = SkuInfoList self.Phase = "DXE" self.Pending = False - + self.IsOverrided = IsOverrided + ## Convert the class to a string # # Convert each member of the class to string @@ -73,7 +75,7 @@ class PcdClassObject(object): 'MaxDatumSize=' + str(self.MaxDatumSize) + ', ' for Item in self.SkuInfoList.values(): Rtn = Rtn + 'SkuId=' + Item.SkuId + ', ' + 'SkuIdName=' + Item.SkuIdName - Rtn = Rtn + str(self.IsOverrided) + Rtn = Rtn + ', IsOverrided=' + str(self.IsOverrided) return Rtn diff --git a/BaseTools/Source/Python/Workspace/MetaFileParser.py b/BaseTools/Source/Python/Workspace/MetaFileParser.py index 7a6152c8fb..fb66e41fb5 100644 --- a/BaseTools/Source/Python/Workspace/MetaFileParser.py +++ b/BaseTools/Source/Python/Workspace/MetaFileParser.py @@ -82,6 +82,7 @@ class MetaFileParser(object): self.MetaFile = FilePath self._FileDir = os.path.dirname(self.MetaFile) self._Macros = copy.copy(Macros) + self._Macros["WORKSPACE"] = os.environ["WORKSPACE"] # for recursive parsing self._Owner = Owner @@ -490,7 +491,12 @@ class InfParser(MetaFileParser): ## [FixedPcd], [FeaturePcd], [PatchPcd], [Pcd] and [PcdEx] sections parser def _PcdParser(self): TokenList = GetSplitValueList(self._CurrentLine, TAB_VALUE_SPLIT, 1) - self._ValueList[0:1] = GetSplitValueList(TokenList[0], TAB_SPLIT) + ValueList = GetSplitValueList(TokenList[0], TAB_SPLIT) + if len(ValueList) != 2: + EdkLogger.error('Parser', FORMAT_INVALID, "Illegal token space GUID and PCD name format", + ExtraData=self._CurrentLine + " (.)", + File=self.MetaFile, Line=self._LineIndex+1) + self._ValueList[0:1] = ValueList if len(TokenList) > 1: self._ValueList[2] = TokenList[1] if self._ValueList[0] == '' or self._ValueList[1] == '': @@ -564,6 +570,7 @@ class DscParser(MetaFileParser): # sections which allow "!include" directive _IncludeAllowedSection = [ + TAB_COMMON_DEFINES.upper(), TAB_LIBRARIES.upper(), TAB_LIBRARY_CLASSES.upper(), TAB_SKUIDS.upper(), @@ -648,7 +655,25 @@ class DscParser(MetaFileParser): continue # file private macros elif Line.upper().startswith('DEFINE '): - self._MacroParser() + (Name, Value) = self._MacroParser() + # Make the defined macro in DSC [Defines] section also + # available for FDF file. + if self._SectionName == TAB_COMMON_DEFINES.upper(): + self._LastItem = self._Store( + MODEL_META_DATA_GLOBAL_DEFINE, + Name, + Value, + '', + 'COMMON', + 'COMMON', + self._Owner, + self._From, + self._LineIndex+1, + -1, + self._LineIndex+1, + -1, + self._Enabled + ) continue elif Line.upper().startswith('EDK_GLOBAL '): (Name, Value) = self._MacroParser() @@ -715,6 +740,22 @@ class DscParser(MetaFileParser): if TokenList[0] in ['FLASH_DEFINITION', 'OUTPUT_DIRECTORY']: TokenList[1] = NormPath(TokenList[1], self._Macros) self._ValueList[0:len(TokenList)] = TokenList + # Treat elements in the [defines] section as global macros for FDF file. + self._LastItem = self._Store( + MODEL_META_DATA_GLOBAL_DEFINE, + TokenList[0], + TokenList[1], + '', + 'COMMON', + 'COMMON', + self._Owner, + self._From, + self._LineIndex+1, + -1, + self._LineIndex+1, + -1, + self._Enabled + ) ## parser def _SubsectionHeaderParser(self): @@ -762,7 +803,7 @@ class DscParser(MetaFileParser): EdkLogger.error("Parser", FORMAT_INVALID, File=self.MetaFile, Line=self._LineIndex+1, ExtraData="'!include' is not allowed under section [%s]" % self._SectionName) # the included file must be relative to the parsing file - IncludedFile = os.path.join(self._FileDir, self._ValueList[1]) + IncludedFile = os.path.join(self._FileDir, NormPath(self._ValueList[1], self._Macros)) Parser = DscParser(IncludedFile, self._FileType, self._Table, self._Macros, From=self._LastItem) # set the parser status with current status Parser._SectionName = self._SectionName @@ -781,6 +822,7 @@ class DscParser(MetaFileParser): self._SectionType = Parser._SectionType self._Scope = Parser._Scope self._Enabled = Parser._Enabled + self._Macros.update(Parser._Macros) else: if DirectiveName in ["!IF", "!IFDEF", "!IFNDEF"]: # evaluate the expression @@ -965,6 +1007,7 @@ class DecParser(MetaFileParser): # def __init__(self, FilePath, FileType, Table, Macro=None): MetaFileParser.__init__(self, FilePath, FileType, Table, Macro, -1) + self._Comments = [] ## Parser starter def Start(self): @@ -975,27 +1018,34 @@ class DecParser(MetaFileParser): EdkLogger.error("Parser", FILE_READ_FAILURE, ExtraData=self.MetaFile) for Index in range(0, len(self._Content)): - Line = CleanString(self._Content[Index]) + Line, Comment = CleanString2(self._Content[Index]) + self._CurrentLine = Line + self._LineIndex = Index + + # save comment for later use + if Comment: + self._Comments.append((Comment, self._LineIndex+1)) # skip empty line if Line == '': continue - self._CurrentLine = Line - self._LineIndex = Index # section header if Line[0] == TAB_SECTION_START and Line[-1] == TAB_SECTION_END: self._SectionHeaderParser() + self._Comments = [] continue elif Line.startswith('DEFINE '): self._MacroParser() continue elif len(self._SectionType) == 0: + self._Comments = [] continue # section content self._ValueList = ['','',''] self._SectionParser[self._SectionType[0]](self) if self._ValueList == None: + self._Comments = [] continue # @@ -1017,6 +1067,22 @@ class DecParser(MetaFileParser): -1, 0 ) + for Comment, LineNo in self._Comments: + self._Store( + MODEL_META_DATA_COMMENT, + Comment, + self._ValueList[0], + self._ValueList[1], + Arch, + ModuleType, + self._LastItem, + LineNo, + -1, + LineNo, + -1, + 0 + ) + self._Comments = [] self._Done() ## Section header parser diff --git a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py index 3aabd545d5..dad6ecd49a 100644 --- a/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py +++ b/BaseTools/Source/Python/Workspace/WorkspaceDatabase.py @@ -18,6 +18,7 @@ import sqlite3 import os import os.path import pickle +import uuid import Common.EdkLogger as EdkLogger import Common.GlobalData as GlobalData @@ -99,6 +100,10 @@ class DscBuildData(PlatformBuildClassObject): RecordList = self._RawData[MODEL_META_DATA_DEFINE, self._Arch] for Record in RecordList: GlobalData.gEdkGlobal[Record[0]] = Record[1] + + RecordList = self._RawData[MODEL_META_DATA_GLOBAL_DEFINE, self._Arch] + for Record in RecordList: + GlobalData.gGlobalDefines[Record[0]] = Record[1] ## XXX[key] = value def __setitem__(self, key, value): @@ -135,6 +140,8 @@ class DscBuildData(PlatformBuildClassObject): self._Pcds = None self._BuildOptions = None self._LoadFixAddress = None + self._VpdToolGuid = None + self._VpdFileName = None ## Get architecture def _GetArch(self): @@ -188,6 +195,18 @@ class DscBuildData(PlatformBuildClassObject): self._SkuName = Record[1] elif Name == TAB_FIX_LOAD_TOP_MEMORY_ADDRESS: self._LoadFixAddress = Record[1] + elif Name == TAB_DSC_DEFINES_VPD_TOOL_GUID: + # + # try to convert GUID to a real UUID value to see whether the GUID is format + # for VPD_TOOL_GUID is correct. + # + try: + uuid.UUID(Record[1]) + except: + EdkLogger.error("build", FORMAT_INVALID, "Invalid GUID format for VPD_TOOL_GUID", File=self.MetaFile) + self._VpdToolGuid = Record[1] + elif Name == TAB_DSC_DEFINES_VPD_FILENAME: + self._VpdFileName = Record[1] # set _Header to non-None in order to avoid database re-querying self._Header = 'DUMMY' @@ -267,6 +286,8 @@ class DscBuildData(PlatformBuildClassObject): def _SetSkuName(self, Value): if Value in self.SkuIds: self._SkuName = Value + # Needs to re-retrieve the PCD information + self._Pcds = None def _GetFdfFile(self): if self._FlashDefinition == None: @@ -321,6 +342,24 @@ class DscBuildData(PlatformBuildClassObject): self._LoadFixAddress = '' return self._LoadFixAddress + ## Retrieve the GUID string for VPD tool + def _GetVpdToolGuid(self): + if self._VpdToolGuid == None: + if self._Header == None: + self._GetHeaderInfo() + if self._VpdToolGuid == None: + self._VpdToolGuid = '' + return self._VpdToolGuid + + ## Retrieve the VPD file Name, this is optional in DSC file + def _GetVpdFileName(self): + if self._VpdFileName == None: + if self._Header == None: + self._GetHeaderInfo() + if self._VpdFileName == None: + self._VpdFileName = '' + return self._VpdFileName + ## Retrieve [SkuIds] section information def _GetSkuIds(self): if self._SkuIds == None: @@ -418,6 +457,7 @@ class DscBuildData(PlatformBuildClassObject): '', MaxDatumSize, {}, + False, None ) Module.Pcds[PcdCName, TokenSpaceGuid] = Pcd @@ -576,6 +616,7 @@ class DscBuildData(PlatformBuildClassObject): '', MaxDatumSize, {}, + False, None ) return Pcds @@ -619,6 +660,7 @@ class DscBuildData(PlatformBuildClassObject): '', MaxDatumSize, {self.SkuName : SkuInfo}, + False, None ) return Pcds @@ -661,6 +703,7 @@ class DscBuildData(PlatformBuildClassObject): '', '', {self.SkuName : SkuInfo}, + False, None ) return Pcds @@ -686,15 +729,21 @@ class DscBuildData(PlatformBuildClassObject): PcdDict[Arch, SkuName, PcdCName, TokenSpaceGuid] = Setting # Remove redundant PCD candidates, per the ARCH and SKU for PcdCName, TokenSpaceGuid in PcdSet: - ValueList = ['', ''] + ValueList = ['', '', ''] Setting = PcdDict[self._Arch, self.SkuName, PcdCName, TokenSpaceGuid] if Setting == None: continue TokenList = Setting.split(TAB_VALUE_SPLIT) ValueList[0:len(TokenList)] = TokenList - VpdOffset, MaxDatumSize = ValueList - - SkuInfo = SkuInfoClass(self.SkuName, self.SkuIds[self.SkuName], '', '', '', '', VpdOffset) + # + # For the VOID* type, it can have optional data of MaxDatumSize and InitialValue + # For the Integer & Boolean type, the optional data can only be InitialValue. + # At this point, we put all the data into the PcdClssObject for we don't know the PCD's datumtype + # until the DEC parser has been called. + # + VpdOffset, MaxDatumSize, InitialValue = ValueList + + SkuInfo = SkuInfoClass(self.SkuName, self.SkuIds[self.SkuName], '', '', '', '', VpdOffset, InitialValue) Pcds[PcdCName, TokenSpaceGuid] = PcdClassObject( PcdCName, TokenSpaceGuid, @@ -704,6 +753,7 @@ class DscBuildData(PlatformBuildClassObject): '', MaxDatumSize, {self.SkuName : SkuInfo}, + False, None ) return Pcds @@ -733,7 +783,7 @@ class DscBuildData(PlatformBuildClassObject): # def AddPcd(self, Name, Guid, Value): if (Name, Guid) not in self.Pcds: - self.Pcds[Name, Guid] = PcdClassObject(Name, Guid, '', '', '', '', '', {}, None) + self.Pcds[Name, Guid] = PcdClassObject(Name, Guid, '', '', '', '', '', {}, False, None) self.Pcds[Name, Guid].DefaultValue = Value Arch = property(_GetArch, _SetArch) @@ -752,7 +802,8 @@ class DscBuildData(PlatformBuildClassObject): BsBaseAddress = property(_GetBsBaseAddress) RtBaseAddress = property(_GetRtBaseAddress) LoadFixAddress = property(_GetLoadFixAddress) - + VpdToolGuid = property(_GetVpdToolGuid) + VpdFileName = property(_GetVpdFileName) SkuIds = property(_GetSkuIds) Modules = property(_GetModules) LibraryInstances = property(_GetLibraryInstances) @@ -760,7 +811,7 @@ class DscBuildData(PlatformBuildClassObject): Pcds = property(_GetPcds) BuildOptions = property(_GetBuildOptions) -## Platform build information from DSC file +## Platform build information from DEC file # # This class is used to retrieve information stored in database and convert them # into PackageBuildClassObject form for easier use for AutoGen. @@ -789,6 +840,7 @@ class DecBuildData(PackageBuildClassObject): TAB_DEC_DEFINES_PACKAGE_NAME : "_PackageName", TAB_DEC_DEFINES_PACKAGE_GUID : "_Guid", TAB_DEC_DEFINES_PACKAGE_VERSION : "_Version", + TAB_DEC_DEFINES_PKG_UNI_FILE : "_PkgUniFile", } @@ -830,6 +882,7 @@ class DecBuildData(PackageBuildClassObject): self._PackageName = None self._Guid = None self._Version = None + self._PkgUniFile = None self._Protocols = None self._Ppis = None self._Guids = None @@ -1063,6 +1116,7 @@ class DecBuildData(PackageBuildClassObject): TokenNumber, '', {}, + False, None ) return Pcds @@ -1914,6 +1968,7 @@ class InfBuildData(ModuleBuildClassObject): '', '', {}, + False, self.Guids[TokenSpaceGuid] ) @@ -1927,7 +1982,7 @@ class InfBuildData(ModuleBuildClassObject): # "FixedAtBuild", "PatchableInModule", "FeatureFlag", "Dynamic", "DynamicEx" # PcdType = self._PCD_TYPE_STRING_[Type] - if Type in [MODEL_PCD_DYNAMIC, MODEL_PCD_DYNAMIC_EX]: + if Type == MODEL_PCD_DYNAMIC: Pcd.Pending = True for T in ["FixedAtBuild", "PatchableInModule", "FeatureFlag", "Dynamic", "DynamicEx"]: if (PcdCName, TokenSpaceGuid, T) in Package.Pcds: @@ -1994,7 +2049,7 @@ class InfBuildData(ModuleBuildClassObject): ## Database # -# This class defined the build databse for all modules, packages and platform. +# This class defined the build database for all modules, packages and platform. # It will call corresponding parser for the given file if it cannot find it in # the database. # diff --git a/BaseTools/Source/Python/build/BuildReport.py b/BaseTools/Source/Python/build/BuildReport.py index af03e1f982..c5793ad057 100644 --- a/BaseTools/Source/Python/build/BuildReport.py +++ b/BaseTools/Source/Python/build/BuildReport.py @@ -23,6 +23,7 @@ import textwrap import traceback import sys import time +import struct from datetime import datetime from StringIO import StringIO from Common import EdkLogger @@ -101,6 +102,9 @@ gDriverTypeMap = { 'SMM_DRIVER' : '0xA (SMM)', # Extension of module type to support PI 1.1 SMM drivers } +## The look up table of the supported opcode in the dependency expression binaries +gOpCodeList = ["BEFORE", "AFTER", "PUSH", "AND", "OR", "NOT", "TRUE", "FALSE", "END", "SOR"] + ## # Writes a string to the file object. # @@ -162,6 +166,60 @@ def FindIncludeFiles(Source, IncludePathList, IncludeFiles): IncludeFiles[FullFileName.lower().replace("\\", "/")] = FullFileName break +## +# Parse binary dependency expression section +# +# This utility class parses the dependency expression section and translate the readable +# GUID name and value. +# +class DepexParser(object): + ## + # Constructor function for class DepexParser + # + # This constructor function collect GUID values so that the readable + # GUID name can be translated. + # + # @param self The object pointer + # @param Wa Workspace context information + # + def __init__(self, Wa): + self._GuidDb = {} + for Package in Wa.BuildDatabase.WorkspaceDb.PackageList: + for Protocol in Package.Protocols: + GuidValue = GuidStructureStringToGuidString(Package.Protocols[Protocol]) + self._GuidDb[GuidValue.upper()] = Protocol + for Ppi in Package.Ppis: + GuidValue = GuidStructureStringToGuidString(Package.Ppis[Ppi]) + self._GuidDb[GuidValue.upper()] = Ppi + for Guid in Package.Guids: + GuidValue = GuidStructureStringToGuidString(Package.Guids[Guid]) + self._GuidDb[GuidValue.upper()] = Guid + + ## + # Parse the binary dependency expression files. + # + # This function parses the binary dependency expression file and translate it + # to the instruction list. + # + # @param self The object pointer + # @param DepexFileName The file name of binary dependency expression file. + # + def ParseDepexFile(self, DepexFileName): + DepexFile = open(DepexFileName, "rb") + DepexStatement = [] + OpCode = DepexFile.read(1) + while OpCode: + Statement = gOpCodeList[struct.unpack("B", OpCode)[0]] + if Statement in ["BEFORE", "AFTER", "PUSH"]: + GuidValue = "%08X-%04X-%04X-%02X%02X-%02X%02X%02X%02X%02X%02X" % \ + struct.unpack("LHHBBBBBBBB", DepexFile.read(16)) + GuidString = self._GuidDb.get(GuidValue, GuidValue) + Statement = "%s %s" % (Statement, GuidString) + DepexStatement.append(Statement) + OpCode = DepexFile.read(1) + + return DepexStatement + ## # Reports library information # @@ -254,6 +312,7 @@ class DepexReport(object): # def __init__(self, M): self.Depex = "" + self._DepexFileName = os.path.join(M.BuildDir, "OUTPUT", M.Module.BaseName + ".depex") ModuleType = M.ModuleType if not ModuleType: ModuleType = gComponentType2ModuleType.get(M.ComponentType, "") @@ -289,14 +348,25 @@ class DepexReport(object): # # This function generates report for the module dependency expression. # - # @param self The object pointer - # @param File The file object for report + # @param self The object pointer + # @param File The file object for report + # @param GlobalDepexParser The platform global Dependency expression parser object # - def GenerateReport(self, File): + def GenerateReport(self, File, GlobalDepexParser): if not self.Depex: return - + FileWrite(File, gSubSectionStart) + if os.path.isfile(self._DepexFileName): + try: + DepexStatements = GlobalDepexParser.ParseDepexFile(self._DepexFileName) + FileWrite(File, "Final Dependency Expression (DEPEX) Instructions") + for DepexStatement in DepexStatements: + FileWrite(File, " %s" % DepexStatement) + FileWrite(File, gSubSectionSep) + except: + EdkLogger.warn(None, "Dependency expression file is corrupted", self._DepexFileName) + FileWrite(File, "Dependency Expression (DEPEX) from %s" % self.Source) if self.Source == "INF": @@ -453,12 +523,14 @@ class ModuleReport(object): # This function generates report for separate module expression # in a platform build. # - # @param self The object pointer - # @param File The file object for report - # @param GlobalPcdReport The platform global PCD class object - # @param ReportType The kind of report items in the final report file + # @param self The object pointer + # @param File The file object for report + # @param GlobalPcdReport The platform global PCD report object + # @param GlobalPredictionReport The platform global Prediction report object + # @param GlobalDepexParser The platform global Dependency expression parser object + # @param ReportType The kind of report items in the final report file # - def GenerateReport(self, File, GlobalPcdReport, GlobalPredictionReport, ReportType): + def GenerateReport(self, File, GlobalPcdReport, GlobalPredictionReport, GlobalDepexParser, ReportType): FileWrite(File, gSectionStart) FwReportFileName = os.path.join(self._BuildDir, "DEBUG", self.ModuleName + ".txt") @@ -505,7 +577,7 @@ class ModuleReport(object): self.LibraryReport.GenerateReport(File) if "DEPEX" in ReportType: - self.DepexReport.GenerateReport(File) + self.DepexReport.GenerateReport(File, GlobalDepexParser) if "BUILD_FLAGS" in ReportType: self.BuildFlagsReport.GenerateReport(File) @@ -1325,6 +1397,10 @@ class PlatformReport(object): if "FIXED_ADDRESS" in ReportType or "EXECUTION_ORDER" in ReportType: self.PredictionReport = PredictionReport(Wa) + self.DepexParser = None + if "DEPEX" in ReportType: + self.DepexParser = DepexParser(Wa) + self.ModuleReportList = [] if MaList != None: self._IsModuleBuild = True @@ -1371,7 +1447,7 @@ class PlatformReport(object): FdReportListItem.GenerateReport(File) for ModuleReportItem in self.ModuleReportList: - ModuleReportItem.GenerateReport(File, self.PcdReport, self.PredictionReport, ReportType) + ModuleReportItem.GenerateReport(File, self.PcdReport, self.PredictionReport, self.DepexParser, ReportType) if not self._IsModuleBuild: if "EXECUTION_ORDER" in ReportType: diff --git a/BaseTools/Source/Python/build/build.py b/BaseTools/Source/Python/build/build.py index 545ffa39aa..af9d3d5f5a 100644 --- a/BaseTools/Source/Python/build/build.py +++ b/BaseTools/Source/Python/build/build.py @@ -23,6 +23,7 @@ import glob import time import platform import traceback +import encodings.ascii from struct import * from threading import * @@ -735,7 +736,7 @@ class Build(): self.LoadFixAddress = 0 self.UniFlag = UniFlag - # print dot charater during doing some time-consuming work + # print dot character during doing some time-consuming work self.Progress = Utils.Progressor() # parse target.txt, tools_def.txt, and platform file @@ -1267,9 +1268,9 @@ class Build(): if len (SmmModuleList) > 0: MapBuffer.write('SMM_CODE_PAGE_NUMBER = 0x%x\n' % (SmmSize/0x1000)) - PeiBaseAddr = TopMemoryAddress - RtSize - BtSize + PeiBaseAddr = TopMemoryAddress - RtSize - BtSize BtBaseAddr = TopMemoryAddress - RtSize - RtBaseAddr = TopMemoryAddress - ReservedRuntimeMemorySize + RtBaseAddr = TopMemoryAddress - ReservedRuntimeMemorySize self._RebaseModule (MapBuffer, PeiBaseAddr, PeiModuleList, TopMemoryAddress == 0) self._RebaseModule (MapBuffer, BtBaseAddr, BtModuleList, TopMemoryAddress == 0) -- 2.39.2